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