Integrasi Arduino Uno dengan PLC Omron CP1H Menggunakan Protokol FINS

1. Pendahuluan

Integrasi antara Arduino Uno dan PLC Omron CP1H menggunakan protokol FINS memungkinkan komunikasi antara perangkat mikrokontroler dan sistem kontrol industri. Protokol FINS (Factory Interface Network Service) adalah protokol komunikasi yang digunakan oleh perangkat PLC Omron untuk pertukaran data dengan perangkat lain seperti komputer atau mikrokontroler. Pada jobsheet ini, kita akan menghubungkan Arduino Uno dengan PLC Omron CP1H melalui koneksi jaringan (Ethernet) dan menggunakan protokol FINS untuk berkomunikasi.

2. Tujuan

Tujuan dari jobsheet ini adalah:

  • Menghubungkan Arduino Uno dengan PLC Omron CP1H melalui koneksi Ethernet.
  • Menggunakan protokol FINS untuk membaca dan menulis data ke dalam PLC Omron CP1H.
  • Membaca status input atau output PLC dari Arduino dan mengontrol PLC berdasarkan data yang diterima dari Arduino.

3. Persyaratan

Sebelum memulai, pastikan Anda memiliki perangkat dan alat yang diperlukan:

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang
  1. Arduino Uno.
  2. PLC Omron CP1H.
  3. Modul Ethernet untuk Arduino Uno (misalnya, Ethernet Shield atau W5100).
  4. Kabel Ethernet untuk menghubungkan PLC dan Arduino ke jaringan.
  5. Software Arduino IDE untuk pemrograman Arduino.
  6. FINS protocol library atau kode untuk berkomunikasi dengan PLC Omron (akan dibahas di langkah 4).
  7. Jaringan yang terhubung antara PLC dan Arduino (baik melalui LAN atau koneksi Ethernet lainnya).
  8. Akses ke PLC Omron CP1H untuk konfigurasi IP dan pengaturan komunikasi.

4. Instalasi dan Pengaturan

4.1 Pengaturan PLC Omron CP1H
  1. Konfigurasi Alamat IP PLC:
    • Pastikan PLC Omron CP1H terhubung ke jaringan yang sama dengan Arduino dan memiliki alamat IP yang dapat diakses. Biasanya, PLC Omron menggunakan koneksi Ethernet.
    • Konfigurasikan alamat IP PLC melalui perangkat lunak CX-Programmer atau perangkat lunak lainnya yang sesuai dengan PLC CP1H.
  2. Aktifkan Komunikasi FINS:
    • Di dalam PLC CP1H, aktifkan mode FINS di pengaturan komunikasi. Hal ini memastikan PLC dapat berkomunikasi menggunakan protokol FINS dengan perangkat lain.
4.2 Pengaturan Arduino Uno
  1. Pasang Ethernet Shield:
    • Pasang Ethernet Shield pada board Arduino Uno.
    • Pastikan modul Ethernet bekerja dengan baik dan terhubung ke jaringan yang sama dengan PLC Omron.
  2. Instalasi Library Ethernet untuk Arduino:
    • Pastikan Anda sudah menginstal library Ethernet untuk Arduino melalui Library Manager di Arduino IDE.
    • Jika menggunakan protokol FINS di Arduino, Anda dapat menggunakan pustaka yang mendukung protokol ini, atau mengimplementasikan FINS menggunakan TCP/IP socket secara manual.

5. Pemrograman Arduino untuk Komunikasi FINS

Berikut adalah contoh pemrograman Arduino untuk membaca dan menulis data ke PLC Omron CP1H menggunakan FINS.

5.1 Kode Arduino untuk Membaca Data dari PLC

 

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 240, 50);
IPAddress plcIP(192, 168, 240, 200);
unsigned int plcPort = 9600;

EthernetUDP Udp;

const byte DEST_NODE = 0x01;
const byte SOURCE_NODE = 0x32;

void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
Udp.begin(9600);
delay(1000);
Serial.println("FINS UDP Read Only dari D101 dimulai...");
}

void loop() {
finsReadDMemory(0x0065);
Serial.println("-------------------------------------");
delay(5000);
}

