Salam otomasi.
Gambar 1. Cara kerja sistem
Kesempatan kali ini saya akan berusaha menjelaskan bagaimana cara membuat interface PLC omron dengan menggunakan komunikasi serial. Plc yang saya gunakan adalah CJ1M ada beberapa setting serial property yang harus anda lakukan agar interface anda dapat berkomunikasi dengan baik.
- Baudrate :9600
- Data Bits :7
- Parity: Even
- stop bit: 2
oke... kali ini interface yang saya gunakan adalah Visual Studio 2013 dengan menggunakan Bahasa pemrograman Visual Basic. jika di tanya kenapa saya memilih visual basic? ya saya jawab aja "suka-suka saya" hehehe, kalau menggunakan visual basic itu bahasanya lebih muda kemudian passing data antar form juga lebih mudah. dan manggil class / sub program sangat mudah. kalau dibandingkan dengan bahasa pemrograman lain.
sekarang saya akan menjelaskan proses pembuatan dari program interface
Gambar 2. Main Form Interface SCADA
1. pembacaan serial port dan property
untuk mengetahui com yang digunakan secara langsung dapat menggunakan instruksi
Gambar 2. Main Form property Interface SCADA
myPort = IO.Ports.SerialPort.GetPortNames() ‘variable myport digunakan untuk menampung Com Serial yang terbaca
menudian tambahkan instruksi pada combo box sesuai gambar di atas dengan instruksi
cmbbaudrate.Items.Add(9600)
dan untuk menampung data com yang terbuka dengan menggunakan instruksi
For i = 0 To UBound(myPort)cmbcom.Items.Add(myPort(i)) ‘menambahkan nama Com serial Pada item Comboboxcmbcom.Text = myPort(i) 'Set cmbPort text to the first COM port detectedNext
2. kemudin pada sub button_connect kita harus mengatur bebera parameter untuk komunikasi serial
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickOn Error GoTo error_codeIf cmb_unit_plc.Text <> "" ThenIf dataopen = True ThenSerialPort1.ParityReplace = &H3B ‘defaulSerialPort1.PortName = com ‘mengambil nama pada item Cmb_comboboxSerialPort1.BaudRate = CInt(baudrateIf parity = "None" ThenSerialPort1.Parity = IO.Ports.Parity.NoneElseIf parity = "Even" ThenSerialPort1.Parity = IO.Ports.Parity.EvenElseIf parity = "Odd" ThenSerialPort1.Parity = IO.Ports.Parity.OddEnd IfIf stopbit = 1 ThenSerialPort1.StopBits = IO.Ports.StopBits.OneElseIf stopbit = 1.5 ThenSerialPort1.StopBits = IO.Ports.StopBits.OnePointFiveElseIf stopbit = 2 ThenSerialPort1.StopBits = IO.Ports.StopBits.TwoEnd IfSerialPort1.RtsEnable = FalseSerialPort1.Handshake = IO.Ports.Handshake.NoneSerialPort1.DataBits = databitSerialPort1.ReceivedBytesThreshold = 1SerialPort1.NewLine = vbCrSerialPort1.ReadTimeout = 10000SerialPort1.Open()comOpen = SerialPort1.IsOpenElseMsgBox("set your serial property")End IfElseMsgBox("set your plc unit")End IfExit Suberror_code:MsgBox("Serial error")End sub
3. Kemudian untuk mengirim data serial dengan menggunakan instruksi
If SerialPort1.IsOpen = True Then SerialPort1.WriteLine(data_kirim) ‘instruksi digunakan untuk mengirim data serialend if
4. Kemudian untuk menerima data serial dengan menggunakan instruksi
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles SerialPort1.DataReceivedIf comOpen ThenTrybyteEnd = SerialPort1.NewLine.ToCharArray' get number off bytes in bufferBytenumber = SerialPort1.BytesToRead' read entire string until .NewlinereadBuffer = SerialPort1.ReadLine()'data to UI threadMe.Invoke(New EventHandler(AddressOf DoUpdate))Catch ex As ExceptionMsgBox("read " & ex.Message)End TryEnd IfEnd SubPublic Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs)Dim header As Stringtxtinputdata.Text = readBuffer ‘digunakan untuk menampilkan data serial yang masukEnd Sub
- Oke selanjutnya saya akan membahas hal terpenting pula dalam proses komunikai data antara PLC dengan Visual yaitu pengkodean FCS
- Bagaimna cara mendapatkan kode FCS plc secara otomatis terhadap string yang akan dikirim???, oke.. langsung saja ini caranya:
data_olah = @02RW00010001 ‘data olah digunakan untuk menampung data yang akan dikirim ke plcpanjang_data = Len(data_olah) ‘digunakan untuk mengetahui panjang data string pada variable data _olaha = 0For I = 1 To panjang_dataparsing = Mid(data_olah, I, 1)B = Asc(parsing)a = Asc(parsing) Xor aNext IFcs = Hex(a)If Len(Fcs) = 1 ThenFcs = "0" + FcsEnd Ifprotokol_kirim = data_olah + Fcs + "*" ‘protokol_kirim adalah variable yang berfungsi penggabungan data yang akan dikirim ke PLC
suatu misal data yang akan dikirim adalah @02RW00010001 maka dengan rumus FCS diatas akan didapatkan nilai FCS=47 jadi pada variable protokol kirim adalah
data_olah + Fcs + "*" ==> @02RW0001000147*
Untuk contoh detail aplikasinya disa anda download disini , sekalian dengan penjelasan instruksi dasar C-Mode Command untuk Omron CJ1M.
Semoga Bermanfaat.
Sangat membantu mas... terimakasih banyak
ReplyDeleteiya sama-sama semoga bermanfaat
ReplyDeleteTerimakasih Mas. Sangat membantu
ReplyDeleteiya sama-sama semoga bermanfaat
Deleteterimakasih pak, sangat membantu, o iya pak kalau boleh sharing pak gimana cara membaca IR dengan penampilan data yang realtime,
ReplyDeletemaaf kalau bahasanya kurang teknis, masih tahap belajar pak, terimakasih :D
mau di tampilkan dimana mas? PLC mikrokontroler ?
Deletesaya menggunakan omron cp1e, ditampilkan di visual basic, masih pinggun untuk penggolahan respon untuk dijadikan hmi mas khumaidi agus, terimakasih mas :D , salam kenal mas :)
Deletecoba dilihat data sheetnya mas, disiu komunikasinya pakai c-command atau apa
DeleteTerima Kasih mas
ReplyDeletesama-sama mas.. semoga bermanfaat
Deleteterimakasih mass buat ilmunya yg bermanfaat banget,,
ReplyDeleteSama sama selamat belajar dan mencoba :)
Deletemaaf itu deklarasi FCS y saya kurang mengerti pak maklum saya newby pake vb, hehehehe, bisa tolong di perjelas deklarasi variabl nya pak,,?
Deletedim data_olah as String
Deletedim panjang_data as integer
dim parsing as string
dim a as integer
dim i as integer
dim b as integer
dim fcs as string
dim protokol as string
itu mas deklarasi variablenya
makasih banyak pak infonya sangat membantu.
Deletemaaf gan nanya lagi,, ini data_kirim asalnya dari mana ya ko ga ada di fcs gan,,?
DeleteIf SerialPort1.IsOpen = True Then SerialPort1.WriteLine(data_kirim)
end if
data_kirim = protokol_kirim
Deleteitu belum saya sertakan mas di tutorial ini
menarik, bisa nih dipakai buat praktek otomasi
ReplyDeleteini salah satu materi yang saya berikan di mata kuliah SCADA dan Otomasi mas, jadi saya kira sangat sesuai
Deletewebsite rapih gan dan artikelnya berkualitas, kunjungi website kami ada berbagai artikel pengobatan
ReplyDeleteEndokarditis