Integrasi Python dengan PLC Omron menggunakan Protokol FINS

-
Pendahuluan
Dalam tutorial ini, kita akan belajar cara mengintegrasikan Python dengan PLC Omron menggunakan protokol FINS (Factory Interface Network Service). FINS adalah protokol komunikasi yang digunakan untuk menghubungkan PLC Omron dengan perangkat lain (seperti komputer atau sistem SCADA) untuk membaca dan menulis data. Python digunakan untuk membuat antarmuka yang dapat mengirim dan menerima data dari PLC Omron.
-
Tujuan
Tujuan dari jobsheet ini adalah untuk menghubungkan PLC Omron dengan komputer menggunakan Python dan membaca serta menulis data menggunakan protokol FINS. Komputer akan mengirimkan instruksi ke PLC untuk mengambil atau mengubah data yang tersimpan dalam memori PLC.
-
Persyaratan
Sebelum memulai, pastikan Anda memiliki perangkat dan perangkat lunak berikut:
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
- PLC Omron dengan dukungan untuk protokol FINS.
- Python terinstal di komputer Anda (disarankan versi 3.6 atau lebih tinggi).
- library Socket lainnya untuk komunikasi dengan PLC Omron.
- Jaringan yang terhubung antara komputer dan PLC (misalnya, kabel Ethernet jika menggunakan FINS over TCP/IP).
- Akses ke perangkat PLC dan konfigurasi FINS pada PLC Omron (misalnya, alamat IP PLC, nomor port, dll).
-
Instalasi Socket
Untuk berkomunikasi dengan PLC Omron menggunakan Python, kita memerlukan pustaka Socket. Pustaka ini memungkinkan kita untuk menggunakan protokol FINS di Python.
-
Konfigurasi PLC Omron
Sebelum menghubungkan Python dengan PLC Omron, pastikan bahwa PLC telah dikonfigurasi untuk mendukung komunikasi FINS.
- Atur alamat IP PLC: Pastikan bahwa PLC Omron dapat diakses melalui jaringan lokal (LAN). Anda perlu mengetahui alamat IP PLC untuk menghubungkannya melalui FINS.
- Aktifkan mode FINS: Pada beberapa model PLC Omron, Anda perlu mengaktifkan komunikasi FINS melalui pengaturan perangkat lunak (misalnya, CX-Programmer atau Sysmac Studio).
- Catat alamat dan nomor port: Tentukan alamat IP dan nomor port komunikasi yang akan digunakan untuk menghubungkan PLC dengan komputer. Biasanya, port default untuk FINS adalah port 9600 atau port lainnya yang sesuai dengan konfigurasi PLC Anda.
-
Kode Python untuk Komunikasi FINS
Berikut adalah contoh kode Python yang menggunakan pustaka pyfins untuk berkomunikasi dengan PLC Omron melalui protokol FINS. Kode ini dapat digunakan untuk membaca dan menulis data ke dalam memori PLC.
-
-
Membaca dan Menulis Data dari PLC
-
import socket import time # Alamat IP dan port PLC Omron PLC_IP = '192.168.1.100' # Ganti dengan alamat IP PLC Anda PLC_PORT = 9600 # Port komunikasi FINS (default 9600) # Membuat socket untuk komunikasi TCP/IP sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def connect_plc(): """Membuat koneksi ke PLC""" try: sock.connect((PLC_IP, PLC_PORT)) print(f"Terhubung ke PLC di {PLC_IP}:{PLC_PORT}") except Exception as e: print(f"Gagal terhubung ke PLC: {e}") sock.close() def send_fins_request(request): """Mengirimkan permintaan FINS ke PLC""" try: sock.send(request) print(f"Permintaan FINS terkirim: {request.hex()}") time.sleep(1) # Memberikan waktu untuk menerima respons dari PLC response = sock.recv(1024) # Menerima respons dari PLC print(f"Respons diterima: {response.hex()}") return response except Exception as e: print(f"Terjadi kesalahan saat mengirim permintaan: {e}") return None def read_data_from_plc(): """Membaca data dari PLC""" # Membuat paket FINS untuk membaca data dari DM1 (Data Memory Address 1) fins_read_request = bytearray([ 0x46, 0x49, 0x4E, 0x53, # Header FINS 0x00, 0x00, 0x00, 0x00, # Alamat asal (Host) 0x00, 0x00, 0x00, 0x00, # Alamat tujuan (PLC) 0x01, 0x01, 0x00, 0x01, # Perintah (Read/Write) 0x00, 0x01, 0x00, 0x01, # Data yang akan dibaca (contoh DM1) ]) response = send_fins_request(fins_read_request) if response: # Proses respons dari PLC (contoh: membaca data dari DM1) data = response[22:] # Mengambil bagian respons yang relevan print(f"Data yang dibaca dari PLC: {data.hex()}") def write_data_to_plc(): """Menulis data ke PLC""" # Membuat paket FINS untuk menulis data ke DM1 (Data Memory Address 1) fins_write_request = bytearray([ 0x46, 0x49, 0x4E, 0x53, # Header FINS 0x00, 0x00, 0x00, 0x00, # Alamat asal (Host) 0x00, 0x00, 0x00, 0x00, # Alamat tujuan (PLC) 0x01, 0x02, 0x00, 0x01, # Perintah (Write) 0x00, 0x01, 0x00, 0x01, # Data yang akan ditulis (contoh DM1) 0x12, 0x34, # Data yang akan ditulis (nilai 1234) ]) response = send_fins_request(fins_write_request) if response: print("Data berhasil ditulis ke PLC.") # Langkah-langkah komunikasi dengan PLC connect_plc() # Koneksi ke PLC read_data_from_plc() # Membaca data dari PLC write_data_to_plc() # Menulis data ke PLC # Menutup koneksi setelah selesai sock.close()
-
- Penjelasan Program
-
-
- socket(socket.AF_INET, socket.SOCK_STREAM): Membuat objek socket untuk koneksi TCP/IP. Kita menggunakan AF_INET untuk alamat IPv4 dan SOCK_STREAM untuk TCP.
- connect_plc(): Fungsi untuk menghubungkan ke PLC Omron dengan alamat IP dan port yang telah ditentukan. Jika koneksi berhasil, akan dicetak pesan “Terhubung ke PLC”.
- send_fins_request(request): Fungsi ini mengirimkan permintaan FINS ke PLC dan menunggu respons. Permintaan dikirim dalam bentuk bytearray, yang merupakan format yang digunakan untuk protokol FINS. Fungsi ini akan menerima respons dari PLC dalam bentuk byte dan mengembalikannya setelah diproses.
- read_data_from_plc(): Fungsi ini digunakan untuk membaca data dari PLC menggunakan protokol FINS. Dalam hal ini, permintaan FINS dikirim untuk membaca data dari alamat DM1 (Data Memory Address 1). Respons dari PLC kemudian diproses dan ditampilkan.
- write_data_to_plc(): Fungsi ini digunakan untuk menulis data ke PLC. Dalam contoh ini, kita menulis nilai 1234 ke alamat DM1. Setelah menulis data, sistem menunggu respons dari PLC untuk memastikan data berhasil ditulis.
- close(): Menutup koneksi setelah selesai untuk membebaskan sumber daya.
- Penjelasan Struktur Fins
-
Permintaan FINS untuk membaca atau menulis data memiliki struktur tertentu yang terdiri dari beberapa bagian. Berikut adalah beberapa bagian penting dari permintaan FINS yang digunakan dalam contoh:
-
-
- Header FINS: Biasanya terdiri dari 4 byte pertama (misalnya, 0x46 0x49 0x4E 0x53 untuk “FINS”).
- Alamat asal dan tujuan: Alamat yang menunjukkan perangkat pengirim dan penerima.
- Perintah: Menentukan apakah operasi yang dilakukan adalah pembacaan (0x01) atau penulisan (0x02).
- Alamat Data: Alamat memori yang akan dibaca atau ditulis (misalnya, DM1).
- Data yang dikirimkan: Untuk operasi penulisan, data yang ingin ditulis (misalnya, 0x12 0x34 untuk nilai 1234).
-
-
Menangani Error dan Debugging
Dalam komunikasi FINS, Anda mungkin menghadapi beberapa masalah, seperti kegagalan koneksi atau kesalahan komunikasi. Berikut adalah beberapa tips untuk menangani masalah umum:
- Pastikan alamat IP PLC benar: Periksa kembali alamat IP PLC dan pastikan perangkat Anda terhubung ke jaringan yang sama.
- Port yang benar: Pastikan port yang digunakan pada PLC sesuai dengan port yang ditetapkan dalam kode Python.
- Cek konfigurasi PLC: Pastikan PLC telah dikonfigurasi dengan benar untuk mendukung komunikasi FINS.
- Tunggu timeout yang cukup: Jika tidak ada respons dari PLC, Anda mungkin perlu meningkatkan batas waktu koneksi (timeout).
- Log kesalahan: Gunakan logging untuk melacak kesalahan komunikasi dan memudahkan debugging.
-
Penerapan dan Pengujian
Setelah Anda menulis dan mengonfigurasi kode Python, lakukan pengujian untuk memastikan bahwa sistem berfungsi dengan baik. Berikut adalah langkah-langkah untuk menguji sistem:
- Koneksi ke PLC: Jalankan kode Python untuk menghubungkan komputer ke PLC menggunakan alamat IP dan port yang telah dikonfigurasi.
- Pengujian membaca dan menulis data: Uji kode untuk membaca dan menulis data dari memori PLC, misalnya DM, atau memori lainnya.
- Verifikasi hasil: Periksa apakah data yang dibaca atau ditulis sesuai dengan yang diharapkan. Anda dapat memverifikasi nilai melalui perangkat lunak PLC (seperti CX-Programmer).
-
Kesimpulan
Integrasi Python dengan PLC Omron menggunakan protokol FINS memungkinkan Anda untuk mengontrol dan memantau perangkat PLC secara otomatis. Dengan menggunakan pustaka seperti pyfins, Anda dapat dengan mudah membaca dan menulis data ke dalam PLC, serta mengembangkan aplikasi berbasis Python untuk otomasi industri. Penggunaan protokol FINS membuat komunikasi antar perangkat menjadi lebih efisien dan terstandarisasi, membuka peluang untuk pengembangan lebih lanjut dalam aplikasi industri 4.0 dan IoT.
Dengan tutorial ini, Anda diharapkan dapat memahami cara mengintegrasikan Python dengan PLC Omron melalui protokol FINS, serta mengimplementasikan aplikasi otomasi industri yang dapat meningkatkan efisiensi dan produktivitas.