前言
oncloud.modbus是一个基于JavaScript的开源npm软件包,集成了modbus通信协议,提供了一个易于使用的API,使得开发者可以轻松地建立基于modbus的客户端和服务器。
本文将为您介绍如何使用oncloud.modbus。我们将从npm包的安装开始,并通过几个例子来说明如何使用oncloud.modbus来读写和解析modbus数据。我们希望这篇文章能够帮助您快速上手oncloud.modbus。
准备工作
在使用oncloud.modbus之前,您需要安装以下环境:
- Node.js(版本6或更高版本)
- npm(版本3或更高版本)
在安装了Node.js和npm之后,您可以通过以下命令来安装oncloud.modbus:
npm install oncloud.modbus --save
如何使用oncloud.modbus
创建一个modbus客户端
我们现在要创建一个连接到TCP设备的modbus客户端。连接目标是IP地址为x.x.x.x,端口为502的modbus服务器。这个modbus服务器有15个离散输入寄存器,这就是我们将要读取的数据类型。
以下是示例代码:
-- -------------------- ---- ------- ----- ------ - -------------------------- ----- ------ - --------------------------------- ----- ---------------------------- ------------------- -- - ------------------------------ ---------------- -- - ------------------- ------------- -- - --------------- ---
在这个例子中,我们使用oncloud.modbus的createTCPClient()
方法来创建一个连接到服务器的modbus客户端。接下来,我们使用readDiscreteInputs()
方法来读取在设备寄存器中连续的0到15个输入,返回一个包含这些输入的16进制数据payload。最后,我们关闭客户端连接。
创建一个modbus服务器
以下是一个简单的例子,我们创建了一个modbus服务器,并随机生成了一些输入、保持和线圈寄存器。当创建服务器后,我们开始监听端口502。
-- -------------------- ---- ------- ----- ------ - -------------------------- ----- ------ - ---------------------- ----------------------- -------- -- - --------------------------- --- ------------------------------- --------- -- - ----- ------- - --------------------------------------- - ---- -------------------------------------------- - -------- -- --- ------------------------- --- ---------------------- --------- ---------- -- - ----------------- -------------------- ----------------------- --- -------------------
在这个例子中,我们使用了oncloud.modbus的createServer()
方法来创建一个modbus服务器。接下来,我们使用on('connection')
事件来检测是否有新客户端连接到服务器。然后,我们使用on('readDiscreteInputs')
事件来处理来自客户端的请求,并返回模拟数据。我们还使用on('exception')
事件来处理任何异常。
运行此脚本后,modbus服务器将在端口502上监听并接受客户端连接。可使用任何modbus客户端工具与此服务器进行通信。
确定要访问的寄存器
请注意,modbus协议规范定义了许多数据类型和寄存器。下面是一些最常见的:
- 离散输入(0x02)
- 线圈(0x01)
- 输入寄存器(0x04)
- 保持寄存器(0x03)
在read()
和write()
方法中,使用相应的数字来指定要访问的寄存器类型。
对于离散输入和线圈,使用以下函数来读取和写入数据:
readDiscreteInputs(address, length)
- 从输入地址开始读取length
个输入,并返回结果。readCoils(address, length)
- 从线圈地址开始读取length
个线圈,并返回结果。writeCoil(address, state)
- 将位于线圈地址上的线圈写入状态。状态可以是true或false。writeMultipleCoils(address, states)
- 将位于线圈地址上的多个线圈按顺序写入状态。states
是一个布尔值数组,它的长度必须与线圈的长度相等。
对于输入寄存器和保持寄存器,使用以下函数来读取和写入数据:
readInputRegisters(address, length)
- 读取从地址开始的指定长度的输入寄存器。readHoldingRegisters(address, length)
- 读取从地址开始的指定长度的保持寄存器。writeSingleRegister(address, value)
- 将位于地址上的单个寄存器写入值。writeMultipleRegisters(address, values)
- 将位于指定地址的多个寄存器按顺序写入值。values
是一个包含值的16进制数组。
结论
在这篇文章中,我们介绍了如何使用oncloud.modbus来读写和解析modbus数据。我们展示了如何创建一个modbus客户端连接到服务器,并利用它来读取数据。我们还展示了如何创建一个modbus服务器,以便我们可以使用客户端来连接它。
我们希望这篇文章能够帮助您更好地理解和使用oncloud.modbus。在您的下一个modbus项目中,使用oncloud.modbus试试吧!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f70238a385564ab66e6