什么是 Modbus,它是如何工作的?
问题:
本文档描述了 modbus 的工作原理以及正确安装需要执行的操作。
产品线:
所有产品线
环境:
所有序列号
原因:
安装
解析度:
什么是 Modbus?
Modbus 是由 Modicon® 于 1979 年发布的 Modicon 开发的串行通信协议,用于其可编程逻辑控制器 (PLC)。简单来说,它是一种用于在电子设备之间通过串行线路传输信息的方法。请求信息的设备称为 Modbus 客户端,提供信息的设备称为 Modbus 服务器。在标准的 Modbus 网络中,有一个客户端和多达 247 个服务器,每个服务器都有一个从 1 到 247 的唯一服务器地址。客户端还可以将信息写入服务器。Modbus Rtu
官方 Modbus 规范可以在http://www.modbus.org/找到
它是干什么用的?
Modbus 是一种开放协议,这意味着制造商可以免费将其构建到他们的设备中,而无需支付版税。它已成为工业中的标准通信协议,是目前最常用的工业电子设备连接方式。它被许多行业的许多制造商广泛使用。Modbus 通常用于将来自仪表和控制设备的信号传输回主控制器或数据收集系统,例如测量温度和湿度并将结果传送到计算机的系统。Modbus 通常用于将监控计算机与监控和数据采集 (SCADA) 系统中的远程终端单元 (RTU) 连接起来。
它是如何工作的?
Modbus 通过设备之间的串行线路传输。最简单的设置是用一根串行电缆连接两个设备(客户端和服务器)上的串行端口。
数据以一系列 1 和 0 的形式发送,称为位。每个位都作为电压发送。零作为正电压发送,一个作为负电压发送。这些位发送得非常快。典型的传输速度为 9600 波特(比特/秒)。
什么是十六进制?
在解决问题时,查看正在传输的实际原始数据会很有帮助。长的 1 和 0 字符串难以阅读,因此这些位被组合并以十六进制显示。每个 4 位块由从 0 到 F 的 16 个字符之一表示。
每个 8 位块(称为一个字节)由从 00 到 FF 的 256 个字符对之一表示。
数据如何存储在标准 Modbus 中?
信息以四个不同的表存储在服务器设备中。两个表存储开/关离散值(线圈)和两个存储数值(寄存器)。线圈和寄存器各有一个只读表和读写表。每个表有 9999 个值。每个线圈或触点为 1 位,并分配了一个介于 0000 和 270E 之间的数据地址。每个寄存器为 1 个字 = 16 位 = 2 个字节,并且数据地址介于 0000 和 270E 之间。
每个 8 位块(称为一个字节)由从 00 到 FF 的 256 个字符对之一表示。
数据如何存储在标准 Modbus 中?
信息以四个不同的表存储在服务器设备中。两个表存储开/关离散值(线圈)和两个存储数值(寄存器)。线圈和寄存器各有一个只读表和读写表。每个表有 9999 个值。每个线圈或触点为 1 位,并分配了一个介于 0000 和 270E 之间的数据地址。每个寄存器为 1 个字 = 16 位 = 2 个字节,并且数据地址介于 0000 和 270E 之间。
线圈/寄存器编号可以被认为是位置名称,因为它们不会出现在实际消息中。数据地址用于消息中。例如,第一个保持寄存器,编号 40001,具有数据地址 0000。这两个值之间的差异是偏移量。每个表都有不同的偏移量。1、10001、30001 和 40001。
什么是服务器 ID?
网络中的每个服务器都分配有一个从 1 到 247 的唯一单元地址。当客户端请求数据时,它发送的第一个字节是服务器地址。这样每个服务器在第一个字节之后就知道是否忽略该消息。
什么是功能码?
客户端发送的第二个字节是功能代码。这个数字告诉服务器要访问哪个表以及是读取还是写入表。
什么是 CRC?
CRC 代表循环冗余校验。它是添加到每个 modbus 消息末尾的两个字节,用于错误检测。消息中的每个字节都用于计算 CRC。接收设备还计算 CRC 并将其与来自发送设备的 CRC 进行比较。即使消息中的一位被错误接收,CRC 也会不同,从而导致错误。.
Modbus 命令和响应的格式是什么?
什么是数据类型?
FC03 的示例显示寄存器 40108 包含 AE41,它转换为 16 位 1010 1110 0100 0001 太好了!但是这是什么意思?嗯,这可能意味着一些事情。寄存器 40108 可以定义为以下任何 16 位数据类型:
一个16 位无符号整数(0 到 65535 之间的整数)寄存器 40108 包含 AE41 = 44,609(十六进制到十进制转换)
一个16 位有符号整数(介于 -32768 和 32767 之间的整数)AE41 = -20,927(环绕的十六进制到十进制转换,如果超过 32767 则减去 65536)
两个字符的ASCII 字符串(2 个键入的字母)AE41 = ® A
离散的开/关值(这与值为 0 或 1 的 16 位整数相同。十六进制数据将是 0000 或 0001)寄存器 40108 也可以与
40109 组合以形成这些 32 位数据中的任何一个类型:
一个32 位无符号整数(0 到 4,294,967,295 之间的数字) 40108,40109 = AE41 5652 = 2,923,517,522
一个32 位有符号整数(介于 -2,147,483,648 和 2,147,483,647 之间的数字)AE41 5652 = -1,371,449,774
一个32 位双精度 IEEE 浮点数。这是一个数学公式,它允许任何实数(带小数点的数字)用 32 位表示,精度约为 7 位。AE41 5652 = -4.395978 E-11 这是一个电子表格 IEEE 浮点计算器,用于 4 个字节或 2 个字的输入。要下载副本,请右键单击并选择目标另存为...
一个四字符的 ASCII 字符串(4 个键入的字母) AE41 5652 = ® AVR 可以组合更多的寄存器来形成更长的 ASCII 字符串。每个寄存器用于存储两个 ASCII 字符(两个字节)。
什么是字节和字序?
Modbus 规范并未准确定义数据在寄存器中的存储方式。因此,一些制造商在他们的设备中实现了modbus,先存储和传输高字节,然后再传输低字节。(41 岁之前的 AE)。或者,其他人首先存储和传输低字节(AE 之前的 41)。类似地,当寄存器组合起来表示 32 位数据类型时,一些设备将高 16 位(高位字)存储在第一个寄存器中,将剩余的低位字存储在第二个寄存器中(AE41 之前 5652),而其他设备则相反(5652 之前AE41) 发送字节或字的顺序无关紧要,只要接收设备知道以哪种方式期望它。例如,如果将数字 29,235,175,522 作为 32 位无符号整数发送,则它可以以这四种方式中的任何一种方式排列。
AE41 5652 高字节先高字先
5652 AE41 高字节在前 低字在前
41AE 5256 低字节在前 高字在前
5256 41AE 低字节在前 低字在前
什么是 Modbus 映射?
modbus 地图只是一个单独的服务器设备的列表,它定义了数据是什么(例如压力或温度读数)
- 数据存储在哪里(哪些表和数据地址)
- 数据的存储方式(数据类型、字节和字序)
某些设备使用制造商定义的固定地图构建。而其他设备允许操作员配置或编程自定义地图以满足他们的需求。
Modbus ASCII 和 Modbus RTU 有什么区别?
Modbus RTU 和 Modbus ASCII 使用相同的协议。唯一的区别是通过线路传输的字节在 RTU 中以二进制形式显示,在 Modbus RTU 中以可读 ASCII 形式显示。关于 RTU 需要注意的重要一点是 RTU 消息没有 Start_of_text 指示。通信中的接收方使用“静默”时间来确定新消息的开始。ASCII 确实有一个文本开始标记。二进制消息比 ASCII 短,因此理论上传输/接收更快。您可能会很高兴在 HMI/SCADA 中看到大约 100 毫秒的更新速率,并且可以选择任一通信。
总结:
- 使用 RTU 是可能的
- 使用 ASCII 以防 RTU 在 WinNT 上出现超时问题或使用慢速通信媒体(如 300 bps 或拨号调制解调器)大多数 Modbus OPC 服务器支持 ASCII 以及 RTU 通信。
什么是扩展寄存器地址?
由于模拟输出保持寄存器的范围是 40001 到 49999,这意味着不能超过 9999 个寄存器。虽然这对于大多数应用程序来说通常已经足够了,但在某些情况下更多的寄存器会是有益的。寄存器 40001 到 49999 对应于数据地址 0000 到 270E。如果我们利用剩余的数据地址 270F 到 FFFF,则可用寄存器的数量是六倍以上,总共 65536 个。这将对应于从 40001 到 105536 的寄存器编号。许多 modbus 软件驱动程序(用于客户端 PC)是使用 40001 到 49999 限制编写的,并且无法访问服务器设备中的扩展寄存器。并且许多服务器设备不支持使用扩展寄存器的映射。但另一方面,一些服务器设备确实支持这些寄存器,一些客户端软件可以访问它,
2 字节服务器寻址如何工作?
由于通常使用单个字节来定义服务器地址,并且网络上的每个服务器都需要唯一的地址,因此网络上的服务器数量被限制为 256 个。modbus 规范中定义的限制甚至更低,为 247 个。超出此限制,可以对协议进行修改以使用两个字节作为地址。客户端和服务器都需要支持这种修改。两字节寻址将网络中服务器数量的限制扩展到 65535。默认情况下,Simply Modbus 软件使用 1 字节寻址。当输入大于 255 的地址时,软件会自动切换到 2 字节寻址,并对所有地址保持此模式,直到手动关闭 2 字节寻址。
如何发送事件和历史数据?
安然 Modbus 包括用于移动事件和历史数据的命令。
什么是安然 Modbus?
Enron Modbus 是对由 Enron Corporation 开发的标准 Modicon modbus 通信协议的修改。
有关详细信息,请参阅安然 Modbus。
支付宝扫一扫
微信扫一扫