npm包oncloud.modbus 使用教程

阅读时长 5 分钟读完

前言

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:

如何使用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

纠错
反馈