Gambar 1
Perhatikan rangkaian gambar 2 dibawah ini, apabila SW 1 ditekan maka led 1 juga akan menyala.bersamaan dengan itu mikrocontroler mengirimkan data perintah ke PLC megisikan nilai "1" pada HR1 (holding relay 1), holding relay pada PLC berfungsi sebagai memori penyimpan, yang apabila PLC dimatikan (power suplay Mati) maka data yang ada di memory HR tidak akan berubah tetap seperti terahir nilai yang ada. atau bisa dikatakan HR adalah memory relay PLC seperti pada penyimpanan EEPROM.
Gambar 2
Listring Program BASCOM untuk micro sebagai berikut atau dalam .BAS dan .HEX download disini
'-----------------------------------------------------------------------------------------
'name : writeHR.bas
'copyright : (c) 2011, BELAJARPLCPLUS
'purpose : Komunikasi PLC dan Microcontrol
'micro : Mega16
'-----------------------------------------------------------------------------------------
'$sim
$regfile = "m16def.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequency
$baud = 9600 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 2 , Databits = 7 , Clockpol = 0
Config Portb = Input
Config Portc = Output
Set Portb.0
Set Portb.1
Dim R As Byte
Dim Length As Byte
Dim I As Integer
Dim K As String * 1
Dim Txt As String * 20
Mulai:
Txt = "00SC03"
Gosub Send
Do
Debounce Pinb.0 , 0 , Set_plc , Sub ' Deteksi Sw 1
Debounce Pinb.1 , 0 , Reset_plc , Sub ' Deteksi SW 2
Loop
Set_plc:
Set Portc.0 'nyalakan led 1
Reset Portc.1 'matikan led 2
Txt = "00WH00010001"
Gosub Send
Return
Reset_plc:
Set Portc.1 'nyalakan led 2
Reset Portc.0 'matikan led 1
Txt = "00WH00010002"
Gosub Send
Return
Send: 'kirim perintah
Length = Len(txt)
R = Asc( "@")
For I = 1 To Length
K = Mid(txt , I , 1)
R = R Xor Asc(k)
Next
Print "@" ; Txt ; Hex(r) ; "*" ; Chr(13)
Return
End
'name : writeHR.bas
'copyright : (c) 2011, BELAJARPLCPLUS
'purpose : Komunikasi PLC dan Microcontrol
'micro : Mega16
'-----------------------------------------------------------------------------------------
'$sim
$regfile = "m16def.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequency
$baud = 9600 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 2 , Databits = 7 , Clockpol = 0
Config Portb = Input
Config Portc = Output
Set Portb.0
Set Portb.1
Dim R As Byte
Dim Length As Byte
Dim I As Integer
Dim K As String * 1
Dim Txt As String * 20
Mulai:
Txt = "00SC03"
Gosub Send
Do
Debounce Pinb.0 , 0 , Set_plc , Sub ' Deteksi Sw 1
Debounce Pinb.1 , 0 , Reset_plc , Sub ' Deteksi SW 2
Loop
Set_plc:
Set Portc.0 'nyalakan led 1
Reset Portc.1 'matikan led 2
Txt = "00WH00010001"
Gosub Send
Return
Reset_plc:
Set Portc.1 'nyalakan led 2
Reset Portc.0 'matikan led 1
Txt = "00WH00010002"
Gosub Send
Return
Send: 'kirim perintah
Length = Len(txt)
R = Asc( "@")
For I = 1 To Length
K = Mid(txt , I , 1)
R = R Xor Asc(k)
Next
Print "@" ; Txt ; Hex(r) ; "*" ; Chr(13)
Return
End
Hasil pengiriman data dari micro ke PLC perhatikan pada gambar 3 dibawah ini, apabila kita mengirimkan data HR1=1 maka pada program PLC diolah pada perintah " =(300)" (compare) yaitu apabila HR1=1 maka Output 1.00 akan menyala, begitu juga apabila SW2 pada microcontrol kita tekan, maka data yang dikirim ke PLC adalah nilai HR1=2 maka output 1.01 pada PLC akan ganti yang menyala. program plc dapat di download dini
Gambar 3
Selamat mencoba semoga berhasil.
Comments
Post a Comment