Akses Data Block PLC Siemens S7-1500 Menggunakan Node.js

🎯 Tujuan Pembelajaran
Setelah mengikuti praktikum ini, mahasiswa mampu:
- Mengonfigurasi Data Block pada PLC Siemens S7-1500 agar dapat dibaca Node.js.
- Menggunakan library nodes7 untuk membaca data WORD dari Data Block.
- Memahami struktur alamat seperti DB2,WORD0 dan DB2,WORD2.
- Membuat program Node.js untuk membaca data secara periodik (1 detik).
🧠 Dasar Teori
-
Data Block (DB) di Siemens S7-1500
Dalam Siemens PLC, Data Block berisi variabel yang dapat diakses eksternal.
Untuk kompatibilitas dengan Node.js:
-
-
- Optimized block access harus OFF
- Tipe data harus memiliki offset yang fix
- Contoh tipe: Bool, Byte, Word, Real, dll.
- Node.js → membaca berdasarkan alamat absolut, bukan nama variabel
-
-
Pembacaan WORD
WORD = 16-bit unsigned integer
Range: 0 – 65535
Format alamat:
-
-
- DB2,WORD0 → DB2 offset 0 (WORD pertama)
- DB2,WORD2 → DB2 offset 2 (WORD kedua)
-
🧰 Peralatan
Hardware
-
- Siemens S7-1500 atau PLCSIM Advanced
- Laptop/PC dengan Node.js
Software
-
- TIA Portal
- Node.js + library nodes7
- VS Code (opsional)
🛠️ Langkah Praktikum
A.Konfigurasi Data Block di TIA Portal
- Buat Data Block Baru

- Matikan Optimized Block Access

