modbustcp通讯协议是以太网协议吗?
ModBus是一种请求-应答协议,它采用了一个主从式的实现。在主仆关系中,交流通常是两两进行的。装置必须开始一个请求,并且等待一个响应,开始装置(主要装置)负责每一个相互作用的开始。一般情况下,主机是 HMI (Human Interface, HMI)或者 SCADA (Control and Data Digital Automatic Control, SCADA),从机是 PLC (Programmable Logic Control, PLC)或者 PAC (Programmable Automatic Control, PAC)。在不同的协议层中,要求与应答的内容与传送信息的网路层。
ModBus通讯协定是一种包含 RTU, ASCII, TCP的应用层报文传送协定。标准模块总线协议的物理层接口有RS232,RS485, Ethernet等。
乐发IX模块化的 RTU和 ASCII模块都采用了串口方式。其中,以二进制为代表的 ModbusRTU具有数据结构紧凑、通讯高效等优点,因而得到了广泛的应用。ModbusASCII通过 ASCII代码进行传送,并且在字节的开头和结尾都有特定的字符。它的传输效率比 ModbusRTU要低得多。ModBusTCP是一种 ModBus通讯,它在工业以太网路上的 TCP/IP网路上传送。ModBus资料传送为客户机与以太网 TCP/IP网路相连的伺服器提供了一种即时通讯。
2.Modbus协议层
在原方案中, MODBUS是一种以串口为基础的单一通信协议,无法进行分层。在此过程中,为了改变串行通讯所采用的报文格式,以及支持 TCP/IP与 UDP (User Datapacitation Protocol, UDP)等多种应用。这使得核心协议(digital protocol data, PDU)与网络层(application data unit, ADU)相分离。
ModBus 协议是一种与基础通讯层无关的简易协议数据单位(PDU).通过具体的总线或者网络的 ModBus协议图可以将一些额外的领域引入到应用数据单位(Application Data Unit, ADU)上。
协议数据单元(PDU)
PDU和它的处理程序组成了 ModBus应用程序协议的核心.在此基础上,给出了协议数据单元的格式,协议中所用到的数据概念,如何使用函数码来存取数据,并给出了函数码的实现方法和约束条件。modbusPDU格式是指函数编码,后面是一套相应的数据。资料的尺寸及内容是以函数码来规定的,并且所有的 PDU (函数码及资料)的尺寸不得大于253个字节。每一种函数编码都有一种具体的动作,这些动作可以通过从机来灵活地执行。
一般而言, MODBUS所能存取的资料储存在四种资料库中的一种:线圈状态,分立输入,保持寄存器,以及输入寄存器。这些资料库会定义所包含之资料的型别与存取。由于该装置在本机存放,因此可以从该装置直接存取该资料。取而代之的是, ModBus的宿主需要使用不同的函数代码来存取这个数据。每一个模块的表现如表1所示。
乐发IX应用数据单元(ADU)
许多网络协议都是可用的,而不只是 PDU内核所定义的那些功能。最常用的通讯协定是串口通讯、 TCP/IP通讯协定,但是其它通讯协定,例如 UDP,也可以被使用。为了在 MODBUS的各个层次间进行资料的传送, MODBUS含有一套适合每一网路协定的 ADU。
Adu有三个标准格式,即 TCP,远程终端单元(Telecommunicational-terminal unit, RTU)和 ASCII。传统的串行线一般采用 RTU、 ASCIIAdu等,传统的 TCP/IP、 UDP/IP等都采用了 TCP。
乐发IX3.Modbus数据帧结构
3.1ModbusRTU数据帧结构
ModbusRTU协议在主机查询中放置从装置(或广播)地址,定义所请求的动作的函数代码,待发送的数据,以及 CRC确认,从而建立一个查询信息;从机的应答信息包同样使用了 ModbusRTU的信息结构,其中包含了从机的地址,请求操作的函数代码,待发送的数据,以及 CRC检验;如果收到讯息时出现了一个错误,或是从机不能完成要求的动作,那么从机就会发出一个例外讯息来回应。ModbusRTU的数据框架是这样的:
modbus RTU通讯协议
ModbusRTU因其二进制表达方式、数据结构紧凑、通讯效率高而被广泛采用。
通讯传送模式:
通讯传送被分成两部分,分别是单独的报头和已编码的资料传送。还符合 ModbusRTU通讯协议的下列通讯传送模式定义:二位元组检错码。
通讯规约
将通讯指令发送给仪表后,与对应的通讯指令一致的仪表接受通讯指令,删除通讯指令,读出资讯,若无差错,仪表完成工作;然后向发送者返回执行结果。其中包含了地址码,操作函数码,操作后的结果资料,以及错误校验码。如果出错,就没有信息被发送。
位址代码
位址代码是讯息框架从0至255的第壹个字节(8比特)。这个位元组代表了使用者设定位址的从机,会从主机上接收到其所传送的资讯。每台从机都必须拥有唯壹的位址编码,而唯有符合位址编码的从机,才可以回应回路。在从属设备发送回来的信息中,一个等价的地址码表明了该信息的来源。
函数码
乐发IX由主设备发出的函数码,告知从设备将执行哪些工作。函数代码列在表4中,它们有具体的意义,也有具体的动作。
重置单片机
向单一寄存器中写入已设定的贰进制值
数据区
数据区中含有来自内部的返回信息,或者是来自内部的操作,或者是来自内部的。这个资讯可以是数字,参考位址等等。举例来说,若函数程式码指示从属程式读出该寄存器值,资料区段就必须包含该寄存器所要读出的开始位址及读出的长度。地址和数据信息因从机而异。
差错校验码
主从机可以通过校验码来确定所收到的消息是否有差错。在传递的过程中,可能会受到电子噪音等因素的影响而产生细微的变化。错误校正码保证了主机和从机在传送时不会出现错误。这使得整个系统更加安全,更加高效。利用CRC-16进行了误差检验。
注意:所有的信息框架都采用同样的格式:地址代码,功能代码,数据区域,错误检测代码。
与其它通讯协议相比, MODBUS的应用更为广泛,其主要理由有:
1) ModBus能够支持工业水利遥测终端机RTU乐发IX支持的RS-23285 (串行)等许多电子接口,并且能够通过双绞线,光纤,无线等不同的媒体进行通信。
乐发IX2)模总线框架结构简洁,容易理解,便于研制。
乐发IX3)具有良好的可靠性。ModBus协议要求对数据进行检查。在 ASCII方式和 RTU方式分别采用了 LRC和16比特的 CRC两种方式。另外, MODBUS系统还采用了主从式的定时收发方式。在实际应用中,若从站发生故障、停电等情况,则由主端来判断是否发生故障,并在故障排除后,再由主端自动恢复。