nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据
在nodejs中安装modbus-serial库
本人使用的开发环境是Windows10下的VSCode,安装并配置好了npm、node、cnpm等工具,使用cnpm安装了modbus-serial库,可以在npm中搜到modbus-serial包以及它的介绍,
在对应的VSCode终端下使用cnpm install modbus-serial -g安装modbus-serial库
cnpm install modbus-serial -g
本来想使用libmodbus的javascript库的,不过在npm官网搜到对应的libmodbus 3.1.4的javascript库,有如下声明:
This is binding to native library libmodbus (http://libmodbus.org/).
Now working only in *nix system.
Module have native function and framework.
说是modbus目前只支持类nix系统,比如Linux、Unix系统。所以我选择了modbus-serial库,当然如果使用C和C++的话,直接使用libmodbus库的C语言版本,官网是:https://libmodbus.org,Github地址是:https://github.com/stephane/libmodbus,Linux下编译libmodbus源代码很简单,Windows下配置相对麻烦点。
非甲烷总烃设备的Modbus寄存器地址定义表
例如,要读取非甲烷总烃设备的总烃、甲烷CH4、NMHC非甲烷总烃对应的浓度,
相关监测因子参数的Modbus寄存器定义如下:
名称 | 数据 | 地址 | 系数 | 值
-------- | ----- | -----| -----| -----| -----
系统参数 | 仪器状态 | 1 | 1 | 0
系统参数 | 运行状态 | 2 | 1 | 1
系统参数 | 控制指令 | 3 | 1 | 8
采样时间 | 年 | 10 | 1 | 2019
采样时间 | 月 | 11 | 1 | 11
采样时间 | 日 | 12 | 1 | 14
采样时间 | 时 | 13 | 1 | 14
采样时间 | 分 | 14 | 1 | 26
采样时间 | 秒 | 15 | 1 | 22
TVOC | 状态 | 20 | 1 | 0
TOVC | 峰面积 | 21 | 0.01 | 1908
总烃 | 浓度 | 22 | 0.01 | 254
CH4 | 状态 | 23 | 1 | 0
CH4 | 峰面积 | 24 | 0.01 | 1729
CH4 | 浓度 | 25 | 0.01 | 200
NMHC | 状态 | 26 | 1 | 0
NMHC | 峰面积 | 27 | 0.01 | 0
NMHC | 浓度 | 28 | 0.01 | 57
苯 | 状态 | 29 | 1 | 8
苯 | 峰面积 | 30 | 0.01 | 0
苯 | 浓度 | 31 | 0.01 | 0
甲苯 | 状态 | 32 | 1 | 8
甲苯 | 峰面积 | 33 | 0.01 | 0
甲苯 | 浓度 | 34 | 0.01 | 0
乙苯 | 状态 | 35 | 1 | 8
乙苯 | 峰面积 | 36 | 0.01 | 0
乙苯 | 浓度 | 37 | 0.01 | 0
间二甲苯 | 状态 | 38 | 1 | 8