Modbus helper. Reading and writing via modbus-serial package
npm install @iqrok/modbus.helperjavascript
const modbusHelper = require('@iqrok/modbus.helper');
const modbus =new modbusHelper({
ip: '127.0.0.1',
port: 502,
id: 1,
byteOrder: [1,0,3,2],
decimalDigits: null,
debug: true,
timeout: 1000,
});
`new modbusHelper ({ip, port, baud, byteOrder, decimalDigits, nullable, timeout, debug})
$3
| Name | Type | Attributes | Default | Description |
| --- | --- | --- | --- | --- |
|
ip | string | | | IP destination for modbus TCP |
| port | number\|string | | | Port number for modbus TCP or path to serial port for modbus RTU |
| baud | number | | | Baud Rate for modbus RTU |
| byteOrder | Array.\ | \ | [1,0,3,2] | byte order of modbus register |
| decimalDigits | number | \ \ | | number of decimals for floating point |
| timeout | number | \ | 100 | timeout in ms |
| debug | boolean | \ | false | Print debug message |
byteLength (type) → {number}
Size of data type in bytes
$3
| Name | Type | Description |
| --- | --- | --- |
|
type | "UINT16" \| "INT16" \| "UINT32" \| "INT32" \| "FLOAT" \| "FLOAT32" \| "DOUBLE" \| "FLOAT64" | number data type |
$3
- data type size in bytes
numToWords (number, type) → {Array.\\}
Convert number into array of unsigned integer 16-bits numbers
$3
| Name | Type | Description |
| --- | --- | --- |
|
number | number | number to be converted |
| type | "UINT16" \| "INT16" \| "UINT32" \| "INT32" \| "FLOAT" \| "FLOAT32" \| "DOUBLE" \| "FLOAT64" | number data type |$3
- array of uint16 numbers
readCoils (addr, len) → {Promise.\\>|Promise.\}
Read Coils (FC=1)
$3
| Name | Type | Attributes | Default | Description |
| --- | --- | --- | --- | --- |
|
addr | number | | | address to read from |
| len | number | \ | 1 | number of addresses to read |
$3
- resolve false if reading is failed, otherwise resolve array of coils status
readDiscreteInputs (addr, len) → {Promise.\\\\>|Promise.\}
Read Discrete Inputs (FC=2)
$3
| Name | Type | Attributes | Default | Description |
| --- | --- | --- | --- | --- |
|
addr | number | | | address to read from |
| len | number | \ | 1 | number of addresses to read |$3
- resolve false if reading is failed, otherwise resolve array of discrete inputs status
readHoldingRegisters (addr, len) → {Promise.\|Promise.\}
Read Holding Register (FC=3)
$3
| Name | Type | Attributes | Default | Description |
| --- | --- | --- | --- | --- |
|
addr | number | | | address to read from |
| len | number | \ | 1 | number of addresses to read |$3
- resolve false if reading is failed, otherwise resolve read Buffer
readInputRegisters (addr, len) → {Promise.\|Promise.\}
Read Input Register (FC=4)
$3
| Name | Type | Attributes | Default | Description |
| --- | --- | --- | --- | --- |
|
addr | number | | | address to read from |
| len | number | \ | 1 | number of addresses to read |$3
- resolve false if reading is failed, otherwise resolve read Buffer
wordsLength (type) → {number}
Size of data type in words
$3
| Name | Type | Description |
| --- | --- | --- |
|
type | "UINT16" \| "INT16" \| "UINT32" \| "INT32" \| "FLOAT" \| "FLOAT32" \| "DOUBLE" \| "FLOAT64" | number data type |$3
- data type size in words
wordsToNum (words, type, digits, nullable) → {number}
Convert Words received from modbus to number
$3
| Name | Type | Attributes | Description |
| --- | --- | --- | --- |
|
words | Buffer |Array.\ | | Buffer or array of uint16 numbers to be converted |
| type | "UINT16" \| "INT16" \| "UINT32" \| "INT32" \| "FLOAT" \| "FLOAT32" \| "DOUBLE" \| "FLOAT64" | | number data type |
| digits | number | \ \ | number of decimal digits for float, will be default to set decimalDigits in config if left undefined |$3
- converted number
writeCoil (addr, values) → {Promise.\
Write Single Coil (modified FC=15)
$3
| Name | Type | Description |
| --- | --- | --- |
|
addr | number | address to write |
| values | boolean | array of values to write |$3
- resolve false if reading is failed, otherwise resolve address and length of written registers
writeCoils (addr, values) → {Promise.\
Write multiple Coils (FC=15)
$3
| Name | Type | Description |
| --- | --- | --- |
|
addr | number | address to write |
| values | Array.\ | array of values to write |$3
- resolve false if reading is failed, otherwise resolve address and length of written registers
writeRegister (addr, value) → {Promise.\
Write single Holding Register (FC=6)
$3
| Name | Type | Description |
| --- | --- | --- |
|
addr | number | address to write |
| value | number | value to write |
$3
- resolve false if reading is failed, otherwise resolve address and length of written registers
writeRegisters (addr, values) → {Promise.\
Write multiple Holding Registers (FC=16)
$3
| Name | Type | Description |
| --- | --- | --- |
|
addr | number | address to write |
| values` | Array.\- resolve false if reading is failed, otherwise resolve address and length of written registers