1.14.0 • Published 3 years ago
modbus-pdu v1.14.0
Modbus PDU
This is a generic module to create all the modbus PDU message types. You should then use another abstraction to TCP, RTU and ASCII.
You should not use this directly, use stream instead.
Install
npm i modbus-pduExamples
var Modbus = require("modbus-pdu");
// <Buffer 01 00 0d 00 14>
console.log(Modbus.ReadCoils.Request.build(13, 20));
// { address: 13, quantity: 20 }
console.log(Modbus.ReadCoils.Request.parse(new Buffer([ 0x01, 0x00, 0x0d, 0x00, 0x14 ])));
// <Buffer 94 06>
console.log(Modbus.ReadFileRecord.Exception.build(Modbus.Exception.ServerDeviceBusy));
// { code: 'ReadFileRecord', exception: 'ServerDeviceBusy' }
console.log(Modbus.Exception.parse(new Buffer([ 0x94, 0x06 ])));
// can also auto detect function code
// { code: "ReadCoils", address: 13, quantity: 20 }
console.log(Modbus.Request(new Buffer([ 0x01, 0x00, 0x0d, 0x00, 0x14 ])));
// { code: 'ReadCoils', data: [ 1, 0, 1, 1, 0, 1, 0, 1 ] }
console.log(Modbus.Response(new Buffer([ 0x01, 0x01, 0xad ])));Function Codes
01ReadCoils(address,quantity)02ReadDiscreteInputs(address,quantity)03ReadHoldingRegisters(address,quantity)04ReadInputRegisters(address,quantity)05WriteSingleCoil(address,value)06WriteSingleRegister(address,value)07ReadExceptionStatus()0BGetCommEventCounter()0CGetCommEventLog()0FWriteMultipleCoils(address,values) //valuesshould be Array of1/010WriteMultipleRegisters(address,values) //valuesshould be Array of 2-size Buffers14ReadFileRecord(requests) //requestsshould be Array of objects with keysfile,addressandlength15WriteFileRecord(requests) //requestsshould be Array of objects with keysfile,addressandvalues(Array of 2-size Buffers)16MaskWriteRegister(address,andmask,ormask)17ReadWriteMultipleRegisters(read_address,read_quantity,write_address,values) //valuesshould be Array of 2-size Buffers18ReadFIFOQueue(address)2B/0EReadDeviceIdentification(code,id)
Exceptions
01IllegalFunction02IllegalDataAddress03IllegalDataValue04ServerDeviceFailure05Aknowledge06ServerDeviceBusy08MemoryParityError0AGatewayPathUnavailable0BGatewayTargetDeviceFailedToRespond
You can create an Error object with code and message using the following code:
var err = Modbus.Exceptions.error("GatewayPathUnavailable");
console.log(err.code); // 10 (0x0A)
console.log(err.message); // "GatewayPathUnavailable"You can use this error directly when replying to requests using the stream module.
1.14.0
3 years ago
1.13.1
6 years ago
1.13.0
7 years ago
1.12.0
7 years ago
1.11.1
8 years ago
1.11.0
8 years ago
1.10.0
8 years ago
1.9.0
8 years ago
1.8.4
8 years ago
1.8.3
8 years ago
1.8.2
8 years ago
1.8.1
9 years ago
1.8.0
9 years ago
1.7.0
9 years ago
1.6.0
9 years ago
1.5.1
9 years ago
1.5.0
9 years ago
1.4.0
9 years ago
1.3.0
9 years ago
1.2.0
9 years ago
1.1.0
9 years ago
1.0.0
9 years ago
0.3.2
9 years ago
0.3.1
10 years ago
0.3.0
10 years ago
0.2.0
10 years ago
0.1.0
10 years ago
0.0.0
10 years ago
