什么是 Modbus ASCII?modbus通讯介绍

Q

游客20521460062022-04-11回复

什么是 Modbus ASCII?

Modbus ASCII 是一种较旧的实现,它包含 RTU 数据包的所有元素,但完全以可打印的 ASCII 字符表示。Modbus ASCII 被认为已弃用,不再使用,并且不包含在正式的 Modbus 协议规范中。

Modbus 寄存器类型回顾

Modbus 设备中引用的寄存器类型包括:
• 线圈(离散输出)
• 离散输入(或状态输入)
• 输入寄存器
• 保持寄存器

特定设备是否包括所有这些寄存器类型取决于制造商。发现所有 I/O 仅映射到保持寄存器是很常见的。线圈是 1 位寄存器,用于控制离散输出,可以读取或写入。离散输入是用作输入的 1 位寄存器,只能读取。输入寄存器是用于输入的 16 位寄存器,只能读取。保持寄存器是最通用的 16 位寄存器,可读取或写入,可用于多种用途,包括输入、输出、配置数据或任何“保持”数据的要求。

当网关是主控时,或在直接模式下(Babel Buster SP-GW)运行时,Control Solutions 网关将支持所有寄存器类型。将非 Modbus 设备连接到 Modbus 网络的控制解决方案网关在某些情况下将仅使用保持寄存器来表示非 Modbus 设备数据。

大多数控制解决方案 I/O 设备对所有类型的输入和输出都使用保持寄存器。在大多数情况下,相同的 I/O 也可以像其他寄存器类型一样访问,I/O 状态或值被镜像到多个寄存器中。

Modbus 功能代码回顾

Modbus 协议定义了几个访问 Modbus 寄存器的功能码。Modbus 定义了四种不同的数据块,每个数据块中的地址或寄存器号重叠。因此,一个完整的定义在哪里可以找到一条数据需要地址(或寄存器号)和功能代码(或寄存器类型)。

Modbus 设备最常识别的功能码如下表所示。这只是可用代码的一个子集 - 一些代码具有通常不适用的特殊应用。

CSI网关识别的Modbus功能码
功能码注册类型
1读取线圈
2读取离散输入
3读取保持寄存器
4读取输入寄存器
5写单线圈
6写单个保持寄存器
15写多个线圈
16写入多个保持寄存器

 

审查 Modbus 异常(错误)代码

当 Modbus 从站识别到一个数据包,但确定请求中有错误时,它将返回异常代码回复而不是数据回复。异常回复由从机地址或单元号、设置高位的功能代码副本和异常代码组成。例如功能码为3,异常回复中的功能码为0x83。异常代码将是以下之一:

1
非法功能查询中收到的功能码不被从机识别或不被从机允许。
2
非法数据地址查询中收到的数据地址(寄存器号)不是从机允许的地址,即该寄存器不存在。如果请求多个寄存器,则至少一个是不允许的。
3
非法数据值从站不接受查询的数据字段中包含的值。
4
从设备故障从站尝试执行请求的操作时发生不可恢复的错误
6
从设备忙从站正在处理一个长时间的命令。主人应该稍后再试。
10
网关路径不可用专门与网关结合使用,通常意味着网关配置错误或过载
11
网关目标设备响应失败与网关结合使用时,表示未收到来自目标设备的响应。


我从哪里开始与我的 Modbus 设备进行通信?

以下是您需要了解的前几件事:

(1) 物理连接是什么?

Modbus RTU 使用 RS-485 或 RS-232。Modbus TCP 使用以太网。如果您正在寻找控制解决方案网关,则需要选择与您要连接的设备的电气接口相匹配的型号。如果您选择的是 Control Solutions I/O 设备,请选择与您的网络匹配的设备。

(2) 寄存器是如何映射的?

当使用网关将 Modbus 设备连接到非 Modbus 网络时,您需要从设备制造商处获取描述可用寄存器以及如何寻址它们的文档。Modbus 协议不提供寄存器自动识别自己的方法。Control Solutions 无法为您确定此信息。您必须咨询设备制造商。

使用 Control Solutions I/O 设备(例如 AddMe III)时,您可以在设备随附的在线帮助文件或我们的网站上找到此信息。

(3) 什么是通讯参数?

