在modbus现场总线系统中,浮点数的数据传输一般有两种办法,一种是将浮点数按照量程映射到一个寄存器中(2个字节),例如0到65535对应0到100%,还有一种就是采用两个寄存器四个字节传输浮点数。
Modbus 是由 Modicon(现为施耐德电气公司的一个品牌)在 1979
年发明的一种工业控制总线协议,是全球第一个真正用于工业现场的总线协议。Modbus
以其简单、健壮、开放而且不需要特许授权的特点,成为通用通信协议。为了适应以太网环境,Modbus 被封装在 TCP 包中,并且在默认情况下通过 TCP 协议的
502 端口进行传输。
基于 Modbus
协议的系统由带智能终端的可编程逻辑控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件,又包括软件。可应用于各种数据采集和过程监控。
Modbus 协议采用主 - 从结构,为客户机和服务器之间提供通信连接。
Modbus 协议定义了一个与基础通信无关的协议数据单元(Protocol Description Unit,PDU),描述协议的基本功能。PDU
属于应用数据单元(Application Data Unit,ADU)的一部分,除此之外,ADU
还包括附加地址域和差错校验域及实际传输的数据,这个数据可能是业务数据,也可能是指令、响应信息或报警信息等。
Modbus 协议包括 ASCII、RTU、TCP 三种报文类型,可以使用串口传输数据和指令。
ModBus协议内容介绍
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项。所以设备都有RTU协议,ASCII协议很少,Modbus协议,只需要了解RTU协议,ASCII作为学习的了解就足够了。
ModBus协议最基本的通信单位是帧,整个ModBus帧又被称之为应用数据单元(ADU),ADU中又包含了协议数据单元(PDU)用于传真正需要传输的数据。Modbus协议帧从上图可以看出:
帧结构 = 地址域 + 功能码 + 数据 + 差错校验
地址域:
占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常地需要两个设备的地址一样才能进行查询和回复)。每个终端设备的地址是唯一的,如果查询某个终端设备,必须包含该设备的地址。终端回应也会包含该地址,通过该地址,主机知道哪个终端在与自己进行通信。
功能码:
常用的功能码有01、05、03、06、16。一般占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。常用的功能码是03和06。
数据:
通信的主要内容,可能是数值、参考地址或者极限值。可能是终端执行特定功能所需要的数据或者终端响应查询时采集到的数据,根据功能码不同,有不同结构。
差错校验:
为了保证数据不错误,增加这个,然后把前面的数据进行计算看数据是否一致,如果一致,就说明这个数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法。
modbus指Modbus通讯协议。
Modbus是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
通信协议
在计算机通信中,通信协议用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑之间的信息传递就无法识别。 通信协议是指通信各方事前约定的通信规则,可以简单地理解为各计算机之间进行相互会话所使用的共同语言。两台计算机在进行通信时,必须使用的通信协议。
要控制v00动作,您需要了解设备支持的Modbus地址和相关参数。一般情况下,设备的Modbus地址和参数信息可以通过设备的用户手册或者设备制造商提供的文档得到。
在了解了设备的Modbus地址和参数信息之后,您可以通过以下步骤来控制v00动作:
1 打开Modbus工具。例如,如您使用PC电脑,您可以下载和安装一个Modbus调试工具,例如QModMaster。
2 连接到您的设备并确定Modbus通讯协议版本。在QModMaster中,您需要在“Connection”菜单中设置IP地址和端口,并选择正确的Modbus协议版本。
3 配置Modbus参数。使用QModMaster等Modbus工具可以在“Function”菜单中选择“Write multiple coils”命令,然后在“Slave ID”地址节后输入设备的Modbus地址号,再在“Starting Address”处输入设备的相应Modbus地址,例如v00的地址。
4 设置控制值。在QModMaster中,您可以设置一个逻辑单元,例如在v00地址处写入值1来打开v00控制,或在v00地址处写入值0来关闭v00控制。
重要提示:在进行Modbus控制 *** 作之前,请确保您的设备已正确连接和配置,并清楚了解您的设备支持的Modbus地址和相应控制要求,以避免造成不必要的损失或危害。
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:
1、公开发表并且无版权要求
2、易于部署和维护
3、对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
扩展资料:
协议版本
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。
大多数Modbus设备通信通过串口EIA-485物理层进行。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。
Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。
RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。
它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。
限制
1、Modbus是在1970年末为可编程逻辑控制器通信开发的,这些有限的数据类型在那个时代是可以被PLC理解的,大型二进制对象数据是不支持的。
2、对节点而言,没有一个标准的方法找到数据对象的描述信息,举个例子,确定一个寄存器数据是否表示一个介于30-175度之间的温度。
3、由于Modbus是一个主/从协议,没有办法要求设备“报告异常”(构建在以太网的TCP/IP协议之上,被称为open-mbus除外)- 主节点必须循环的询问每个节点设备,并查找数据中的变化。在带宽可能比较宝贵的应用中,这种方式在应用中消耗带宽和网络时间,例如在低速率的无线链路上。
4、Modbus在一个数据链路上只能处理247个地址,这种情况限制了可以连接到主控站点的设备数量(再一次指出以太网TCP/IP除外)
5、Modbus传输在远端通讯设备之间缓冲数据的方式进行,有对通信一定是连续的限制,避免了传输中的缓冲区漏洞的问题
6、Modbus协议自身提供针对未经授权的命令或截取数据没有安全性。
参考资料:
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。
大多数Modbus设备通信通过串口EIA-485物理层进行。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。
关于什么是标准MODBUS协议,可以百度MODBUS协议的标准,这个中国是有国标的,符合这个标准的就是标准MODBUS。
其实严格说起来,并不存在所谓的标准MODBUS协议,谈到MODBUS就应该是标准的,不标准的,就不是MODBUS,倒是有不完全符合标准的MODBUS这种说法,有点绕,呵呵。两个方面,虽然MODBUS是一个很简单的协议,但协议文本并不是事无巨细的都做了规定,比如32位的浮点数,到底是高位在前还是低位在前,这个就没有个明确的规定,大家各行其事,无所谓谁准谁不准。另一方面,MODBUS有许多命令或者说功能,通常需要用到的只有很少的部分,没有用到的功能,或者说不支持的命令,按协议约定应该有必要的异常响应,但很多设备简化了,只支持自己用到的命令,没用到的命令就不预理会,按协议约定来说,这是不标准的,但如果通讯双方,大家都对这部分命令不预理会,那就不会问题。
回答你关心的问题,什么叫需要转换成标准的MODBUS,这是因为有些PLC或者设备根本不支持MODBUS,比如S7-300的CPU就不支持MODBUS,但可以用网关把MODBUS转换成ProfiBus,这样一来,S7-300也就可以访问MODBUS站点了,换个说法,S7-300的ProfiBUS通过网关转换成了标准的MODBUS。其实那有什么标准的MODBUS,就是一个ProfiBUS转MODBUS的网关。同理,如果设备不支持MODBUS,也可以用网关来转换,比如TCP转MODBUS的网关。
另外说一句,TCP转MODBUS 和 TCP的MODBUS 不是一回事。
与PLC通讯的意思,一般是指可以使用PLC的组态软件。
符合MODBUS标准的设备,设备厂家会提供一个地址表,用这个地址表在PLC组态软件上组态就可以了。
用组态软件处理设备的数据,可以不用了解一些通讯的底层的细节,知道某个数据存放在哪个地址就可以处理。当然,底层的细节不用了解,MODBUS的一些相关设置还是要知道,比如通讯协议是RS485,通讯速度9600,偶校验,,,这些设置有些可以在设备上进行跳线选择,具体看厂家说明书。
以上就是关于关于modbus通讯协议的四字节浮点数算法的问题全部的内容,包括:关于modbus通讯协议的四字节浮点数算法的问题、什么是modbus协议、什么是ModBus通讯协议等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)