Senin, 17 Maret 2014

tutorial membuat RTU Arduino protokol Modbus RTU (RS485)

 RTU sudah dijelaskan artinya pada blog sebelumnya.
kali ini saya akan share tentang tutorial membuatnya, komunikasi data serial RS485.
kenapa saya menggunakan RS485???
karena modul-modul di pasaran sekarang menggunakan itu. contoh modul yang ada di tempat kerja saya, yang menggunakan RS485, antara lain:
  1. ION6200
  2. Micom P127
  3. ADAM 4055
  4. PM710

Kelebihan RS485  dibandingkan RS232:
  • Bisa menghubungkan 1  master dengan 32 slave.
  • Kecepatan data bisa sampai 1 mbps
  • Maksimal panjang kabel data 1200 meter.
  • menggunakan metoda master-slave
Secara hardware maupun pemrograman Rs485  sangatlah simple tapi sangat bermanfaat buat pengontrolan.

Bahan-bahan yang perlu di sediakan untuk membuat RTU :

Material Hardware:
  1. Arduino Uno
  2. Kabel data Arduino
  3. IC MAX485
  4. konverter RS232 to RS485 (ujicoba ke PC)




Material Software:
  1. Software Arduino versi 0023
  2. Library ModbusSlave (maaf belum bisa upload ke internet, bisa dicari di google)
langkah-langkah pembuatan:
1. Masukkan library yang sudah anda cari di goolge ke dalam folder library software arduino

2. Buat sketch pada software arduino

#include <ModbusSlave.h>

ModbusSlave mbs;

enum { 
                MB_40000,        //A0     
        MB_40001,        //A1       
        MB_40002,        //A2
        MB_40003,        //A3
        MB_40004,        //A4
        MB_40005,        //A5
        MB_40006,        //PWM  PIN_3
        MB_40007,        //PWM  PIN_4
        MB_40008,        //PWM  PIN_5              
        MB_40009,        //PWM  PIN_6                
        MB_40010,        //PWM  PIN_7               
        MB_40011,        //PWM  PIN_8
        MB_40012,      //Pino 9 do arduino  1= liga Led 0 desliga led.              
        MB_40013,      //Pino 10 do arduino  1= liga Led 0 desliga led.
        MB_40014,      //Pino 11 do arduino  1= liga Led 0 desliga led.
        MB_40015,      //Pino 12 do arduino  1= liga Led 0 desliga led.
        MB_40016,     //Pino 13 do arduino  1= liga Led 0 desliga led.
        // Aqui você pode criar mais registradores  porém o elipse  demo fica limitado em 20 tags.  Lembrete os registradores e tags são na verdade variaveis.
        MB_REGS         /* total number of holding registers on slave */
};


int regs[MB_REGS];
int ledPin = 13;

unsigned long wdog = 0;         /* watchdog */
unsigned long tprev = 0;         /* previous time*/

void setup()
{
       

  const unsigned char SLAVE = 1;      /* slaveId */
  const long BAUD = 9600;             /* baud rate */
  const char PARITY = 'n';             /* n=none; e=even; o=odd */
  const char TXENPIN = 2;              /* output driver enable pin */

 
  mbs.configure(SLAVE, BAUD, PARITY, TXENPIN);

  mbs.update(regs, MB_REGS);
  pinMode(ledPin, OUTPUT);
  pinMode(3, INPUT);
 }


void loop()
{
       if(mbs.update(regs, MB_REGS))
                wdog = millis();
        if ((millis() - wdog) > 1500); 

   
 //   ANALOG INPUT
   regs[MB_40000] = analogRead(A0);   
 //   DIGITAL INPUT
   regs[MB_40006] = digitalRead(3);     
//   DIGITAL OUTPUT  
    digitalWrite(13, regs[MB_40016]);   
   
        
  }

 
3. Compile
4. tancapkan kabel data ke PC dan Arduino
5. Cek arduino di com brp???
6. setelah terdeteksi upload sket ke arduino
7.rangkai arduino sperti gambar di bawah ini
8. Cek hasil rakitan arduino dengan software Modscan / atau software untuk membaca protokol modbus

library cek disini

bila kurang jelas silahkan tinggalkan pesan atau contact ke 081555305255



klik RS485 untuk melanjutkan ke tahap berikutnya

22 komentar:

  1. Wah tertarik juga pak dengan tutorialnya bapak, mampir juga yah pak ke website saya Jual Arduino

    BalasHapus
  2. selalu merah pak... mungkin library yang bapak maksud berbeda dengan yg saya download.. bisa perjelas downloadnya dimana ?

    BalasHapus
  3. saya librarynya cari d google pak.... cari aja modbus slave arduino

    BalasHapus
  4. tolong di share dong link library nya.!!

    BalasHapus
  5. untuk pembacaan seperti arus,teganga, frekuensi dll bagaimana ya caranya

    BalasHapus
  6. library sudah saya share.. silahkan dibaca lagi...

    thanks sudah berkunjung


    untuk pembacaan arus dan tegangan menggunakan tranduser atau sensor

    BalasHapus
  7. Mas Fuad....mantap deh.... alhamdulillah berhasil hehe

    BalasHapus
  8. pak maaf mau nanya, saya kan diperintahkan untuk membuat konfigurasi untuk komunikasi RTU IP based dengan modem supaya terkoneksikan ke master station. yang harus saya lakukan apa saja ya pak ?

    BalasHapus
  9. modem apa ini?
    IP RTU harux dpt langganan IP statis/fix

    BalasHapus
  10. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  11. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  12. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  13. saya compile koq ada yang eror ya pak bagian ModbusSlave mbs;

    BalasHapus
  14. kabel yg digunakan bisa pakai kabel listrik apa tidak??

    BalasHapus
  15. pak saya mau nanya, kalau dari arduino ke rs485(slave),lalu ke rs485(master) PC(labview), tanpa konverter seperti gambar diatas, bagaimana cara nya pak??

    BalasHapus
  16. pakai kabel usb y? yang buat upload

    BalasHapus
    Balasan
    1. Arduino.1 + RS485.1 --> Arduino.2 + RS485.2 --> Labview

      Mau pakai Softwareserial mas di arduino.1 itu gimana?

      Hapus
  17. saya gk pernah pakai softserial... biasanya hardware serial

    BalasHapus
  18. pak saya mau nanya. untuk library yang digunakan apa ya pak? link yang dicantumkan pada postingan sudah tidak dapat diakses pak

    BalasHapus

signal gsm sim800l

Value RSSI dBm Condition 2 -109 Marginal 3 -107 Marginal 4 -105 Marginal 5 -103 Marginal 6 -101 Marginal 7 -99 Marginal 8 -97 Marginal 9 -95...