Anda di halaman 1dari 60

BELAJAR PEMROGRAMAN DASAR ARDUINO

DAN MODBUS RTU


Pemateri : Fuad Hasan
SIDOARJO, 2 NOVEMBER 2020
PERKENALAN
• Nama : Fuad Hasan
• Asal : Sidoarjo
• Kontak : 081555305255
• Blog : puaks.blogspot.com
• Pekerjaan : - PJ Pelaksana K3L – PLN ULP Darmo Permai
- Instruktur TT RTU – PLN Udiklat pandaan
- Trainer Modbus
• Founder : - SIMOR
- Grup Modbus Arduino
RIWAYAT
• 2006-2007 : BURUH PABRIK UNILEVER
• 2009 – 2012 : PLN – PENGATURAN SISTEM OPERASI DCC
• 2012 – 2020 : PLN – STAFF SCADA BAGIAN RTU
• 2014 – SEKARANG : PLN – INSTRUKTUR TT RTU DI UDIKLAT PANDAAN
• 2019 – SEKARANG : TRAINER MODBUS

INOVASI
• 2014 : RESET RTU DARI MASTER STATION
• 2016 : SMART DUMMY SCADA 20KV
• 2017 : SIMOR
• 2020 : MONBETO
AGENDA Workshop Online:
-Pengenalan Arduino & Modbus RTU
-Bahasa pemrograman Arduino
-Pemrograman Input – Output port dengan Arduino
-Teknik Kendali beban dengan Arduino
-Pemrograman Arduino dengan protocol Modbus
RTU
Pengenalan ARDUINO
ARDUINO
• Adalah merupakan papan
.
elektronik berbasis mikrontroler
ATMEGA yang memenuhi sistem
minimum mikrokontroller agar
dapat bekerja secara mandiri
(standalone controller)
• Arduino pertama kali dirancang 2005 Oleh Mazzimo Banzi dan David
Cuartielles di Italia
• Arduino membutuhkan perangkat tambahan untuk bisa koneksi
dengan dunia luar, yang mana biasanya disebut dengan SHIELD
Macam-macam Arduino

 ARDUINO UNO
 ARDUINO NANO
 ARDUINO MEGA 2560
 ARDUINO PRO MICRO
 ARDUINO PRO MINI
 ARDUINO LEONARDO
 ARDUINO VIO
 ARDUINO LILYPAD
 ARDUINO ESPLORA
 ARDUINO YUN
Arduino UNO
• Mikrokontroller Berbasis ATMega328
• 14 Digital Input/Output
• 6 diantaranya bisa digunakan sebagai
PWM
• 6 Pin Analog Input Sebagai ADC (analog
digital converter)
BLOK DIAGRAM ATMEGA328

UART ( antarmuka serial )


2Kb RAM 32Kb Flash ROM
(memori kerja) (program)

1Kb
EEPROM CPU
(data)

Port Input/Output
UART (Universal Asynchronous Reciever
Transmitter)
• Merupakan bagian antarmuka untuk komunikasi serial dengan
perangkat lain.
• Level tegangan TTL 0-5v
• Jika ingin koneksi dengan perangkat lain, maka butuh converter
external. Contoh koneksi ke power meter yang komunikasinya
RS485. berarti menggunakan TTL to RS485
RAM (Random Acces Memory)
• Merupakan tempat penyimpanan data sementara
• Hilang saat sumber tegangan dimatikan

