Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Membuat Auxiliary (Kontak-Bantu) Atau Variabel Kontak Pada FORTHUNER46

Jika Anda pernah menggunakan ZelioSoft atau software pemrograman ladder yang lain, maka Anda pasti mengenal istilah auxiliary atau variabel kontak atau yang biasa disebut oleh praktisi dengan nama kontak-bantu.

Kontak-bantu atau auxiliary biasa dimiliki oleh sebuah kontaktor dalam bentuk kontak dengan tipe NO (Normally Open) atau NC (Normally Close). Kontak-bantu juga biasa dibuat menggunakan relay tambahan yang fungsinya sebagai memori penyimpan nilai logika kontak. Contoh penggunaan kontak-bantu bisa dilihat pada gambar ladder berikut ini.

Rangkaian pada gambar di atas adalah rangkaian ON/OFF Satu Tombol yang menggunakan bantuan kontak-bantu. Variabel M1 dan M2 adalah kontak-bantu dalam bentuk variabel memori. I1 adalah kontak input (riil) dan Q1 adalah kontak output (riil). Tulisan selengkapnya bisa Anda baca di sini:

Versi Lain On/Off Satu Tombol Pada Zelio Smart-Relay

Pada eksperimen ini, saya akan memberikan contoh tentang bagaimana kita bisa membuat kontak-bantu menggunakan bahasa Forth pada board FORTHUNER46. Dan saya akan mencoba mengimplementasikan ladder on/off satu tombol seperti gambar di atas pada FORTHUNER46. Tentunya menggunakan bahasa pemrograman Forth, karena board FORTHUNER46 adalah board ATmega8 yang telah ditanami sistem operasi Forth (Avise).

Pada eksperimen ini saya menggunakan board FORTHUNER46, sebuah project-board mini dengan 2 buah TOMBOL dan 2 buah LED. TOMBOL terhubung ke pin PB0 dan PB1 dengan rangkaian aktfi-rendah (0=ditekan, 1=tidak ditekan) dan LED terhubung ke pin PB2 dan PB3 dengan rangkaian aktif-tinggi (1=on, 0=off).

Sebelum masuk ke bagian implementasi variabel kontak, berikut saya berikan dulu beberapa definisi untuk input TOMBOL dan output LED.

   : SETUP B0 B1 OH OH B2 B3 OL OL RET   
   : /I1 B0 RIO RET
   : I1 /I1 0= IF REPEAT /I1 UNTIL 1 ELSE 0 ENDIF RET 
   : /I2 B1 RIO RET
   : I2 /I2 0= IF REPEAT /I2 UNTIL 1 ELSE 0 ENDIF RET 
   : Q1 IF B2 OH ELSE B2 OL ENDIF RET
   : &Q1 B2 RIO RET
   : &/Q1 &Q1 0= RET

SETUP berfungsi menginisialisasi pin PB0 dan  PB1 berlogika 1, dan pin PB2 dan PB3 berlogika 0.

/I1 berfungsi membaca kondisi masukan PB0 (TOMBOL). Fungsi ini mengembalikan logika 1 jika tombol tidak ditekan dan mengembalikan nilai 1 jika tombol ditekan.

I1 berfungsi mendeteksi apakah tombol ditekan, dan jika ternyata ditekan, maka fungsi akan menunggu sampai tombol dilepas.

Q1 berfungsi untuk mengeset/mereset output (LED). Jika fungsi ini menerima parameter 1 (true), maka LED pada PB2 akan menyala dan sebaliknya.

&Q1 berfungsi untuk membaca status output Q1.

&/Q1 berfungsi untuk membaca kebalikan dari status output Q1 (NOT Q1).

 

Definisi Variabel Pada Forth

Untuk mendefinisikan variabel (penyimpan nilai pada memori) pada FORTHUNER46 digunakan perintah VAR, contohnya adalah sebagai berikut:

   VAR NILAI
   VAR VM1

Untuk menulis atau memberikan nilai pada variabel digunakan perintah WR, contohnya adalah sebagai berikut:

   100 NILAI WR
   1 VM1 WR
   0 VM1 WR

Fungsi WR menerima 2 parameter yakni nilai dan alamat (variabel). Jadi 100 NILAI WR akan memasukkan 100 pada variabel NILAI, sehingga selanjutnya NILAI = 100.

