Minggu, 24 Maret 2019

part 2: membuat arduino memiliki protokol modbus TCP


assalamualaikum,
sobat arduino

lanjut share lagi.


bagaimana membuat arduino yang bisa komunikasi dengan software scada ataupun software yang memiliki protocol modbus TCP.?

siapkan alat dan bahan:
alat:
1. laptop/pc
2. software arduino IDE
3. software modscan

bahan:
1. arduino uno
2. ethernet shield R3 (disini menggunakan yang R3 karena kalo konek ke router gak ruwet0
3. kabel ethernet straight
4. kabel data
5. library Modbus TCP

untuk set IP dan mac addres dilakukan di koding

langkah-langkah:
1. tancapkan arduino dengan ethernet shield
2. sambungkan kabel data dari arduino ke pc
3. sambungkan kabel ethernet dari ethernet shield ke laptop
4. upload koding dibawah ini:
#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT , kalo mau ganti port edit di library

void setup()
{
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };// jika membuat arduino banyak dalam 1 jaringan, mac addres silahkan di edit
  uint8_t ip[]      = { 192, 168, 1, 8 };// ip arduino jangan sama dengan Ip laptop/pc
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);
  //Avoid pins 4,10,11,12,13 when using ethernet shield

  delay(5000);
  Serial.begin(9600);
  
  pinMode(7, INPUT_PULLUP);
  pinMode(8, OUTPUT); 
}

void loop()
{
  Mb.Run();
  
  //Analog inputs 0-1023 = holding register addres mulai dari 40000-40002
  Mb.R[0] = analogRead(A0); //pin A0 to Mb.R[0]
  Mb.R[1] = analogRead(A1);
  Mb.R[2] = analogRead(A2);
  
  //Analog outputs 0-255 = holding register addres mulai dari 40006
  analogWrite(6, Mb.R[6]); //pin ~6 from Mb.R[6]

  //Digital inputs = coil status addres mulai dari 00007, kalo mau kontrol kasih ON
  Mb.C[7] = digitalRead(7); //pin 7 to Mb.C[7]

  //Digital outputs = coil status addres mulai dari 00008
  digitalWrite(8, Mb.C[8]); //pin 8 from Mb.C[8]
}

5. setelah selesai upload, cek koneksi dengan buka command promt, ketik: ping 192.168.1.8 (ip arduino di koding)

6. jalankan software modscan
connection -connect - connect using- remote tcp ip/server
masukkan ip arduino dan port standart modbus  502

7. cek sesuai addres IO

bila ada yang kurang jelas bisa kontak SIMOR 081555305255

selamat berkarya dengan arduino, semoga menjadi ladang rezeki.


salam,
SIMOR

6 komentar:

  1. Hello good day sir, can u please give me a guide for ip addressing and schematic. im doing a similar project to this but arduino as master and computer as slave.

    BalasHapus
  2. yes i can.

    you can use arduino mega + ethernet shield and shield rs485

    and in your PC with usb to rs485

    BalasHapus
  3. how can i reach you sir. i have few question

    BalasHapus
  4. modscan keep saying connection terminated

    BalasHapus
  5. selamat siang pak mau bertanya jika ingin cari lib nya bagaimana?

    BalasHapus
    Balasan
    1. ada d atas librarynya.. coba d baca lagi artikelnya

      Hapus

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...