Flash Memory
• Merupakan tempat penyimpanan data yang bersifat tidak hilang
saat sumber tegangan dimatikan
• Seperti untuk menyimpan program dan bootloader arduino
EEPROM
• Memori ini mempunyai sifat seperti flash memory,
• Namun secara fisik berbeda tipe bahan penyusunnya.
CPU (Central Processing Unit
• Merupakan Pusat pemrosesan instruksi
program yang ada di flash memory.

Port IO
• Merupakan pintu keluar masuknya
data untuk antarmuka mikrokontroller
dengan dunia luar
PINOUT ARDUINO UNO REV 3
Software ARDUINO
• Bootloader adalah semacam program kecil
yang menginisiasi lingkungan pemrograman
arduino setiap kali booting
• Arduino IDE adalah Software yang diinstal di
PC yang digunakan untuk mengembangkan
program sekaligus untuk mengunggah ke
Arduino
Cara Instal Arduino IDE
• Download di https://www.arduino.cc/en/Main/Software
• Instal

1 2 3

4
5
Cara menambah Library versi Online
Sketch – Include Library – manage library

Ketik nama library di kolom filter


Cara menambah Library versi Offline
• Unzip File library yang download dari internet berupa rar/zip
• Copy folder ke C:\Program Files (x86)\Arduino\libraries
Add a Slide Title - 1
Bahasa Pemrograman ARDUINO
Bahasa Pemrograman
• Sintaks bahasa
pemrograman yang
digunakan adalah Bahasa C
• Bukan Bahasa C murni,
namun C for Arduino
Stuktur Pemrograman ARDUINO

Deklarasi adalah blok yang


digunakan untuk mendefinisikan
library/variable/konstanta yang
dibutuhkan dalam blok setup/loop.

setup() adalah bagian untuk


inisialisasi yang hanya dijalankan
sekali di awal program,

loop() untuk mengeksekusi bagian


program yang akan dijalankan
berulang-ulang untuk selamanya.
Contoh : example – basics - blink
int LAMPU = 13;

void setup() {
pinMode(LAMPU, OUTPUT);
}

void loop() {
digitalWrite(LAMPU, HIGH);
delay(1000);
digitalWrite(LAMPU, LOW);
delay(1000);
}
Pernyataan Control (if)
• Digunakan untuk mengatur alur program
• Biasanya berupa pilihan
• Sintaks : If <kondisi> <aksi>
• Contoh : if ( a > 10 ) digitalWrite (LAMPU, HIGH);
• Jika <aksi> lebih dari satu baris , maka sesudah <kondisi> wajib menggunakan
tanda { dan di akhir aksi di tutup dengan tanda }
• Contoh : if ( a > 10 ) {
digitalWrite (3, HIGH);
digitalWrite (2, LOW);
}
Pernyataan Control (if……… else)
• Digunakan untuk melaksanakan suatu aksi jika kondisi tertentu
terpenuhi, dan jika tidak terpenuhi akan dilanjutkan aksi yang dinyalakan
setelah else.
• Sintaks : If <kondisi> <aksi A> else <aksi B>
• Contoh : if ( a > 10 ) {
digitalWrite (3, HIGH);
}
else {
digitalWrite (3, LOW);
}
Operator
Adalah karakter khusus yang berupa symbol atau tanda yang
digunakan untuk mengoperasikan dua operand atau lebih untuk
mendapatkan hasil tertentu
Operator Aritmatika
Operator Operasi Contoh Hasil
= Penugasan X=analogRead(0) Variabel x berisi nilai pembacaan
dari pin analog A0
+ Penjumlahan X= 5+3 Variabel x berisi 8
- Pengurangan X= 6-3 Variabel x berisi 3
* Perkalian X= 2*3 Variabel x berisi 6
/ Pembagian X= 4/2 Variabel x berisi 2
Operator perbandingan
Operator Operasi Contoh Hasil
== Persamaan If (a == 30) digitalWrite (8, Jika a berisi data sama dengan 30
HIGH); maka pin 8 akan mengeluarkan
tegangan 5V atau logika HIGH
!= Pertidaksamaan If (a != 30) digitalWrite (8, Jika a berisi data tidak sama dengan
HIGH); 30 maka pin 8 akan mengeluarkan
tegangan 5V/HIGH
< Kurang dari If (a < 30) digitalWrite (8, Jika a kurang dari 30, maka pin 8 akan
HIGH); HIGH
> Lebih dari If (a > 30) digitalWrite (8, Jika a lebih dari 30, maka pin 8 akan
HIGH); HIGH
<= Kurang dari atau If (a <= 30) digitalWrite (8, Jika a kurang dari atau sama dengan
sama dengan HIGH); 30, maka pin 8 akan HIGH
>= Lebih dari atau If (a >= 30) digitalWrite (8, Jika a lebih dari atau sama dengan
sama dengan HIGH); 30, maka pin 8 akan HIGH
Operator Boolean

Operat Operasi Contoh Hasil


or
&& Logika AND If (a == 30) && (b == Jika a dan b sama dengan 30
30 ) digitalWrite (8, maka pin 8 akan
HIGH); mengeluarkan tegangan 5V
atau logika HIGH
|| Logika OR If (a == 30) || (b == Jika a atau b sama dengan 30
30 ) digitalWrite (8, maka pin 8 akan
HIGH); mengeluarkan tegangan 5V
atau logika HIGH
Tipe Data yang dikenal dalam pemrograman
Arduino
Tipe data Arti
Boolean Variabel dengan dua kondisi (true, false)
Char Variabel yang mewakili satu karakter
Unsigned char Bilangan bulat 8 bit (0-255)
byte Bilangan bulat 8 bit (0-255)
Int Bilangan bulat 16 bit (-32.768 – 32.767)
Unsigned int Integer yang tidak bertanda(tidak memiliki bilangan negative) range (0 – 65.535)
word Sama dengan unsigned int
Long Bilangan bulat 32 bit. Range ( -2.147.483.648 – 2.147.483.647 )
Unsigned long Long yang tidak memiliki bilangan negative Range ( 0 – 4.294.967.295 )
Float Bilangan pecahan 32 bit. Maksimal 7 digit dibelakang koma. Contoh : 49,98
Double Bilangan pecahan 32 bit maksimal 15 digit dibelakang koma
Add a Slide Title - 1
Pemrograman Input dan Output
ARDUINO
PUSH BUTTON DAN LED

• Open sketch push button dan led


• Pilih board arduino uno
• Pilih port Arduino Uno (cek di device manager)
• Upload
POTENSIOMETER
• Open sketch potensiometer
• Pilih board arduino uno
• Pilih port Arduino Uno (cek di device manager)
• Upload
• Puter potensiometer, cek perubahan datanya di
serial monitor
SERVO DAN POTENSIOMETER

• Open sketch potensio dan servo


• Pilih board arduino uno
• Pilih port Arduino Uno (cek di device manager)
• Upload
DHT11
• Open sketch DHt11
• Pilih board arduino uno
• Pilih port Arduino Uno (cek di device manager)
• Upload
• Cek data DHT11 di serial monitor
Teknik Kendali Beban dengan
Arduino
“UNTUK BEBAN KECIL BISA
RELAY MENGGUNAKAN
RANGKAIAN SEPERTI INI,
UNTUK MENGHINDARI EMI.”
• Electromagnetic Interference atau
biasa disingkat EMI adalah noise
(gangguan) elektrikal yang disebabkan
oleh medan elektromagnetik yang
dihasilkan oleh sistem elektrikal lain.
• Pada umumnya gangguan EMI ini
terjadi jika ada 2 rangkaian elektronika
yang berdekatan.
• Bisa salah satu mempengaruhi yang
lain, bisa juga saling mempengaruhi.
Besarnya gangguan EMI berbanding
lurus terhadap arus.
SOLID STATE RELAY

“UNTUK BEBAN BESAR BISA


MENGGUNAKAN
RANGKAIAN SEPERTI INI,
UNTUK MENGHINDARI EMI.”
Pemrograman Arduino dengan
Protocol Modbus RTU
Penjelasan Tentang :
PROTOKOL
Sistem peraturan yang
memungkinkan terjadinya
hubungan, komunikasi, dan
perpindahan data antara dua
computer/modul
Aturan ini harus dipenuhi oleh pengirim dan penerima
agar komunikasi dapat berlangsung dengan baik.
Protokol komunikasi serial yang dipublikasikan
oleh Modicon pada tahun 1979 untuk
diaplikasikan ke dalam programmable logic
controllers (PLCs).

Modbus digunakan untuk komunikasi antar banyak perangkat


dalam satu jaringan. dan sering digunakan untuk menghubungkan
komputer pemantau dengan remote terminal unit (RTU) pada
sistem SCADA
Jenis-Jenis Modbus
Merupakan varian Modbus yang ringkas dan digunakan
pada komunikasi serial. Format RTU dilengkapi dengan
Modbus RTU mekanisme cyclic redundancy error (CRC) untuk
memastikan keandalan data

Digunakan pada komunikasi serial dengan


memanfaatkan karakter ASCII. Format ASCII
Modbus ASCII menggunakan mekanisme longitudinal redundancy
check (LRC).

Merupakan varian Modbus yang digunakan pada


Modbus TCP IP jaringan TCP/IP
Port Komunikasi Modbus

Serial RS485, RS232, & RS422

TCP IP ETHERNET & WIFI


Karakteristik Modbus

Modbus Master NO TIMETAG

Modbus Slave

POLLING DATA DIKIRIM YANG DIMINTA


Jenis Penyimpanan Data Modbus
1) Coil Status
register 00000 sampai 09999
2) Input Status
register 10001 sampai 19999
3) Input Register
register 30001 sampai 39999
4) Holding Register
register 40001 sampai 49999.