-
- Pada jendela properti DB
- Hilangkan centang Optimized block access
- Buat Struktur Variabel Manual (Tidak Optimized)
Isi variabel sebagai berikut:
| Nama Variabel | Tipe | Offset |
| modbus_data[0] | Uint | 0 |
| modbus_data[1] | Uint | 2 |
Download ke PLC.
B.Instalasi Program Node.js
- Buat folder project
mkdir plc-siemens-db2
cd plc-siemens-db2
npm init -y
- Install library nodes7
npm install nodes7
C.Program Node.js (Akses DB2 – WORD)
Buat file:
read_db2.js
Isi kode sesuai dengan script yang Anda berikan:
const S7 = require('nodes7');
const s7 = new S7();
const connectionParams = {
host: "192.168.0.125",
port: 102,
rack: 0,
slot: 1
};
// GUNAKAN WORD, BUKAN UINT
const tags = {
md0: "DB2,WORD0",
md1: "DB2,WORD2"
};
s7.initiateConnection(connectionParams, (err) => {
if (err) {
console.log("❌ Error:", err);
return;
}
console.log("✅ Connected");
s7.setTranslationCB(tag => tags[tag]);
s7.addItems(Object.keys(tags));
setInterval(() => {
s7.readAllItems((err, values) => {
if (err) console.log("❌ Read error:", err);
else {
console.log("----------------------------");
console.log("modbus_data[0] =", values.md0);
console.log("modbus_data[1] =", values.md1);
}
});
}, 1000);
});
D.Menjalankan Program
Jalankan:
node read_db2.js
Jika koneksi sukses, tampilannya:
✅ Connected ---------------------------- modbus_data[0] = 123 modbus_data[1] = 456 ---------------------------- modbus_data[0] = 123 modbus_data[1] = 456
Output diperbarui setiap 1 detik.
✔️ Hasil yang Diharapkan
Mahasiswa mampu:
- Mengkonfigurasi DB non-optimized pada Siemens S7-1500
- Mengakses WORD menggunakan Node.js
- Memahami pemetaan alamat DB seperti DB2,WORD0
- Membaca data secara periodik dengan setInterval
🎯 Tugas Akhir
- Tambahkan 1 variabel baru pada DB2:
- md2 (Word) offset 4
- Ubah program Node.js untuk membaca md2.
- Buat tabel monitoring via console seperti:
Baca juga:
— Training PLC Lengkap – Pelatihan Online & Offline Bersertifikat
💻 Latihan Tanpa Hardware Fisik Menggunakan PLCSIM Advanced
Bagi yang belum memiliki akses ke PLC Siemens S7-1500 fisik, praktikum ini tetap bisa dilakukan menggunakan simulator. Simak panduan belajar PLC Siemens tanpa hardware menggunakan PLCSIM Advanced untuk memahami cara mengaktifkan simulasi PLC secara penuh, termasuk komunikasi jaringan yang diperlukan agar Node.js tetap bisa terhubung ke PLC virtual seolah-olah itu adalah PLC fisik sungguhan. Dengan simulator ini, Anda bisa berlatih membaca Data Block berkali-kali tanpa risiko merusak hardware asli.
📈 Menampilkan Data Hasil Pembacaan ke Dashboard SCADA
Data yang berhasil dibaca dari Data Block melalui Node.js sebaiknya tidak hanya ditampilkan di terminal console, tetapi juga divisualisasikan agar lebih mudah dipantau oleh operator. Untuk memilih platform visualisasi yang tepat, Anda bisa membaca jenis-jenis software SCADA baik yang berbayar, open source, desktop, maupun berbasis web. Dengan menghubungkan hasil pembacaan Node.js ke salah satu software tersebut melalui database perantara seperti MySQL atau InfluxDB, Anda bisa membangun sistem monitoring yang lebih lengkap dan mudah diakses dari berbagai perangkat.
⚠️ Troubleshooting Koneksi Node.js ke PLC Siemens
Beberapa kendala umum sering muncul saat menghubungkan Node.js dengan PLC Siemens menggunakan library nodes7. Jika koneksi gagal, pastikan opsi “Optimized block access” pada Data Block benar-benar sudah dimatikan, karena jika masih aktif, alamat WORD tidak bisa diakses secara absolut dan Node.js akan gagal membaca data. Periksa juga apakah PUT/GET communication dari partner sudah diaktifkan pada properti proteksi PLC di TIA Portal, karena secara default fitur ini biasanya dinonaktifkan demi keamanan. Terakhir, pastikan firewall di komputer tidak memblokir port komunikasi S7 (biasanya port 102), dan cek kembali kesesuaian IP address serta rack/slot PLC yang digunakan pada konfigurasi koneksi nodes7.
🔐 Keamanan Akses Data Block dari Luar PLC
Membuka akses PUT/GET communication agar Node.js bisa membaca Data Block juga berarti membuka celah komunikasi yang bisa dimanfaatkan pihak tidak berwenang jika tidak dikelola dengan baik. Sebaiknya batasi akses jaringan menuju PLC hanya dari IP komputer yang menjalankan Node.js, misalnya melalui firewall atau access control list pada switch industri. Hindari juga menghubungkan PLC produksi langsung ke jaringan kantor atau internet tanpa proteksi tambahan, karena Data Block yang berisi data proses seringkali juga berkaitan dengan parameter kontrol yang sensitif. Selalu terapkan prinsip least privilege, yaitu hanya memberikan akses baca (read-only) jika Node.js memang hanya berfungsi untuk monitoring, bukan untuk menulis nilai ke PLC.
🚀 Pengembangan Lanjutan: Multi-PLC dan REST API
Setelah menguasai pembacaan Data Block dari satu PLC, Anda bisa mengembangkan program Node.js ini lebih lanjut agar mampu membaca dari beberapa PLC S7-1500 sekaligus secara paralel. Buat array konfigurasi berisi IP address dan Data Block masing-masing PLC, lalu gunakan Promise.all atau async/await agar pembacaan berjalan efisien tanpa saling menunggu. Anda juga bisa membungkus hasil pembacaan ini menjadi REST API sederhana menggunakan Express.js, sehingga data PLC dapat diakses oleh aplikasi lain seperti dashboard web, aplikasi mobile, atau sistem MES tanpa perlu berkomunikasi langsung dengan protokol S7 yang lebih kompleks.