void finsReadDMemory(unsigned int address) {
byte cmd[] = {
0x80, 0x00, 0x02, 0x00,
DEST_NODE, 0x00,
0x00, SOURCE_NODE,
0x00, 0x00,
0x01, 0x01,
0x82,
(byte)(address >> 8),
(byte)(address & 0xFF),
0x00,
0x00, 0x01
};

Udp.beginPacket(plcIP, plcPort);
Udp.write(cmd, sizeof(cmd));
Udp.endPacket();

Serial.println("📤 Membaca nilai D101 dari PLC...");

delay(200);
byte buffer[32];
int len = Udp.parsePacket();
if (len > 0) {
Udp.read(buffer, sizeof(buffer));
Serial.print("✅ Respon baca diterima: ");
for (int i = 0; i < len; i++) {
Serial.print(buffer[i], HEX); Serial.print(" ");
}
Serial.println();

if (len >= 16) {
int d101 = (buffer[14] << 8) | buffer[15];
Serial.print("📥 Nilai D101 dari PLC: ");
Serial.println(d101);
} else {
Serial.println("❌ Data respon baca tidak lengkap");
}
} else {
Serial.println("❌ Timeout: Tidak ada respon baca dari PLC");
}
}
5.2 Kode Arduino untuk Menulis Data ke PLC

Untuk menulis data ke PLC, Anda bisa mengirimkan permintaan FINS untuk menulis ke alamat data tertentu, misalnya DM1:

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 240, 50);
IPAddress plcIP(192, 168, 240, 200);
unsigned int plcPort = 9600;

EthernetUDP Udp;

const byte DEST_NODE = 0x01;
const byte SOURCE_NODE = 0x32;

unsigned int value_to_write = 0;

void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
Udp.begin(9600);
delay(1000);
Serial.println("FINS UDP Write Only ke D101 dimulai...");
}

void loop() {
finsWriteDMemory(0x0065, value_to_write);
value_to_write = (value_to_write + 1) % 65536;
Serial.println("-------------------------------------");
delay(5000);
}

void finsWriteDMemory(unsigned int address, unsigned int value) {
byte cmd[] = {
0x80, 0x00, 0x02, 0x00,
DEST_NODE, 0x00,
0x00, SOURCE_NODE,
0x00, 0x00,
0x01, 0x02,
0x82,
(byte)(address >> 8),
(byte)(address & 0xFF),
0x00,
0x00, 0x01,
(byte)(value >> 8),
(byte)(value & 0xFF)
};

Udp.beginPacket(plcIP, plcPort);
Udp.write(cmd, sizeof(cmd));
Udp.endPacket();

Serial.print("📤 Menulis nilai ");
Serial.print(value);
Serial.println(" ke D101...");

delay(100);
byte buffer[32];
int len = Udp.parsePacket();
if (len > 0) {
Udp.read(buffer, sizeof(buffer));
Serial.print("✅ Respon write diterima: ");
for (int i = 0; i < len; i++) {
Serial.print(buffer[i], HEX); Serial.print(" ");
}
Serial.println();
} else {
Serial.println("⚠️ Timeout saat menunggu respon write");
}
}

6. Pengujian dan Verifikasi

Setelah Anda berhasil mengonfigurasi PLC dan Arduino serta memprogram Arduino, lakukan langkah-langkah berikut untuk menguji sistem:

  1. Koneksi:
    • Pastikan PLC dan Arduino terhubung ke jaringan yang sama. Periksa konektivitas antara Arduino dan PLC dengan memastikan bahwa alamat IP keduanya berada dalam subnet yang sama.
  2. Pengujian Pembacaan dan Penulisan:
    • Jalankan program Arduino untuk membaca data dari PLC. Periksa respons yang diterima di serial monitor untuk memastikan data yang dikirimkan sesuai dengan yang diharapkan.
    • Jalankan program untuk menulis data ke PLC dan periksa apakah nilai di PLC berubah sesuai dengan data yang ditulis dari Arduino.
  3. Verifikasi Data:
    • Gunakan perangkat lunak PLC (seperti CX-Programmer) untuk memverifikasi bahwa data yang dibaca dan ditulis oleh Arduino sesuai dengan yang diharapkan di dalam memori PLC.

7. Kesimpulan

Integrasi antara Arduino Uno dan PLC Omron CP1H menggunakan protokol FINS memungkinkan komunikasi data antara mikrokontroler dan sistem kontrol industri. Dengan menggunakan Ethernet Shield pada Arduino, kita dapat dengan mudah menghubungkan Arduino ke PLC Omron dan mengontrol data input/output, membaca status, serta menulis data sesuai kebutuhan. Jobsheet ini memberikan panduan langkah demi langkah untuk menghubungkan Arduino dengan PLC melalui jaringan lokal dan menggunakan protokol FINS untuk pertukaran data yang efisien.

 

 

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang