在前端开发中,我们常常需要与设备进行通讯,以获取其状态或控制其行为。而 Modbus TCP 是一种常用的通讯协议,可以实现在网络上的设备间通讯。在 Node-RED 上,我们可以使用 node-red-contrib-modbus 和 node-red-contrib-modbus-flex 这两个节点,来实现 Modbus TCP 的读取与写入。但在使用中,我们发现这些节点无法满足我们的需求。
这时,我们可以使用另一个 npm 包:node-red-devbus-modbustcp。这个包对 Modbus TCP 的读取与写入进行了封装,使用起来更加便捷。本篇文章将详细介绍该包的使用方法。
安装
使用 npm 命令进行安装:
npm install node-red-devbus-modbustcp
使用方法
读取 Modbus 寄存器
在 Node-RED 中,我们首先需要使用 modbus-flex-server 节点进行 TCP 服务端的搭建。在此基础上,我们可以使用 node-red-devbus-modbustcp 节点来读取 Modbus 寄存器的值。下面是一个示例代码:
-- -------------------- ---- ------- -- ----- ------------------ ------- --------------------- ---- ------------------ ------- ------------------ ----------- ------------------ ------------- ---------------- --------------- ---- ------------- ----- ------------------- ----------- ------------- ----- ---------------- - ------- ------------ ------- ------ -- -------------- ----- -------- -- -- - ----- ----------------- ------- -------- ---- ------------------ ------- --- --------- ----- ------------ ----- ---------- ------ ----------- ------ ----------- ---------- ------------- ------ ------------ --- ------------- ------- ---- ---- ---- ---- -------- -- -- - ----- ------------------ ------- --------- ---- ------------------ ------- --- -------- -- ---- --------- --- --------- --- ---------- --- ------- ------ ------------ ---- -------- --- -------------- ------ ---- ---- ---- ---- -------- - ------------------- - -- - ----- ------------------ ------- -------------- ---- ------------------ ------- ------------- -------- --- ----------------------- ------ ------------------ ------ ------------- ------ --------- --- ----------- ------------------ ------ ---- ----------- ---- ------- ---- ----------- ---- --------------- ------ ----------------- --- --------- ------------------ ------------ ------ --------- --- ------------------ ------ ----------------- ------ ---- ---- ---- ---- -------- - ------------------ - -- - ----- ---------------- ------- ------------------------ ---- ------------------ ------- ---------------- ------------ ------------------ -------- ---- -------- ---- ------- ---- ----------- ---- --------------- ------ ----------------- --- ---- ---- ---- ---- -------- - ------------------ - --
我们需要先在 Node-RED 中使用 modbus-flex-server 节点来声明一个 TCP 服务端,使用 node-red-devbus-modbustcp 的数据读取节点时,需要将 modbus-flex-server 节点的编号填入 server-id 参数中,就可以读取 Modbus 寄存器的值。
写入 Modbus 寄存器
在 Node-RED 中,我们同样需要使用 modbus-flex-server 节点进行 TCP 服务端的搭建。在此基础上,我们可以使用 node-red-devbus-modbustcp 节点来写入 Modbus 寄存器的值。下面是一个示例代码:
-- -------------------- ---- ------- -- ----- ------------------ ------- --------------------- ---- ------------------ ------- ------------------ ----------- ------------------ ------------- ---------------- --------------- ---- ------------- ----- ------------------- ----------- ------------- ----- ---------------- - ------- ------------ ------- ------ -- -------------- ----- -------- -- -- - ----- ------------------ ------- --------- ---- ------------------ ------- --- -------- -- ---- --------- --- --------- --- ---------- --- ------- ------ ------------ ---- -------- --- -------------- --------- ---- ---- ---- ---- -------- - ----------------- - -- - ----- ---------------- ------- ------------------------- ---- ------------------ ------- ----------------- ------------ ------------------ -------- ---- ------- ------ ----------- ----------- ------- ---------- ---- ---- ---- ---- -------- -- --
我们需要先在 Node-RED 中使用 modbus-flex-server 节点来声明一个 TCP 服务端,使用 node-red-devbus-modbustcp 的数据写入节点时,需要将 modbus-flex-server 节点的编号填入 server-id 参数中,可以在 start 参数中指定起始地址,且可以选择写入的数据类型(int16/uint16/int32/float/字符串等)及寄存器类型(Holding/Register/Discrete/Input)。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60057bf981e8991b448ebace