Banyak mungkin dari teman-teman otomasi yang kesulitan untuk dapat melakukan komunikasi antara PLC dengan interface yang akan di buat. Dan sebelum serial komunikasi ini dapat digunakan terlebih dahulu kita harus melakukan setting pada properti serial, program akan diletakkan pada even form load. seperti pada program dibawah ini.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try SerialPort1.ParityReplace = &H3B SerialPort1.PortName = "COM12" SerialPort1.BaudRate = 9600 SerialPort1.Parity = IO.Ports.Parity.Even SerialPort1.StopBits = IO.Ports.StopBits.Two SerialPort1.RtsEnable = False SerialPort1.Handshake = IO.Ports.Handshake.None SerialPort1.DataBits = 7 SerialPort1.ReceivedBytesThreshold = 1 SerialPort1.NewLine = vbCr SerialPort1.ReadTimeout = 10000 Catch ex As Exception MessageBox.Show(ex.ToString()) End Try End Sub
Dim data_akan_kirim As String Dim panjang_data_dikirim As Integer Dim nilai_penjumlahan_xor As Integer Dim loop_awal As Integer Dim pilah_data_kirim As Char Dim fcs As String Try data_akan_kirim = tb_dataSend.Text panjang_data_dikirim = Len(data_akan_kirim) For loop_awal = 1 To panjang_data_dikirim pilah_data_kirim = Mid(data_akan_kirim, loop_awal, 1) nilai_penjumlahan_xor = Asc(pilah_data_kirim) Xor nilai_penjumlahan_xor Next fcs = Hex(nilai_penjumlahan_xor) If Len(fcs) = 1 Then fcs = "0" + fcs End If data_kirim = "@"+ data_akan_kirim + fcs + "*" + Environment.NewLine Label4.Text = data_kirim SerialPort1.Write(data_kirim) Catch ex As Exception End Try
Dan bagaimana cara menampilkan data respon dari PLC?, berikut adalah program untuk menerima data serial PLC dan jangan lupa untuk menggunakan even dari serial komunikasi yaitu "Datareceived" dan programnya seperti ini:
Private Sub SerialPort1_DataReceived(sender As Object, e As Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim readBuffer As String = String.Empty Private Bytenumber As Integer Private ByteToRead As Integer Private byteEnd(2) As Char Try byteEnd = SerialPort1.NewLine.ToCharArray Bytenumber = SerialPort1.BytesToRead Data_masuk = SerialPort1.ReadLine() Me.Invoke(New EventHandler(AddressOf Doupdate)) Catch ex As Exception End Try End Sub Public Sub Doupdate(ByVal sender As Object, ByVal e As System.EventArgs) tx_inputPlc.Text = Data_masuk End Sub Sekian sedikit penjelasan dari saya semoga bermanfaat. Agus Khumaidi
0 comments:
Post a Comment