Modul Scada
Modul Scada
Create by :
Muhammad Hidayat ST.,MT.
Bayu Ramadhan
KONSENTRASI MEKATRONIK
PROGRAM STUDI TEKNIK PRODUKSI DAN PROSES
MANUFAKTUR
2
PENGANTAR
SCADA (kependekan dari Supervisory Control And Data Acquisition) adalah sistem
kendali industri berbasiskomputer yang dipakai untuk pengontrolan suatu proses, seperti:
proses industri: manufaktur, pabrik, produksi, generator tenaga listrik.
proses infrastruktur: penjernihan air minum dan distribusinya, pengolahan limbah,
pipa gas dan minyak, distribusi tenaga listrik, sistem komunikasi yang kompleks,
sistem peringatan dini dan sirine
proses fasilitas: gedung, bandara, pelabuhan, stasiun ruang angkasa.
Beberapa contoh lain dari sistem SCADA ini banyak dijumpai di lapangan produksi
minyak dan gas (Upstream),Jaringan Listrik Tegangan Tinggi dan Tegangan Menengah
(Power Transmission and Distribution) dan beberapa aplikasi yang dipakai untuk memonitor
dan mengontrol areal produksi yang cukup luas.
Suatu sistem SCADA biasanya terdiri dari:
antarmuka manusia mesin (Human-Machine Interface)
unit terminal jarak jauh yang menghubungkan beberapa sensor pengukuran dalam
proses-proses di atas
sistem pengawasan berbasis komputer untuk pengumpul data
infrastruktur komunikasi yang menghuhungkan unit terminal jarak jauh dengan sistem
pengawasan, dan
PLC atau Programmable Logic Controller
Tools untuk sebuah sistem SCADA harus terdiri dari hardware dan software.
A. SCADA Hardware
Sebuah sistem SCADA tediri dari beberapa buah RTU (Remote Terminal Unit)
yang digunakan sebagai tempat pengumpulan data dan pengiriman data kembali ke
master station via sistem komunikasi.
3
Hardware pada SCADA biasanya terdiri dari:
B. SCADA Software
Perangkat lunak yang digunakan oleh SCADA dibagi menjadi dua tipe yaitu
proprietary dan terbuka. Perusahaan mengembangkan perangkat lunak proprietary
untuk berkomunikasi dengan perangkat kerasnya. Masalah utama dengan sistem ini
adalah kepercayaan berlebihan terhadap penyedia sistem.
Pembelajaran SCADA yang akan kita pelajari adalah sistem perangkat lunak
terbuka, dimana kita bisa menggunakan hardware manapun yang kita inginkan untuk
dapat membuat sebuah sistem SCADA.
1. User Interface
2. Tampilan grafis
3. Alarm
4. Trend
5. Interface RTU (dan PLC)
6. Akses ke data
7. Database
8. Jaringan
9. Redundansi toleransi kesalahan (apabila tidak menggunakan TCP/IP)
4
HOW TO COMMUNICATE
Hal yang paling penting dalam SCADA adalah networking. Bagaimana hardware dan
software dapat saling berkomunikasi dan terintegrasi. Sebelum membuat aplikasi SCADA hal
yang harus sangat diperhatikan adalah komunikasi dari sistem SCADA itu sendiri.
Modbus Protocol
Modbus adalah protokol komuniksi serial yang dipublikasikan oleh Modicon pada
tahun 1979 untuk dipublikasikan ke dalam Programmable Logic Controller (PLC). Modbus
sudah menjadi standar protokol yang umum digunakan untuk berkomunikasi dengan
peralatan elektronik industri. Beberapa alasan mengapa protokol ini banyak digunakan, antara
lain :
Modbus TCP/IP di dalam aplikasinya sudah mengambl alih error checking, ini
merupakan sifat dari TCP/IP yang dibentuk dalam blok yang ungu seperti terlihat pada
figure1. Dengan kata lain aplikasi Modbus TCP/IP jauh lebih mudah.
5
Untuk mengaplikasikan Modbus TCP/IP di dalam jaringan yang berbeda beda (RS-
485, RS-232) dibutuhkan gateway sehingga arsitektur jaringan bisa terlihat seperti pada
figure2.
Setiap Modbus memiliki frame. Figure 3 menunjukkan frame untuk Modbus (Modbus
RTU), frame pada setiap Modbus dapat disebut ADU (Application Data Unit).
Sedangkan untuk Frame Modbus TCP/IP ada pada figure 4, dimana pada aplikasi kita
sudah tidak memerlukan error checking, sehingga kita hanya berkonsentrasi kepada Function
Code dan data.
6
Figure 4 Frame Modbus TCP/IP
Jenis Modbus
1. Modbus RTU merupakan varian Modbus yang ringkas dan digunakan pada
komunikasi serial. Format RTU dilengkapi dengan Cyclic Redundancy Error (CRC)
untuk memastikan kebenaran data. Modbus RTU merupakan implementasi protokol
Modbus yang paling umum digunakan.
2. Modus ASCII digunakan pada komunikasi serial dengan memanfaatkan karakter
ASCII. Format ASCII menggunakan mekanisme Longtudinal Redundancy Check
(LRC). Setiap frame data pada Modbus ASCII diawali dengan titik dua (:) dan
ditutup dengan (CR/LF).
3. Modbus TCP/IP merupakan varian Modbus yang digunakan pada jaringan ethernet.
Format Modbus TCP/IP menggunakan MBAP Header yang akan dibahas pada
halaman selanjutnya.
Modbus TCP/IP
Sistem komunikasi dengan Modbus TCP/IP terdiri dari beberapa tipe device yang
berbeda : Device Modbus TCP/IP Client dan Server terhubung dengan jaringan Ethernet.
Device Interkoneksi seperti Bridge, Router, atau gateway untuk interkoneksi antara
jaringan TCP/IP dan sub-jaringan jalur serial yang memungkinkan koneksi dari jalur
serial Modbus Client and Server.
7
Figure 5 adalah arsitektur dan komunikasi Modbus TCP/I
Sementara pada Figure 6, yang membedakan Modbus TCP/IP dengan Modbus RTU
adalah pada frame-nya. Tidak ada lagi error check, yang sudah diatasi oleh TCP/IP. MBAP
(Modbus Application Protocol) Header terdiri dari 7 bytes :
Frame pengiriman data dengan Modbus TCP/IP adalah seperti pada Figure 5. Modul
Praktikum SCADAmembantu mahasiswa untuk dapat mengetahui data apa saja yang dikirim
selama proses monitoring, berikut gambarnya :
8
Terdapat 3 baris informasi, baris pertama BYTES#, adalah baris yang berisi nomor
bytes. Baris kedua SEND, adalah data yang dikirim berdasarkan protokol Modbus TCP/IP.
Baris ketiga REC (RECEIVE), adalah data yang diterima dari AA-SLS.
Pada baris SEND terdapat MBAP Header yang ditandai dengan kotak warna merah
dan PDU (Function Code + Data) yang ditandai dengan kotak warna biru. Pada kotak merah
terdapat 7 bytes number, 2 bytes pertama adalah Transaction ID dengan bytes number 00 dan
01. 2 bytes berikutnya adalah Protocol ID dengan bytes number 02 dan 03, akan bernilai 0
jika menggunakan Modbus Protocol. 2 bytes berikutnya adalah Length yang menunjukkan
jumlah bytes di belakangnya dengan bytes number 04 dan 05. 1 bytes berikutnya adalah Unit
Id, yang menunjukkan PLC Address yang dituju, pada bytes number 06.
Kotak merah berisikan PDU (Function Code + data) yang dikirim, berikut adalah
detailnya :
Dimana 1 byte pertama menunjukkan Function Code. Function Code untuk membaca
input dan output PLC adalah 01 di dalam Modbus, Function Code 01 adalah Read Coil
dengan bytes number 07.
9
Pada baris REC yang berarti RECEIVE atau data yang diterima terdapat Response
dari Slave, terdiri dari MBAP Header (ditandai dengan kotak merah) dan PDU (ditandai
dengan kotak warna biru).
Kemudian 2 bytes berikutnya menunjukkan feedback dari Protocol Identifier dan di-response
dengan 0 sesuai dengan yang kita kirim, karena memang menggunakan Modbus Protocol.
Dimana 1 byte pertama menunjukkan Function Code yang sesuai dengan yang kita
kirim. Kemudian 1 byte selanjutnya menunjukkan byte count. Selanjutnya 1 byte terakhir
menunjukkan status coil.
Function Code
Dalam Modbus TCP/IP, Function Code digunakan untuk menentukan tindakan apa
yang akan dilakukan oleh Modbus TCP/IP, apakah itu read coil, write coil, dsb. Rincian
keterangan function code sbb :
10
MODUL 1
1.1.Durasi : 6 jam
1.2.Tujuan (TIU+TIK) :
1. Mampu menghubungkan APB Software dengan APBPLC
2. Mampu membuat program menggunakan Function Block
Diagram
3. Mampu melakukan Upload / Download program APBPLC.
4. Mampu mengendalika I/O pada APBPLC
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall APB Software
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. hubungkan Input Modul Praktikum SCADA ke Push Button
dan Output ke LED
3. Jalankan APB Software sesuai intruksi berikut
Modul ini dimulai dengan menjalankan APB Software. Pada APB Software
mahasiswa diperbolehkan membuat program sesuai yang dibutuhkan. Penjelasan mengenai
penggunaan APB Software terdapat dalam Manual APB Soft.
11
Gambar diatas adalah contoh program dari PLC ini dengan fungsi menyalakan output
secara bergantian dengan 8 input yang di OR kan.
Hal penting yang harus dilakukan agar PLC APB dan Modul Praktikum SCADA bisa
berkomunikasi adalah settting IP Address-nya.
1. Setting IP pada PC / laprop sesuai dengan segment yang ada di APB PLC saat ini,
yaitu salah satunya 192.168.1.251. maka kita harus mengupah IP Address dari PC atau
laptop kita menjadi sesuai dengan segment tersebut seperti gambar :
12
Isikan IP address sesuai tujuan alamat PLC yang kita gunakan, lalu OK. Kemudian
download program yang sudah dibuat ke PLC, lalu Disconnect.
Note : Disconnect itu penting, dikarenakan Modbus TCP/IP tidak dapat digunakan
bersamaan, dengan kata lain untuk menggunakan program APBSCADA tidak dapat
dilakukan jika program APB Software masih dalam keadaan Connect.
13
MODUL 2
1.2.Tujuan (TIU+TIK) :
1. Mampu menghubungkan APBSCADA dengan APBPLC
2. Mampu membuat program untuk menghubungkan
APBSCADA dengan APBPLC
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
14
Setelah semua setting untuk APB PLC telah selesai maka selanjutnya kita masuk ke
aplikasi Visual Studio : APBSCADA.
Pada Help Menu terdapat 4 manual yang dapat dibaca oleh mahasiswa yaitu :
Manual kedua dan ketiga tersebut berguna bagi mahasiswa untuk mengetahui lebih
lanjut tentang Modbus TCP/IP, mengenai bagaimana menggunakan sistem SCADA lebih
detail, bagaimana sistem ini dapat berkomunikasi, data apa saja yang dikirim, dsb.
15
4. Kemudian buatlah sebuah projek VBclass dengan klik Project-Add New Item-Class,
ubah namanya dengan APBPLC
5. Masukkan codingan berikut :
Imports System.Net
Imports System.Net.Sockets
16
Property timeout() As UShort
Get
Return _timeout
End Get
Set(ByVal value As UShort)
_timeout = value
End Set
End Property
Public Function TestConnection() As Boolean
Dim _ConnectionOK As Boolean = True
'in Framework 3.5 no reusable disconnection of TCPClient
'every time have to make new instance, after closing the socket
'by the end of this sub
Dim _APBSocket As New TcpClient
_APBSocket.SendTimeout = _timeout
_APBSocket.ReceiveTimeout = _timeout
_APBSocket.ReceiveBufferSize = 128 'number of data from APB only 256
Try
_APBSocket.Connect(_Endpoint)
MsgBox("Connection OK")
Catch ex As Exception
_ConnectionOK = False
MsgBox("Can't connect to" & _Endpoint.Address.ToString & ":" &
_Endpoint.Port.ToString)
End Try
If _APBSocket.Connected Then _APBSocket.Close()
Return _ConnectionOK
End Function
End Class
17
6. Pada form1 yang sebelumnya telah ada, masukkan item item seperti berikut :
7. Mahasiswa dapat merubah nama form1 (misal di program ini diberi nama Home)
Codingan pada Home seperti berikut :
Imports System.Collections
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Threading.Thread
18
Handles ConnectToolStripMenuItem.Click 'menghubungkan Visual Studio dengan PLC
APB.PLCEndpoint = New IPEndPoint(IPAddress.Parse(Setting.tbIP.Text),
Val(Setting.tbPort.Text)) 'setting IP dan Port PLC
If APB.TestConnection() Then
statustoolstrip.Text = "Connected"
TmrConnected.Enabled = True
End If
End Sub
Private Sub SettingToolStripMenuItem_Click(sender As Object, e As EventArgs) _
Handles SettingToolStripMenuItem.Click
Setting.Show()
End Sub
Private Sub HelpToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) _
Handles APBManualToolStripMenuItem.Click,
MODBUSApplicationProtocolSpecificationToolStripMenuItem.Click,
MODBUSTCPIPImplementetationGuideToolStripMenuItem.Click,
APBProgrammingHelpToolStripMenuItem.Click 'memasukkan hyperlink ke
dokumen dokumen help yang terdapat di folder help
If sender.Equals(APBProgrammingHelpToolStripMenuItem) Then
Help.ShowHelp(Me, Application.StartupPath & "\help\Help000.chm")
End If
If sender.Equals(APBManualToolStripMenuItem) Then
System.Diagnostics.Process.Start(Application.StartupPath + "\help\APBmanual.pdf")
End If
If sender.Equals(MODBUSApplicationProtocolSpecificationToolStripMenuItem) Then
System.Diagnostics.Process.Start(Application.StartupPath +
"\help\Modbus_Application_Protocol_V1_1b.pdf")
End If
If sender.Equals(MODBUSTCPIPImplementetationGuideToolStripMenuItem) Then
System.Diagnostics.Process.Start(Application.StartupPath +
"\help\Modbus_Messaging_Implementation_Guide_V1_0b.pdf")
End If
End Sub
19
Public Class Setting
Dim ip, port, scanning As String
Private Sub Done_Click(sender As Object, e As EventArgs) Handles Done.Click
Me.Hide()
ip = tbIP.Text
port = tbPort.Text
scanning = tbScanningTime.Text 'melakukan pembacaan tiap satuan waktu
End Sub
Mahasiswa dapat mencoba untuk connect ke IP Endpoint dari PLC yang tadi sudah di
setting (Connect endpoint terdapat pada toolstripmenu_connect atau connectbutton). IP
Endpoint terdiri dari IP dan Port Address. Untuk Modbus TCP/IP harus menggunakan
port=502. Kemudian jika sudah terhubung maka akan muncul messagebox Connection OK.
MODUL 3
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
Sistem SCADA merupakan salah satu contoh aplikasi real time programming, dimana
input dan output harus dapat dimonitoring dan dikontrol secara real time. Entry Address Start
untuk starting address dari input yang akan dibaca. Contoh : jika input harusnya mulai dari I0
namun bisa di setting untuk membaca mulai dari I1, I2, dsb. Entry length digunakan untuk
setting jumlah input yang ingin dibaca. Contoh : jika nilai Length 4 maka yang bisa terbaca
adalah 4 input terhitung dari settingan Address Start.
21
Public Class Read
Public maxinput As Integer = 8 'nilai maksimum / length
Public start_address As Integer = 0
Public length_convert As Integer
Public staInput(40000) As Boolean
Dim send_data(511) As Byte
Dim received_data(511) As Byte
Dim RegisterValue(40000) As Integer
Dim address_write As Integer
Dim input(39) As Button
Dim alamat(39) As TextBox
Dim detik_OK, detik_Error As Integer
22
input(7) = Button8
input(8) = Button9
input(9) = Button10
input(10) = Button11
input(11) = Button12
input(12) = Button13
input(13) = Button14
input(14) = Button15
input(15) = Button16
input(16) = Button17
input(17) = Button18
input(18) = Button19
input(19) = Button20
input(20) = Button21
input(21) = Button22
input(22) = Button23
input(23) = Button24
input(24) = Button25
input(25) = Button26
input(26) = Button27
input(27) = Button28
input(28) = Button29
input(29) = Button30
input(30) = Button31
input(31) = Button32
input(32) = Button33
input(33) = Button34
input(34) = Button35
input(35) = Button36
input(36) = Button37
input(37) = Button38
input(38) = Button39
input(39) = Button40
alamat(0) = TextBox1
alamat(1) = TextBox2
alamat(2) = TextBox3
alamat(3) = TextBox4
alamat(4) = TextBox5
alamat(5) = TextBox6
alamat(6) = TextBox7
alamat(7) = TextBox8
alamat(8) = TextBox9
alamat(9) = TextBox10
alamat(10) = TextBox11
alamat(11) = TextBox12
alamat(12) = TextBox13
alamat(13) = TextBox14
alamat(14) = TextBox15
alamat(15) = TextBox16
alamat(16) = TextBox17
alamat(17) = TextBox18
alamat(18) = TextBox19
alamat(19) = TextBox20
alamat(20) = TextBox21
alamat(21) = TextBox22
alamat(22) = TextBox23
alamat(23) = TextBox24
alamat(24) = TextBox25
23
alamat(25) = TextBox26
alamat(26) = TextBox27
alamat(27) = TextBox28
alamat(28) = TextBox29
alamat(29) = TextBox30
alamat(30) = TextBox31
alamat(31) = TextBox32
alamat(32) = TextBox33
alamat(33) = TextBox34
alamat(34) = TextBox35
alamat(35) = TextBox36
alamat(36) = TextBox37
alamat(37) = TextBox38
alamat(38) = TextBox39
alamat(39) = TextBox40
For i = 0 To maxinput 1 'program looping untuk me-arrange button, kondisi awal
semua button dan textbox visible = false
With input(i)
.Location = New Point(60 + (i \ 10) * 130, 25 + (i Mod 10) * 30)
.Visible = True
.Text = "0"
.FlatAppearance.MouseDownBackColor = Color.White
.FlatAppearance.MouseOverBackColor = Color.White
End With
With alamat(i)
.Location = New Point(10 + (i \ 10) * 130, 25 + (i Mod 10) * 30)
.Visible = True
.Text = "+" & start_address + i
End With
Next
For i = maxinput To 39
input(i).Visible = False
alamat(i).Visible = False
Next
End Sub
24
initInput()
tmrRead.Enabled = False
TmrDelay.Enabled = True
End Sub
Private Sub lengthstatus_TextChanged(sender As Object, e As EventArgs) Handles
lengthstatus.TextChanged
initInput()
tmrRead.Enabled = False
TmrDelay.Enabled = True
End Sub
25
input(i).Text = ""
tmrRead.Enabled = False
Next
Else
If tmrRead.Enabled = True Then
TmrOK.Enabled = True
TmrError.Enabled = False
End If
End If
End Sub
26
Private Sub TmrError_Tick(sender As Object, e As EventArgs) Handles TmrError.Tick
detik_Error = detik_Error + 1
waktu_Error.Text = detik_Error
End Sub
End Class
Karena kita akan membaca Status Input, maka kita menggunakan Function Code 01
(terdapat pada data Private Sub ReadInput)
2. Pada Class APBPLC masukkan codingan berikut di paling bawah sebelum End
Class :
Public Function CreateReadRequest( _
ByVal TransID As UShort, _
ByVal unit As Byte, _
ByVal startaddress As UShort, _
ByVal length As Ushort, _
ByVal FunctionCode As Byte) As Byte()
Dim data As Byte() = New Byte(11) {} 'Buffer for telegram
'MBAP Header:
' 2 bytes Data(0,1) Transaction ID
' 2 bytes Data(2,3) Protocol ID not used at the moment
' 2 bytes Data(4,5) Message length (number of follwing ID) mostly 6 bytes
' 1 byte Data(6) Unit ID, slave address
'PDU:
' 1 byte Data(7) Function Code
' 2 bytes Data(8,9) Start(address)
' 2 bytes Data(10,11) Quantity of Register
27
Try
_APBSocket.Connect(_Endpoint)
Catch ex As Exception
MsgBox("Can't connect to" & _Endpoint.Address.ToString & ":" &
_Endpoint.Port.ToString)
_Connected = False
End Try
End If
With _APBSocket
If .Connected Then
.GetStream.Write(MessageBytes, 0, MessageBytes.Length)
.GetStream.Flush()
Try
.GetStream.Read(ResponseBytes, 0, _APBSocket.ReceiveBufferSize)
Read.Label1.Text = ""
Catch ex As Exception
Read.Label1.Text = "Modbus Message Timeout"
End Try
.Close()
End If
End With
End Sub
28
4. Ketika program tersebut di-debug, maka hasilnya akan tampak seperti ini :
29
5. Kemudian untuk membaca Input, masukkan angka antara 256 (383 nilai Length)
di kotak Address Start, karena pada Modbus APBPLC, alamat Input terdapat pada
100-17F Hex (256 383 Dec).
Kotak berwarna biru dari +0 s/d +7 adalah alamat dari coil yang sedang dimonitoring,
kemudian kotak warna putih di sebelahnya adalah status dari coil tersebut, dimana akan
bernilai 1 jika aktif dan bernilai 0 jika tidak aktif.
Pada Groupbox MODBUS TCP/IP FRAMES, menunjukkan MBAP Header dan PDU
dari data yang di-request dan di-response ke / dari PLC.
30
MODUL 4
1.2.Tujuan (TIU+TIK) :
1. Mampu membaca status coil output pada PLC
2. Mampu membuat indikator dari pembacaan input / output
PLC
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
31
Karena untuk membaca Output menggunakan Function Code yang sama seperti
membaca Input pada MODUL 3, maka kita gunakan program yang sama dengan program di
MODUL 2.
Kemudian untuk membaca Output, masukkan angka antara 512 (767 nilai length)
di kotak Address Start, karena pada Modbus APBPLC, alamat Output terdapat pada 200-2FF
Hex (512 767 Dec).
32
MODUL 5
1.2.Tujuan (TIU+TIK) :
1. Mampu membaca status Memori (Middle Relay) pada PLC
2. Mampu membuat indikator dari pembacaan Memori
(Middle Relay) PLC
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
33
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
Karena untuk membaca Memori menggunakan Function Code yang sama seperti
membaca Input pada MODUL 3, maka kita gunakan program yang sama dengan program di
MODUL 2.
Kemudian untuk membaca Memori, masukkan angka antara 9728 (11729 nilai
length) di kotak Address Start, karena pada Modbus APBPLC, alamat Output terdapat pada
2600-2DCF Hex (9728 11729 Dec).
34
MODUL 6
1.2.Tujuan (TIU+TIK) :
1. Mampu membaca status Holding Register pada PLC
2. Mampu membuat indikator dari pembacaan Holding
Register PLC
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
35
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
Berbeda dengan status coil, pembacaan register digunakan dengan function code 03,
berbeda dengan function code membaca coil status (01). Maka dari itu, kita ubah Function
Code menjadi 03. Selain itu, karena nilai yang ditampilkan berupa angka register (bukan
antara 0/1), maka kita membutuhkan codingan yang berbeda pada Form Read.
36
TmrOK.Enabled = False
TmrError.Enabled = True
For i = 0 To maxinput - 1
input(i).Text = ""
tmrRead.Enabled = False
Next
Else
If tmrRead.Enabled = True Then
TmrOK.Enabled = True
TmrError.Enabled = False
End If
End If
End Sub
Ubah Private Sub ReadInput dengan Private Sub ReadRegister di atas. Kemudian
pada Private Sub tmrRead_tick ubah teks ReadInput menjadi ReadRegister.
Kemudian untuk membaca Register, masukkan angka antara 18432 (18943 nilai
length) di kotak Address Start, karena pada Modbus APBPLC, alamat Output terdapat pada
4800 49FF Hex (18432 18943 Dec).
37
Pada pembacaan register APB PLC, satu register (DW0) menggunakan 2 alamat
Modbus, karenanya untuk DW0 alamat +18432 akan bernilai 0 dan +18433 akan bernilai
sesuai nilai registernya.
MODUL 7
1.2.Tujuan (TIU+TIK) :
1. Mampu menulis / mengubah status memori pada APB PLC
2. Mampu membuat program (VB Solution) yang dapat
menulis (Set) memori
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
38
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
Untuk dapat melakukan penulisan (Set) coil pada memori, baik set High atau
pun set Low dibutuhkan Function Code untuk write coil (05) serta program yang mendukung
sebagai berikut :
1. Kita mengambil program dari MODUL 5 (Read Memory PLC). Pada Class APBPLC
tambahkan codingan berikut :
39
data(9) = _adr(0)
Dim _cnt As Byte() = BitConverter.GetBytes(CShort(numData))
data(10) = _cnt(0)
data(11) = _cnt(1)
Return data
End Function
Public Function CreateWriteOffRequest( _
ByVal TransID As UShort, _
ByVal unit As Byte, _
ByVal startaddress As UShort, _
ByVal numBytes As UShort, _
ByVal FunctionCode As Byte) As Byte()
Dim numData As UShort
Dim data As Byte() = New Byte(numBytes + 10) {} 'Buffer for telegram
numData = 0
Dim _id As Byte() = BitConverter.GetBytes(CShort(TransID))
data(0) = _id(1) 'Transaction ID high byte
data(1) = _id(0) 'Transaction ID low byte
' data(4) = 0
data(5) = 6
data(6) = unit
data(7) = fctWriteSingleCoil
Dim _adr As Byte() = BitConverter.GetBytes(CShort(startaddress))
data(8) = _adr(1)
data(9) = _adr(0)
Dim _cnt As Byte() = BitConverter.GetBytes(CShort(numData))
data(10) = _cnt(0)
data(11) = _cnt(1)
Return data
End Function
Pada Public Function CreateWriteRequest, nilai numData = 255 (nilai maksimum 1
byte), sedangkan pada Public Function CreateWriteOffRequest, nilai numData = 0.
40
Public Class Write_Coil
Dim send_data(511) As Byte
Dim received_data(511) As Byte
Dim address_write As Integer
Dim register_address As Integer
41
Button2.Click, _
Button3.Click, _
Button4.Click, _
Button5.Click, _
Button6.Click, _
Button7.Click, _
Button8.Click, _
Button9.Click, _
Button10.Click, _
Button11.Click, _
Button12.Click, _
Button13.Click, _
Button14.Click, _
Button15.Click, _
Button16.Click, _
Button17.Click, _
Button18.Click, _
Button19.Click, _
Button20.Click, _
Button21.Click, _
Button22.Click, _
Button23.Click, _
Button24.Click, _
Button25.Click, _
Button26.Click, _
Button27.Click, _
Button28.Click, _
Button29.Click, _
Button30.Click, _
Button31.Click, _
Button32.Click, _
Button33.Click, _
Button34.Click, _
Button35.Click, _
Button36.Click, _
Button37.Click, _
Button38.Click, _
Button39.Click, _
Button40.Click
Write_Coil.Show()
For i = 0 To maxinput - 1
If sender.Equals(input(i)) Then
If input(i).Text = "1" Then
Write_Coil.Radio_OFF.Checked = True
Else
Write_Coil.Radio_ON.Checked = True
End If
Write_Coil.TextBox1.Text = "+" & start_address + i
End If
Next
End Sub
42
MODUL 8
1.2.Tujuan (TIU+TIK) :
43
1. Mampu menulis / mengubah nilai register pada PLC
Schneider
2. Mampu membuat program (VB Solution) yang dapat
menulis (Set) register
1.3.Peralatan :
1. Personal Komputer / Laptop yang terinstall Visual Studio
2. Modul Praktikum SCADA
3. Kabel jaringan
1.4.Pelaksanaan :
1. Hubungkan kabel jaringan ke Router yang terpasang di
Modul Praktikum SCADA
2. Jalankan Microsoft Visual Studio dengan dengan intruksi
sebagai berikut
Untuk dapat melakukan penulisan (Set) nilai pada register,dibutuhkan Function Code
untuk write register (06) serta program yang mendukung sebagai berikut :
1. Kita dapat meneruskan program dari MODUL 6 (Read Register). Pada Class
APBPLC tambahkan codingan berikut :
44
ByVal unit As Byte, _
ByVal startaddress As UShort, _
ByVal numBytes As UShort, _
ByVal FunctionCode As Byte) As Byte()
Dimana numData adalah nilai angka yang akan kita set ke dalam salah satu alamat
PLC yang kita tentukan.
45
Public Class Write_Register
Dim send_data(511) As Byte
Dim received_data(511) As Byte
Dim address_write As Integer
Dim register_address As Integer
46
Private Sub Button1_Click(sender As Object, e As EventArgs) _
Handles Button1.Click, _
Button2.Click, _
Button3.Click, _
Button4.Click, _
Button5.Click, _
Button6.Click, _
Button7.Click, _
Button8.Click, _
Button9.Click, _
Button10.Click, _
Button11.Click, _
Button12.Click, _
Button13.Click, _
Button14.Click, _
Button15.Click, _
Button16.Click, _
Button17.Click, _
Button18.Click, _
Button19.Click, _
Button20.Click, _
Button21.Click, _
Button22.Click, _
Button23.Click, _
Button24.Click, _
Button25.Click, _
Button26.Click, _
Button27.Click, _
Button28.Click, _
Button29.Click, _
Button30.Click, _
Button31.Click, _
Button32.Click, _
Button33.Click, _
Button34.Click, _
Button35.Click, _
Button36.Click, _
Button37.Click, _
Button38.Click, _
Button39.Click, _
Button40.Click
Write_Register.Show()
For i = 0 To maxinput - 1
If sender.Equals(input(i)) Then
Write_Register.TextBox1.Text = "+" & start_address + i
End If
Next
End Sub
47
4. Setelah di-debug, hasilnya akan seperti ini :
Alamat PLC
Schneider
Alamat
Modbus
Register
Schneider
48
Tugas !
1. Buat sebuah program (VB Solution) untuk menggabungkan semua program diatas
(tanpilan / animasi bebas). Setelah program tersebut dibuat, gunakan untuk membaca /
menulis APB PLC dan juga Schneider!
49