Ini adalah modul NodeJS untuk membantu Anda memproses data modbus. Ia menggunakan pdu untuk membangun PDU inti dan kemudian menggunakan transportasi untuk memperluas sisanya.
Ini adalah file test.js
saya saat ini. Ini menciptakan soket jaringan klien dan server dan server meminta kumparan segera setelah klien terhubung.
var modbus = require ( "modbus-stream" ) ;
modbus . tcp . server ( { debug : "server" } , ( connection ) => {
connection . readCoils ( { address : 5 , quantity : 8 } , ( err , info ) => {
console . log ( "response" , info . response . data ) ;
} ) ;
} ) . listen ( 12345 , ( ) => {
modbus . tcp . connect ( 12345 , { debug : "client" } , ( err , connection ) => {
connection . on ( "read-coils" , ( request , reply ) => {
reply ( null , [ 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 ] ) ;
} ) ;
} ) ;
} ) ;
Untuk terhubung ke perangkat modbus melalui TCP, gunakan:
var modbus = require ( "modbus-stream" ) ;
modbus . tcp . connect ( 502 , "134.2.56.231" , { debug : "automaton-2454" } , ( err , connection ) => {
// do something with connection
} ) ;
Untuk mendengarkan koneksi melalui TCP, gunakan:
var modbus = require ( "modbus-stream" ) ;
modbus . tcp . server ( { debug : "server" } , ( connection ) => {
// do something with connection
} ) . listen ( 502 , ( ) => {
// ready
} ) ;
Untuk menyambung ke perangkat modbus melalui port serial, gunakan:
var modbus = require ( "modbus-stream" ) ;
modbus . serial . connect ( "/dev/ttyS123" , { debug : "automaton-123" } , ( err , connection ) => {
// do something with connection
} ) ;
Setelah memiliki koneksi, Anda dapat mengirim permintaan dan mendengarkan tanggapan.
modbus . serial . connect ( "/dev/ttyS123" , { debug : "automaton-123" } , ( err , connection ) => {
if ( err ) throw err ;
connection . readCoils ( { address : 52 , quantity : 8 , extra : { unitId : 25 } } , ( err , res ) => {
if ( err ) throw err ;
console . log ( res ) ; // response
} )
} ) ;
Setiap metode menerima options
objek yang memiliki parameter default (seperti address = 0
) dan panggilan balik, jika Anda ingin melihat respons dari perangkat jarak jauh. Berikut adalah daftar kode fungsi yang didukung dan metode terkait:
Bacaan Dasar
readCoils
( address = 0
, quantity = 1
)readDiscreteInputs
( address = 0
, quantity = 1
)readHoldingRegisters
( address = 0
, quantity = 1
)readInputRegisters
( address = 0
, quantity = 1
)Penulisan Dasar
writeSingleCoil
( address = 0
, value = 0
)writeSingleRegister
( address = 0
, value = <Buffer 0x00 0x00>
)writeMultipleCoils
( address = 0
, values = []
)writeMultipleRegisters
( address = 0
, values = [ <Buffer 0x00 0x00> ]
)Catatan Berkas
readFileRecord
( requests = []
)writeFileRecord
( requests = []
)FIFO
readFifoQueue
( address = 0
)Canggih
maskWriteRegister
( address = 0
, andmask = 0xFFFF
, ormask = 0x0000
)readWriteMultipleRegisters
( read_address = 0
, read_quantity = 1
, write_address = 0
, values = [ <Buffer 0x00 0x00> ]
)readDeviceIdentification
( type = "BasicDeviceIdentification"
, id = "ProductName"
)readExceptionStatus
()getCommEventCounter
()getCommEventLog
()Untuk informasi lebih lanjut mengenai metode ini, lihat repositori pdu yang digunakan untuk membuat paket.
Untuk merespons permintaan jarak jauh, dengarkan acara.
modbus . serial . connect ( "/dev/ttyS123" , {
// except "debug", everything else is the default for serial
baudRate : 9600 ,
dataBits : 8 ,
stopBits : 1 ,
parity : "none" ,
debug : "automaton-123"
} , ( err , connection ) => {
if ( err ) throw err ;
connection . events . on ( "read-coils" , ( req , reply ) => {
console . log ( req ) ; // request
// ...
return reply ( null , [ data ] ) ;
} )
} ) ;
Ada peristiwa yang disebarkan dari angkutan sampai ke sungai. Anda harus mengikat beberapa pendengar acara untuk berjaga-jaga jika koneksi atau perangkat serial mengalami kesalahan atau ditutup begitu saja. Ingatlah bahwa di NodeJS, peristiwa kesalahan yang terjadi tanpa pendengar akan menyebabkan proses memunculkan uncaughtException
.
close
) Peristiwa ini dikeluarkan ketika modul serialport
mengeluarkan peristiwa close
atau ketika soket mengeluarkan peristiwa end
.
error
) Peristiwa ini jika sesuatu terjadi pada aliran yang mendasarinya, seperti ECONNRESET
atau yang serupa.