Modbus RTU 要求您知道或定义波特率、字符格式(8 位无奇偶校验等)和从站 ID(也称为从站地址、单元编号、单元 ID)。其中任何一个不匹配都将导致无法通信。

Modbus TCP 要求您知道或定义网络上的 IP 地址。在某些情况下,您还需要单位 ID。控制解决方案 Modbus TCP 设备可以使用单元 ID,也可以忽略它,具体取决于设备和应用程序。

Modbus:当 40001 真正表示 1,或 0 真正表示 1 时

Modbus 的文档没有很好地标准化。实际上有一个标准,但在文档方面没有很好地遵循。您必须执行以下一项或多项操作才能破译制造商真正指的是哪个注册:

a) 查找寄存器描述,例如保持寄存器、线圈等。如果文档说 #1,并告诉您他们正在保持寄存器,那么您拥有保持寄存器 #1。您还拥有用户友好的文档。

b) 查看数字本身。如果您看到列表中的第一个寄存器的编号为 40001,这确实告诉您寄存器 #1,它是一个保持寄存器。这种形式的符号通常被称为旧的 Modicon 约定。

c) 查找要使用的功能代码的定义。如果您看到一个寄存器#1,以及告诉您使用功能代码 3 和 16 的符号,这也告诉您它正在保存寄存器 #1。

重要提示:寄存器 1 是地址 0。请继续阅读……

d) 你们文件中的数字是指注册号还是地址?寄存器#1 是地址零。如果不清楚您的文档是指寄存器还是地址,并且您没有得到预期的结果,请尝试将寄存器号加或减一。所有 Control Solutions 产品均指配置软件或网页中的注册号。然而,一些制造商记录他们的设备显示地址,而不是注册号。如果您有地址,则必须在从 Control Solutions 将该寄存器输入配置软件时添加一个。

40001:Modbus 寄存器的 Modicon 约定符号

Modbus 最初由 Gould-Modicon(现为施耐德电气)开发。Modicon 最初使用的表示法今天仍然经常使用,尽管目前的 Modbus-IDA 标准被认为已过时。使用 Modicon 表示法的优点是两个信息包含在一个数字中: (a) 寄存器类型;(b) 登记号码。寄存器编号偏移定义了类型。

注意:只有 LonWorks 版本的 Babel Buster 网关使用这个符号作为简写来节省 CP 空间。许多其他设备制造商仍在其产品中使用此约定。根据您使用的产品组合,您可能需要在 Modicon 和当前约定之间进行转换。

Modbus 设备中引用并受 Babel Buster 网关支持的寄存器类型包括:
• 线圈(离散输出)
• 离散输入(或状态输入)
• 输入寄存器
• 保持寄存器

对于上述每种寄存器类型,最初为 Modbus 定义的有效地址范围是 0 到 9999。当前规范中允许的有效范围是 0 到 65,535。Babel Buster 网关最初支持的地址范围是 0 到 9999。扩展范围的寻址后来被添加到所有新的 Babel Buster 产品中。

地址范围适用于每种类型的寄存器,需要查看 Modbus 消息包中的功能代码来确定所引用的寄存器类型。Modicon 约定使用寄存器引用的第一个数字来标识寄存器类型。 

使用 Modicon 表示法识别的寄存器类型和参考范围如下:

0x = 线圈 = 00001-09999
1x = 离散输入 = 10001-19999
3x = 输入寄存器 = 30001-39999
4x = 保持寄存器 = 40001-49999

有时,需要访问超过 10,000 个寄存器类型。根据最初的约定,还有另一个看起来非常相似的事实上的标准。使用 Modicon 符号识别的其他寄存器类型和参考范围如下:

0x = 线圈 = 000001-065535
1x = 离散输入 = 100001-165535
3x = 输入寄存器 = 300001-365535
4x = 保持寄存器 = 400001-465535

使用扩展寄存器引用时,所有寄存器引用都必须是六位数。这是 Babel Buster 知道保持寄存器 40001 和线圈 40001 之间区别的唯一方法。如果线圈 40001 是目标,它必须显示为 040001。


发表评论:

热门产品

SR500

4G工业路由器

查看详情

SR510

5G工业路由器

查看详情

SR700

4G工业路由器

查看详情

SR700-D

4G工业路由器

查看详情

SR800

5G工业路由器

查看详情
在线咨询
产品PK
样机申请
选购攻略

微信扫一扫

微信联系
返回顶部