新闻
6SL3220-1YE12-0UF0现货西门子代理
2024-05-16 03:23  浏览:6
6SL3220-1YE12-0UF0现货西门子代理西门子S7-1500PLC编程学习之ModBus协议数据


      学习任何一门技术,都是在使用过程中不断开拓、不断积累、不断前进的。当我们的工作或者学习没有涉及到某个点时,那么这个点就是我们的盲点。但是我们也没有必要去学习一些我们一辈子都不可能会用到的东西,至少不需要深入去研究。



       近在做一个S7-1500和第三方设备的ModBus TCP通讯,所以就借此好好研究一下ModBus通讯。本篇文章主要讲一下ModBus协议中数据编码、数据模型和地址模型。        先说说数据编码,也就是多字节数据在存储器中的存放顺序。ModBus使用大端序对数据进行存储,如下图低地址端存放高位字节。只有当我们知道了数据的存储顺序,才能在接收到数据后正确处理使用数据。




        说完数据编码,接下来说一下数据模型。那么什么是数据模型呢?从角度讲,数据模型是对传输数据的特征的一种抽象。简单来说,数据模型就是数据在传输过程中的表达形式。         ModBus协议根据数据的一系列特征,定义了四种基本数据模型。



      相信很多人看到数据区块中的离散量、线圈和寄存器,就会很疑惑为什么这么称呼呢。在这里有必要解释一下,ModBus协议早应用在工业控制领域,尤其是PLC使用多,而且涉及的控制对象很多是开关、指示灯、信号灯等等,为了控制和表示这些对象,所以专门抽象出来一些数据类型来进行表示。

      离散量输入相当于PLC的数字量输入点DI,只能读取不能写入,属于布尔类型。它可以表示控制现场中的信号灯的状态。

      线圈相当于PLC的数字量输出点DO,可读可写,还是布尔类型,它可以表示控制现场的开关,1表示打开,0表示关闭。控制开关的开闭可以这么表示,同样的读取回来的值也可以表示开关的开闭状态。

       输入寄存器相当于PLC的模拟量输入AI,占有两个字节的数据量,只能读取,不支持写入。

       保持寄存器相当于PLC的内部存储器MW或者数据块DBW,也是占用两个字节的数据量,可读可写。

        特别注意:在访问数据的过程中,必须将数据映射到实际的物理存储区中。ModBus协议定义了两种在设备中构造数据的方法。


将四种数据映射到不同的存储区块中


将四种数据映射到同一个的存储区块中

        后再说说地址模型。地址模型就是将不同数据区块用编号来表示,进行区分。


           ModBus地址模型的编号从1开始。由于每一种数据模型大支持65536个数据,所以理论上对于线圈数据来说,地址范围为:000001-065536;离散量输入地址范围为:100001-165536;输入寄存器数据地址范围为:300001-365536;保持寄存器数据地址范围为:400001-465536.但是由于65536比较大,实际应用一般不会使用到这么大的存储区,所以PLC厂家普遍采用的是10000以内的地址范围,也即是:

线圈地址范围:00001~09999;离散量输入地址范围:10001~19999;输入寄存器地址范围:30001~39999;保持寄存器地址范围:40001~49999。

         有了该地址模型,我们就可以从Modbus寄存器的地址判断所要访问的区块的类型。比如我们经常会看到的地址40001就是保持存储器的个值的地址,而10001就是离散量输入的个值的地址。要注意的是,保持寄存器和输入寄存器的每个值的大小为16bits(字),而线圈和离散量输入每个值的大小为1bit(位)。

         以下是以西门子1500系列PLC为例,Modbus地址与存储器地址的对应关系:


        知道了数据模型和地址模型后,编程过程中就能正确得调用处理数据了


相关新闻
联系方式
公司:湖南西控自动化设备有限公司
姓名:徐嘉泉(先生)
职位:经理
手机:17838383235
地区:湖南-长沙
地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
QQ:3305575995
微信:17838383235
17838383235 请卖家联系我
拨打电话
微信咨询
请卖家联系我