MODBUS常见的14个问题

文章来源:锐特步进电机 时间:2019-12-03 13:56:11 浏览:

  到底什么是MODBUS?

  Modbus是Modicon系统开发的通信协议。简而言之,这是一种用于在电子设备之间通过串行线路传输信息的方法。请求信息的设备称为Modbus主站,提供信息的设备为Modbus从站。在标准的Modbus网络中,有一个主站和多达247个从站,每个从站都具有从1到247的唯一从站地址。主站也可以向从站写入信息。官方的Modbus规范可在http://www.modbus.org/上找到。

  它是干什么用的?

  Modbus是一个开放协议,这意味着制造商可以免费将其内置到设备中,而无需支付专利使用费。它已成为非常广泛的协议,已被许多行业的许多制造商广泛使用。Modbus通常用于将信号从仪表和控制设备传输回主控制器或数据收集系统。

  它是如何工作的?

  Modbus通过设备之间的串行线传输。最简单的设置是使用一根串行电缆连接两个设备(主设备和从设备)上的串行端口。

  

 

  数据以称为比特的1和0的序列发送。每个位都作为电压发送。零被发送为正电压,一个被发送为负电压。比特发送非常快。典型的传输速度是9600波特(每秒比特)。

  什么是十六进制?

  在对问题进行故障排除时,查看实际传输的原始数据会很有帮助。长的一和零字符串很难读取,因此将这些位组合并以十六进制显示。4位的每个块由0到F的十​​六个字符之一表示。

  每个8位块(称为字节)由从00到FF的256个字符对之一表示。

  数据如何存储在标准MODBUS中?

  信息存储在从设备的四个不同表中。两个表存储开/关离散值(线圈),两个表存储数值(寄存器)。线圈和寄存器分别具有只读表和读写表。

  每个表都有9999个值。

  每个线圈或触点均为1位,并分配了一个介于0000和270E之间的数据地址。

  每个寄存器为1个字= 16位= 2个字节,并且还具有0000至270E之间的数据地址。

  可以将线圈/寄存器号视为位置名称,因为它们没有出现在实际的消息中。消息中使用了数据地址。

  例如,第一个保持寄存器编号40001的数据地址为0000。这两个值之间的差是offset。每个表都有不同的偏移量。1、10001、30001和40001。

  什么是从站ID?

  网络中的每个从站都被分配一个从1到247的唯一单元地址。当主站请求数据时,它发送的第一个字节是从站地址。这样,每个从站都会在第一个字节之后知道是否忽略该消息。

  什么是功能码?

  主机发送的第二个字节是功能代码。该数字告诉从站要访问哪个表以及是从表中读取还是向表中写入。

  什么是CRC?

  CRC代表循环冗余校验。它是在每个Modbus消息的末尾添加两个字节以进行错误检测。消息中的每个字节都用于计算CRC。接收设备还计算CRC,并将其与发送设备的CRC进行比较。如果错误地接收到消息中的甚至一位,则CRC也将不同并且将导致错误。

  这是一个电子表格CRC计算器,用于最多16个字节的消息。http://www.simplymodbus.ca/crc.xls。要下载副本,请右键单击并选择目标另存为...。

  MODBUS命令和响应的格式是什么?

  单击此表中的链接,以查看请求和响应的示例。

  什么是数据类型?

  FC03的示例显示寄存器40108包含AE41,该AE41转换为16位1010 1110 0100 0001。但是这是什么意思?好吧,这可能意味着几件事。

  寄存器40108可以定义为以下16位数据类型中的任何一种:

  甲16位无符号整数(0到65535之间的整数)

  寄存器40108包含AE41 = 44609(十六进制到十进制的转换)

  一个16位带符号整数(-32768和32767之间的整数)

  AE41 = -20,927(十六进制到十进制转换,如果超过32767,则减去65536)

  甲两种字符的ASCII字符串(2名键入的字母)

  AE41 =®甲

  甲开/关值的离散(在此工作方式相同的16位整数0或1。十六进制数据的值将是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

  这是一个用于输入4个字节或2个字的电子表格。http://www.simplymodbus.ca/ieeefloats.xls。要下载副本,请右键单击并选择目标另存为...。

  一个四个字符的ASCII字符串(4名键入的字母)

  AE41 5652 =®AVR

  可以组合更多寄存器以形成更长的ASCII字符串。每个寄存器用于存储两个ASCII字符(两个字节)。

  什么是字节和单词排序?

  Modbus规范没有确切定义数据如何存储在寄存器中。因此,一些制造商在其设备中实施了Modbus,以便先存储和传输较高的字节,然后再存储较低的字节。(AE在41之前)。或者,其他人先存储并发送低位字节(AE之前为41)。

  同样,当将寄存器组合起来以表示32位数据类型时,某些设备将高16位(高位字)存储在第一个寄存器中,将其余的低位字存储在第二个寄存器中(5652之前的AE41),而其他设备则相反(前5652) AE41)。

  只要接收设备知道期望哪种方式,发送字节或字的顺序就无关紧要。例如,如果将数字29,235,175,522作为32位无符号整数发送,则可以采用以下四种方式中的任何一种进行排列。

  AE41 5652高字节首位高位字首

  5652

  AE41 高字节首位低位字首41AE 5256低字节首位高位首字

  5256 41AE低字节首位低位首

  什么是MODBUS映射?

  Modbus映射只是单个从设备的列表,它定义了:

  数据是什么(例如压力或温度读数)

  数据的存储位置(哪些表和数据地址)

  数据的存储方式(数据类型,字节和单词顺序)

  某些设备内置有制造商定义的固定映射。而其他设备则允许操作员配置或编程自定义地图以满足他们的需求。

  什么是扩展寄存器地址?

  由于模拟输出保持寄存器的范围是40001至49999,这意味着不能超过9999个寄存器。尽管这对于大多数应用程序通常已足够,但在某些情况下,更多寄存器将是有益的。

  寄存器40001至49999对应于数据地址0000至270E。如果我们利用剩余的数据地址270F到FFFF,则可用寄存器的数量是可用寄存器的六倍,总计65536。这将对应于从40001到105536的寄存器号。

  许多Modbus软件驱动程序(用于Master PC)的写入限制为40001至49999,并且无法访问从设备中的扩展寄存器。而且许多从设备不支持使用扩展寄存器的映射。但是另一方面,某些从设备确实支持这些寄存器,并且某些主软件可以访问它们,特别是如果编写了定制软件。

  2字节从机寻址如何工作?

  由于通常使用一个字节来定义从站地址,并且网络上的每个从站都需要一个唯一的地址,因此网络上的从站数量限制为256。modbus规范中定义的限制甚至更低,为247。

  要超出此限制,可以对协议进行修改,以使用两个字节作为地址。主机和从机都需要支持此修改。两字节寻址将网络中从站数量的限制扩展到65535。

  默认情况下,Simply Modbus软件使用1字节寻址。当输入的地址大于255时,软件将自动切换到2字节寻址,并针对所有地址保持此模式,直到手动关闭2字节寻址为止。

TAG MODBUS
更多信息请关注 深圳锐特步进电机 http://www.szruitech.com/
上一篇:Modbus RTU与Modbus TCP/IP的区别   下一篇:PLC控制伺服电机采用脉冲方式

自动化领域,锐特机电为您选择合适的步进电机产品