Selanjutnya kita buat fungsi-fungsi untuk mengimplementasikan program ladder di atas.

Pertama kita definisikan VAR untuk M1 dan M2. Saya beri nama variabelnya VM1 dan VM2. Dan selanjutnya kita definisikan fungsi-fungsi manipulatornya untuk keperluan baca dan tulis. Berikut adalah kode programnya:

   VAR VM1
   : M1 VM1 WR RET
   : SM1 IF 1 M1 ENDIF RET
   : RM1 IF 0 M1 ENDIF RET
   : &M1 VM1 RD RET
   : &/M1 &M1 0= RET

   VAR VM2
   : M2 VM2 WR RET
   : SM2 IF 1 M2 ENDIF RET
   : RM2 IF 0 M2 ENDIF RET
   : &M2 VM2 RD RET
   : &/M2 &M2 0= RET

M1 berfungsi untuk menulis nilai yang diberikan pada parameter masukan ke dalam variable VM1. Karena nilai logika hanya bernilai 0 atau 1, maka fungsi ini juga mengharap nilai masukan 0 atau 1 saja.

SM1 berfungsi untuk memberikan nilai 1 (true) pada VM1. Fungsi ini memanggil fungsi M1 dengan masukan 1.

RM1 adalah kebalikan dari SM1. RM1 berfungsi memberikan nilai 0 (false) pada VM1. Fungsi ini memanggil fungsi M1 dengan masukan 0.

&M1 berfungsi untuk membaca nilai variabel VM1 dan meletakkan nilai tersebut pada stack teratas. Fungsi ini menggunakan fungsi RD untuk membaca nilai VM1.

&/M1 berfungsi untuk membaca nilai variabel VM1 dan menegasi (membalik logika) nilai hasil pembacaannya. Jadi bisa dituliskan sebagai: &/M1 = NOT &M1.

Penjelasan untuk VM1 berlaku juga untuk variabel VM2.

 

Ladderisasi (Ladder Wannabe)

Ladderisasi adalah usaha untuk membuat penulisan kode program pada FORTHUNER46 bisa seperti pemrograman ladder. Tentunya tidak bisa persis seperti ladder pada PLC. Oleh karenanya saya istilahkan sebagai Ladder Wannabe. 😀

Untuk mewujudkannya, saya definisikan beberapa fungsi yang bersifat kosmetika saja, tidak memiliki fungsi apapun. Namun tidak semuanya bersifat kosmetika, ada juga yang memiliki fungsi tertentu. Berikut adalah fungsi-fungsinya:

   : --+-- DUP RET       \ persimpangan untuk OR
   : --- RET             \ kosmetik
   : ---+ RET            \ kosmetik
   : +---------->        \ kosmetik
   : | RET               \ kosmetik
   : ----------> RET     \ kosmetik

Nah, sekarang kita siap membuat program ladder ala-ala untuk mengimplementasikan program ladder seperti pada Zelio Smart-Relay (gambar di atas).

Perhatikan program utama berikut ini:

   : MAIN
     BEGIN SETUP
     REPEAT
        I1 --+-- &/M1 AND ----------> M2
             |
             +----------> M1

        &M2 --- &/Q1 AND ---+
                            |
        &/M2 --- &Q1 AND ---+ OR ----------> Q1

      KEY? UNTIL DROP
   RET

 

Bagaimana? Lumayan mirip kan?

Miripnya sudah lumayan dapet, sekarang waktunya pengujian, apakah kode program versi Ladder Wannabe ini berfungsi sebagaimana mestinya. Nah, simak video pengujiannya berikut ini:

https://www.facebook.com/telinks/videos/1560259494040381/

Alhamdulillah, dari hasil pengujian dapat dilihat bahwa program ladder wannabe ala FORTHUNER46 bekerja dengan baik.

Contoh program lain penggunaan variabel juga dapat Anda simak pada screenshot berikut ini:

 

Info Harga & Pemesanan

Board FORTHUNER46 dapat dipesan melalui WA: 081231784018. Harga board FORTHUNER46 adalah 150rb. Gratis pelatihan selama 1 jam untuk Up & Running untuk pembelian board FORTHUNER46.

Selamat belajar dan selamat berkarya.

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>