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:








