Modbus 驱动程序故障排除
对于 Modbus 驱动程序故障排除,以下章节列出了常见任务和问题以及 Modbus 错误代码列表。
节点中可用的特性和功能由节点中安装的许可证控制。
要验证是否已安装 Modbus 驱动程序许可证:
- 在工作台左窗格中,展开您要检查其许可证的节点,然后选择 Administration(账户管理)图标。
- 从 Administration(账户管理)窗口中,选择 Licenses(许可证)选项卡。
- 选择合适的许可证。选项卡中将显示许可证的详细信息。
- 查看 Features(功能)列以识别设备驱动程序。
如果看不到正确的许可证,或者许可证已过期,则必须从许可证密钥提供者处申请许可证。
有关如何安装许可证的信息,请参阅 System Administration(系统管理)> Licenses(许可证)。
Modbus 驱动程序不属于此节点的安装内容。Modbus 驱动程序作为程序包安装,与基本产品安装分开进行。
您使用的可能是不同级别的节点,每个节点都为设备提供不同级别的支持。确保该节点支持 Modbus 设备。
有关如何添加 Modbus 驱动程序包的信息,请参阅 System Administration(系统管理)> Packages(软件包)。
需要使用设备的配置软件来配置 Modbus 设备。本文档不涉及对此配置的完整描述。确保为网络设置正确配置了 IP 地址、端口和从属地址设置,并且它们与代表 Modbus 设备的设备中的定义匹配。
如果 MODBUS 服务器连接到 MODBUS+ 或 MODBUS 串行线路子网,并且通过网桥或网关寻址,则 Slave Address(从属地址)值是识别连接在网桥或网关后面的子网上的设备所必需的。该值允许网关将消息路由到连接到网桥或网关的特定 Modbus 设备。直接与 Modbus 设备通信时,应将 Slave Address(从属地址)参数设置为默认值 0。无论是将设备直接连接到 Modbus 设备还是连接到已连接到网桥或网关的 Modbus 设备,对 Slave Address(从属地址)值无效的设备进行读取或写入尝试时,都会发生协议错误。
确保分配给设备的串行端口处于活动状态。如果该节点在 Microsoft Windows 平台上运行,则可以检查设备管理器组件(可从控制面板访问)以确定特定的 COM 端口是否处于活动状态。如果该节点在 Linux 平台上运行,则可以运行以下命令来确定 COM 端口是否处于活动状态。
dmesg | grep tty
节点可能具有到 Modbus RTU 设备的串行连接,以菊链式连接到其他 Modbus RTU 设备。可以基于链中 Modbus 设备的地址为链中的每个 Modbus RTU 设备定义一个设备。可以使用该设备的配置软件确定 Modbus RTU 设备的地址。对 Device Address Identification(设备地址标识)值无效的设备进行读取或写入尝试时,会发生协议错误。
将 RS-485 设备串行连接到节点的常用方法是使用 USB 转串行转换器电缆。该电缆使用 USB 端口将 Modbus RTU 设备连接到节点。如果节点在 Microsoft Windows 平台上运行,则转换器电缆的供应商必须提供设备驱动程序以启用此功能。
在 Linux 平台上,可以通过从终端窗口发出 lsusb 命令来确定 USB 端口是否识别电缆。如果将电缆插入 USB 端口,将显示供应商和产品代码。然后可以将该信息添加到 Linux ftdi_sio 表中,以启用 USB 转换器电缆。这是通过从终端窗口发出以下命令来完成的。
sudo modprobe ftdi_sio vendor=0xnnnn product=0xnnnn
其中 nnnn 是从 lsusb 命令返回的供应商和产品代码的十六进制值。
成功定义串行连接到物理 Modbus 设备的 Modbus 设备取决于连接参数的正确设置。设备定义中的连接参数:Baud Rate(波特率)、Parity(奇偶校验)、Stop Bits(停止位)和 Data Bits(数据位)必须与物理设备上定义的设置完全匹配。测试表明,对于波特率设置小于 9600 的设备,设备定义中的超时参数应设置为 10000 毫秒,以防止设备被禁用。监视以较低波特率设置(小于 9600)连接的串行设备的 Modbus 寄存器的数据触发器也应设置为最少 5000 毫秒,以避免会导致设备禁用的超时条件。
可以创建 XML 文件以将符号名称映射到特定的 Modbus 数据区域。XML 文件还用于将数据类型映射到特定的保持寄存器和输入寄存器区域。可以映射到这些数据区域的数据类型之一是字符串。单独的保持寄存器或输入寄存器包含两个字节,这意味着可以将两个 ASCII 字符写入一个寄存器。因此,XML 文件中定义的所有字符串长度必须具有偶数长度。大小为奇数的字符串将减少 1,以获得具有偶数长度的字符串。
本节介绍了使用 Modbus 驱动程序时可能遇到的错误代码。
这些错误代码可从 Extended Status(扩展状态)列中的 Devices(设备)窗口获得。Exceptions Log(异常日志)中也会引用错误代码。
当系统遇到异常情况(例如设备故障、与控制器断开连接或软件错误)时,错误代码和扩展错误代码会记录在 Exceptions Log(异常日志)中。
在 Devices(设备)窗口中,Status(状态)列将始终是通用错误代码,该代码可以告诉您该错误是通信错误、数据错误还是其他内部设备错误。Extended Status(扩展状态)列提供了来自驱动程序的错误代码。这些错误代码既可能是基本的运行时错误代码,也可能是 Modbus 驱动程序特定的错误代码。
| 错误代码 | 原因 |
|---|---|
| 1 | 尝试了非法功能 |
| 2 | 非法数据地址 |
| 3 | 非法数据值 |
| 4 | 从属设备失败 |
| 5 | 确认挂起,超时 |
| 6 | 从属设备忙 |
| 7 | 收到否定确认 |
| 8 | 内存奇偶校验错误 |
| 9 | 无效 CRC 响应 |
| 10 | 网关路径不可用 |
| 11 | 网关目标设备无法响应 |
| 12 | 非法数据大小 |
| 13 | 不正确的设备地址 |
| 137 | 计算出来的 CRC 与收到的 CRC 不匹配 |