v
Frame Data Modbus
Frame dikirim dari Master:
Slave Address (1byte) + Function code
(1byte) + Start Address + informasi (n
byte) + CRC 16 (2 byte)

Frame dikirim dari Slave:


Slave Address (1byte) + Function code
(1byte) + Count Byte + Data(n byte) +
CRC 16 (2 byte)
Software Buat Analisa
Modscan32 dan Modbus Pool
Sketch Modbus RTU
1) Coil Status
register 00000 sampai 09999
2) Input Status
register 10001 sampai 19999
3) Input Register
register 30001 sampai 39999
4) Holding Register
register 40001 sampai 49999.

v
Add a Slide Title - 1
RANGKAI SEMUA KOMPONEN
UPLOAD DAN CEK DATA MODBUS

• Open sketch Modbus RTU


• Pilih board arduino uno
• Pilih port Arduino Uno (cek di
device manager)
• Upload
• Run software Modbus poll
• Connection – connect
CONNECTION

• Connection – serial port


• Serial Setting – Com (sesuai
arduino di device manager)
• Baudrate – 19200
• Worklenght – 8 data bits
• Parity – none
• Stop bit – 1
• Mode – RTU
• Klik OK
DEFINISI DATA

• Setup – read/write definition


• Slave ID -1
• Function – Read Holding
register
• Addres – 0
• Quantity – 10
• Scan rate – 1000ms
• Klik OK
CEK DATA MASING-MASING KOMPONEN

• Kasih keterangan di kolom alias,


contoh : button, led dll
CEK DATA PUSH BUTTON

• Lakukan perubahan di push


button
• Cek data di addres 0
• Jika di tekan akan value 1, jika
dilepas value 0
CEK DATA LED

• Klik 2x angka 0 sebelah kanan led


• Isi value 1 untuk on, value 0
untuk off
• Klik SEND
CEK DATA SERVO
• Klik 2x angka 0 sebelah
kanan servo
• Isi value 1-1023 untuk
mengatur sudut putaran
servo
• Klik SEND
CEK DATA POTENSIOMETER

• Lakukan puter knop


potensiometer
• Cek data di addres 3
CEK DATA DHT11

• Lakukan simulasi dengan


memberikan perubahan suhu di
dht11, seperti mendekatkan
bahan panas (solder).
• Cek data di addres 4 dan 5
“Jangan pernah
berhenti mengejar
yang kamu impikan,
meski apa yang kamu
dambakan belum ada
ADD A SLIDE TITLE - 5 di depan mata”
B.J. Habibie

Anda mungkin juga menyukai