Modbus是一种开放协议,这意味着制造商无需支付版税就可以free使用它。它已成为工业中的标准通信协议,并且现在是connect工业电子设备的最常用方法。它被许多行业的许多制造商广泛使用.Modbus通常用于将来自仪表和控制设备的信号传输回主控制器或Data Acquisitionsystem,例如测量temperature和湿度并将结果传送到计算机的system。Modbus通常用于将监控计算机与远程终端单元(RTU)connect在监控和Data Acquisition(SCADA)system中。
Modbus通过设备之间的串行线路传输。最简单的设置是connect两A device(主设备和从设备)上的串行端口的单根串行电缆。

data以一系列1和0的形式send,称为位。每个位都作为电压send。零作为正电压send,而一个作为负电压send。这些位很快send。典型的传输速度为9600波特(每秒位数)。
什么是hexadecimal?
在解决问题时,View传输的实际raw data会很有帮助。长串的1和0很难读取,因此这些位组合在一起并以hexadecimal显示。每个4比特的块由从0 到F 的16个字符之一表示。
每个8位块(称为byte)由00 到FF 的256个字符对中的一个表示。
data如何存储在标准Modbus中?
信息存储在四个不同的表中的从设备中。两个表存储/Close离散值(线圈)和两个存储numerical value(register)。每个线圈和register都有一个只读表和读写表。每个表有9999个值。每个线圈或触点为1位,并分配一个介于0000 和270E 之间的dataaddress。每个register为1字= 16位= 2byte,并且dataaddress在0000 和270E 之间。
线圈/register编号可以被认为是位置名称,因为它们不会出现在实际消息中。dataaddress用于消息中。例如,第一个保持register,编号40001,具有dataaddress0000 。这两个值之间的差异是偏移量。每个表都有不同的偏移量。1,10001,30001和40001。
什么是奴隶身份证?
网络中的每个从站都分配有1到247的唯一单元address。当主站Requestdata时,它send的第一个byte是slave address。这样,每个从设备在第一个byte之后知道是否忽略该消息。
什么是Function代码?
主机send的第二个byte是Function代码。此数字告诉从站要访问哪个表以及是从表中读取还是写入表。
什么是CRC?
CRC代表循环冗余校验。它是在每个modbus消息的末尾添加两个byte以进行Error检测。消息中的每个byte用于Calculate CRC。receive设备还Calculate CRC并将其与来自send设备的CRC进行比较。如果Error地receive到消息中的一位,则CRC将不同并且将导致Error。。
什么是data type?
对于示例FC03 表明,register40108包含AE41 ,其转换为16位1010 1110 0100 0001 大!但是这是什么意思?嗯,这可能意味着一些事情。register40108可以定义为这些16位data type中的任何一种:
甲16位无符号整数(0到65535之间的整数)register40108包含AE41 = 44609(hexadecimal到decimal的转换)
甲16位带符号整数(-32768到32767之间的整数)AE41 = -20,927 (hexadecimal到一个包装,如果其超过32767然后减去65536decimal的转换)
甲两种字符的ASCII字符串(2键入的字母)AE41 =®甲
甲开/关值的离散(在此工作方式相同的16位整数0或1的值的hexadecimaldata将是0000 或0001 )Register40108也可与结合
40109形成任何这些32位data的Type:
甲32位无符号整数(0和4294967295之间的数字)40108,40109 = AE41 5652 = 2923517522
一个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个byte或2个字。要Download副本,请右键单击并选择目标另存为…
甲四个字符的ASCII字符串(4键入的字母)AE41 5652 =®AVR Moreregister可以被组合以形成更长的ASCII字符串。每个register用于存储两个ASCII字符(两个byte)。
什么是byte和字排序?
Modbus规范没有准确定义data如何存储在register中。因此,一些制造商在他们equipment中实现了modbus,首先存储和传输高byte,然后是低byte。(41 之前的AE )。或者,其他人首先存储和send低位byte(AE 之前的41 )。类似地,当register组合起来表示32位data type时,某些器件将高16位(高字)存储在第一个register中,剩余的低字存储在第二个register中(AE41 在5652 之前),而其他器件则相反(5652 之前)AE41 )只要receive设备知道期望它的方式,Send bytes或字的顺序无关紧要。例如,如果要将数字29,235,175,522作为32位无符号整数send,则可以按这四种方式中的任何一种进行排列。
AE41 5652 高byte第一高字首先
5652 AE41 高byte第一低字首先
首先是41AE 5256 低byte第一个高字
5256 41AE 低byte第一个低字首先
什么是Modbus地图?
modbus映射只是一个单独的从设备列表,它定义了- data是什么(例如压力或temperature读数)
- 存储data的位置(哪些表和dataaddress)
- data的存储方式(data type,byte和字排序)
某些设备使用由制造商定义的固定映射构建。而其他设备允许Operation员配置或编程Customization地图以满足他们的需要。
Modbus ASCII和Modbus RTU有什么区别?
Modbus RTU和Modbus ASCII使用相同的协议。唯一的区别是通过线路传输的byte用RTU表示为binary,用Modbus RTU表示为可读ASCII。关于RTU的重要Precautions是RTU消息没有Start_of_text指示。通信中的receive方 使用“静默”time以确定新消息的开始。ASCII确实有一个Text开头标记。binary消息比ASCII短,因此理论上传输/receive速度更快。您可能很高兴在HMI / SCADA中看到大约100 ms的更新速率,并且可以选择任一通信。
总结:
- 使用RTU是可能的
- 如果RTU在WinNT上出现超时问题或者使用300 bps或拨号调制解调器等慢速通信媒体时使用ASCII,大多数用于Modbus的OPC服务器都支持ASCII和RTU通信。
什么是扩展register address?
由于模拟输出保持register的范围是40001到49999,因此意味着register不能超过9999个。虽然这对于大多数应用程序来说通常已经足够了,但有些情况下会有More的register。register40001至49999对应于dataaddress0000 至270E 。如果我们利用剩余的dataaddress270F 到FFFF ,可以使用超过六倍的register,总共65536个。这对应于40001到105536的register编号。许多modbus软件驱动程序(用于主PC)都是用40001到49999编写的限制,不能访问从设备中的扩展register。许多从设备不支持使用扩展register的映射。但另一方面,一些从设备确实支持这些register,一些Master软件可以访问它,特别是在编写Customization软件时。
byte从站寻址如何工作?
由于单个byte通常用于定义slave address,并且网络上的每个从站都需要唯一的address,因此网络上的从站quantity限制为256. modbus规范中定义的限制甚至更低,为247 。超出此限制,可以对协议进行修改以使用两个byte作为address。主人和奴隶都需要支持这种修改。双byte寻址将网络中从站quantity的限制扩展到65535. 默认情况下,Simply Modbus软件使用1byte寻址。输入大于255 的address时,软件会自动Switch到2byte寻址并保持不变所有address的此模式,直到手动Close2byte寻址。
发表回复