Saturday, February 13, 2016

3:49 PM
1
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.
  1. Baudrate :9600
  2. Data Bits :7
  3. Parity: Even
  4. 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 Combobox
     cmbcom.Text = myPort(i)   'Set cmbPort text to the first COM port detected
Next

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.Click
On Error GoTo error_code
If cmb_unit_plc.Text <> "" Then
If dataopen = True Then
      SerialPort1.ParityReplace = &H3B ‘defaul
SerialPort1.PortName = com        ‘mengambil nama pada item Cmb_combobox                   
SerialPort1.BaudRate = CInt(baudrate
            If parity = "None" Then
                    SerialPort1.Parity = IO.Ports.Parity.None
                ElseIf parity = "Even" Then
                   SerialPort1.Parity = IO.Ports.Parity.Even
                ElseIf parity = "Odd" Then
                    SerialPort1.Parity = IO.Ports.Parity.Odd
                End If
                If stopbit = 1 Then
                    SerialPort1.StopBits = IO.Ports.StopBits.One
                ElseIf stopbit = 1.5 Then
                    SerialPort1.StopBits = IO.Ports.StopBits.OnePointFive
                ElseIf stopbit = 2 Then
                    SerialPort1.StopBits = IO.Ports.StopBits.Two
               End If
                SerialPort1.RtsEnable = False
                SerialPort1.Handshake = IO.Ports.Handshake.None
                SerialPort1.DataBits = databit        
                SerialPort1.ReceivedBytesThreshold = 1
                SerialPort1.NewLine = vbCr                      
                SerialPort1.ReadTimeout = 10000
                SerialPort1.Open()
               comOpen = SerialPort1.IsOpen
             Else
                MsgBox("set your serial property")
            End If
        Else
            MsgBox("set your plc unit")
       End If
Exit Sub
error_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 serial
end 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.DataReceived
        If comOpen Then
            Try
                byteEnd = SerialPort1.NewLine.ToCharArray
                 ' get number off bytes in buffer
                Bytenumber = SerialPort1.BytesToRead
                ' read entire string until .Newline
                readBuffer = SerialPort1.ReadLine()
                 'data to UI thread
                Me.Invoke(New EventHandler(AddressOf DoUpdate))
            Catch ex As Exception
                MsgBox("read " & ex.Message)
            End Try
        End If
    End Sub
 Public Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim header As String
        txtinputdata.Text = readBuffer ‘digunakan untuk menampilkan data serial yang masuk
   End Sub
  1. 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 plc
panjang_data = Len(data_olah) ‘digunakan untuk mengetahui panjang data string pada variable data _olah
        a = 0
        For I = 1 To panjang_data
            parsing = Mid(data_olah, I, 1)
            B = Asc(parsing)
            a = Asc(parsing) Xor a
        Next I
        Fcs = Hex(a)
        If Len(Fcs) = 1 Then
            Fcs = "0" + Fcs
        End If
 protokol_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.

Newer Post
Previous
This is the last post.

1 comments:

  1. ▷ Online casino | €100 + 50 FS Welcome Bonus + 25 Free
    Play online casino games for free, no registration required. Learn how you can 온라인 카지노 먹튀 win with the No Deposit Bonus and discover bonuses and more.

    ReplyDelete