深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石独立研发,自成一派!军工品质,稳如磐石!注:为非官方资料,若有错误,敬请以官方资料为准矩形PLC——国产PLC的优秀代表!深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石矩形PLC编程介绍之Modbus协议说明深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石目录1.Modbus协议的发展历史2.Modbus协议的报文帧格式3.Modbus协议的物理层实现4.矩形PLC的Modbus梯形图编程5.附例:矩形PLC与易能变频器通过Modbus通讯6.Modbus通讯调试工具深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石1、Modbus协议发展历史深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus协议发展历史Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。目前施耐德公司已将Modbus协议的所有权移交给IDA(分布式自动化接口)组织,在中国,Modbus已经成为国家标准GB/T19582-2008。据不完全统计:截止到2007年,Modbus的节点安装数量已经超过了1000万个。Modbus是工业领域通信协议的业界标准,是工业电子设备之间相当常用的连接方式。Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本,最常见的是RTU、ASCII、TCP三种版本。大多数Modbus设备通信,通过串口485物理层进行。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus协议特点ModBus网络为一主多从,仅唯一的设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备命令作出相应反应。A.只有一个主机,所有通信都由它发出。B.理论上,可支持247个之多的从设备,但使用数量因看实际情况来定。优点:(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。(2)Modbus只定义了命令报文结构,而不管它们是经过何种物理网络进行通信的,因而可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。(3)Modbus只描述了如下过程:主设备如何请求访问从设备、从设备如何回应主设备的请求、以及怎样侦测错误并记录。因而,Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石2、Modbus协议的报文帧格式深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus协议通讯过程示意图同一时刻,只能存在一对主从机进行数据传输通讯只能由主机发起,从机只能被动的响应主机的请求命令从站之间,不能通讯深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石一次典型的Modbus通讯示意图PLC为主站,变频器为5号从站。主PLC发出请求报文帧,5号从站(变频器)被动的发出响应报文帧注意:主站,不需要站地址,从站站地址:从1开始~247深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU报文帧格式从站地址:1~247读写线圈、保持寄存器等起始地址+长度+数据校验:CRC算法注意:报文帧中的数据,都是二进制格式深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU协议报文帧:站地址MODBUS-RTU协议的站地址,由8个二进制bit组成,占一个字节,指示出哪个从站,应去接收由主站所传送来的报文。每个从站必须指定一个唯一的站地址,而唯有报文地址与该从站的地址相同时,该从站才会响应主站的通信。从站站地址范围:1~247从站送出的响应报文中,含有从站自身的站地址,用来告诉主站,是哪一个从站正在和它通讯。广播报文的地址是零,所有的从站都将接收此报文的指令,但接收到报文的从站都不会应答主站。主站在通信中不需要站地址。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU协议报文帧:功能码功能码指示,被寻址到的从站应该做什么响应,占一个字节01读取一组逻辑线圈的当前状态,典型操作对象是(PLC的数字量输出)02读取一组开关输入的当前状态,(PLC的数字量输入)03读取一个或多个输出寄存器的二进制值,(PLC的模拟量输出)04读取一个或多个输入寄存器的二进制值,(PLC的模拟量输入)05改变一个逻辑线圈的当前状态,(PLC的数字量输出)06改变单个输出寄存器的二进制值,(PLC的模拟量输出)15改变多个连续线圈的开关状态,(PLC的数字量输出)16指定多个连续的输出寄存器的二进制值,(PLC的模拟量输出)以上功能码01~16都为十进制值,在RTU模式下,必须转化为二进制(十六进制)深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU协议报文帧:数据区报文为主站发给从站的命令时:包含从站欲执行特定功能时所需要的信息,比如起始地址、欲取得的数据多少等。报文为从站回给主站的响应时:包含从站被询问后所应答给主站的必要信息,比如返回数据的长度、具体的数据等。具体的数据区格式,每个功能码有所不同,请参考详细的《N80和PPC系列可编程控制器MODBUS通讯协议》。数据区传输的顺序:因为Modbus-Rtu协议为串口传输,每次只能传输一个字节(8bit),而寄存器为16bit,因此,有如下规则:同一个寄存器:高字节数据先被传输,低字节数据后被传输。寄存器之间,低地址寄存器先被传输,高地址寄存器后被传输。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU协议报文帧:校验RTU的错误校验采用“冗余循环码(CRC)”,包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只计算8位数据位,起始位及停止位、奇偶校验位都不参与CRC码计算。矩形PLC指令提供了一个功能块指令来计算循环冗余校验码,名称为CRC;CRC计算方法的高级语言(C/C#/VC/VB等)实现,请自行百度搜索。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-RTU报文帧传输顺序示意图如下所示:报文帧全为二进制编码,每次传输一个字节(8bit),请注意其传输先后顺序,均为『站地址-功能码-数据-校验』。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石3、Modbus协议的物理层实现深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus-Rtu的物理层实现标准的Modbus-Rtu,其物理层采用RS232、485等异步串行标准,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。常见设置是(1位起始位,8位数据位,1位停止位,偶校验)串口线路,每次传输一个字节(8bit)数据,加上1位起始位、1位停止位、1位奇偶位,共11位。1位起始位、1位停止位,及1位奇/偶校验位,是串口发送硬件加上去的,接收端硬件会自动解析,我们只要按设备说明书设置好即可,在编程里面不用关心其实现。通讯参数必须相同:同一串口连接的同一线路,所有设备,包括主站、从站,他们的波特率、停止位、校正位等等串口通讯参数,必须设置为相同值,才能正常通讯。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石Modbus协议物理连接层对照深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石RS-232与485的接线示意图232口,需要交叉连线,用于一对一传输场合。485口,接线是正接正,负接负,一个主站可以接多个从站。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石4、矩形PLC的Modbus梯形图编程当用VB、VC等编写上位机界面时,需要了解各个读写功能码的具体报文帧格式,请参考《N80和PPC系列可编程控制器MODBUS通讯协议》,这里不再深入研究。下面内容——矩形PLC的Modbus-Rtu梯形图编程。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石硬件连接一览图深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石矩形PLC的Modbus-rtu编程矩形PLC的Modbus-rtu通讯很简单方便,用户只要填写指令功能块相对应的参数即可,而不用关心01、03、16等各个功能码的报文帧格式、传送顺序、CRC校正等具体细节,省时省力,傻瓜式编程。N80系列小型PLC提供了以下两个Modbus功能块指令:SADDR—设置从站的站地址M_BUS—进行Modbus-RTU通讯深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石①设置从站的站地址——功能块名称:SADDR注意:矩形PLC为纵向扫描,SADDR应放到最右边,《帮助手册》里的示例是放在下面,有可能会导致通讯错误。红色框09925,上电初始化深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石②Modbus通讯功能块:M_Bus上节点:#0代表主站“读”,#1代表主站“写”中节点:代表当前要操作的从站站地址下节点:Modbus通讯参数设置区_首地址I1、I2、I3:选择当前接入的是PLC的哪个串口,含义见下一页矩形PLC的四路串口—引脚示意图:矩形PLC标配1路232、1路485,另外可定制扩展额外2路485。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石矩形PLC串口对应示意图串口‘1’RS232串口‘2’RS485串口‘3’RS485串口‘4’RS485引脚端口12R,3T,5GND端口22+,3-PIN端口26+,9-PIN端口16+,9-PINI1导通导通导通导通I2断开导通断开导通I3断开断开导通导通串口1串口2串口3串口4串口号与引脚的对应关系如左表,或参考上一页的示意图。注意:①这个对应关系是固定死了的,如M21Mad,只有2路485没有232,则它只有串口2、串口3,而没有串口1。②为了与电脑的串口com1、com2区分,一般直接称呼PLC串口为汉字串口,而不称呼为com口。M_Bus功能块输入控制与串口的对应示意图深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石M_BUS功能块的参数设置区参数设置区:共7个连续地址的寄存器,依次是:通讯是否正常状态的显示、主机变量类型、主机变量偏移量、从机数据类型、从机数据偏移量、所要传输的数据个数、通讯重试次数。如下图所示:注意:M_BUS的下节点,比如上图中的41021,是参数设置区的首地址,是反映通讯是否正常的状态寄存器,用户不应该修改它的值。它的值,通讯正常的时候应该是5(正在处理)和6(处理完成),其他数字都是不正常,具体含义可参看帮助手册。注意:矩形PLC为纵向扫描,M_BUS功能块应放到最右边,而不能放在下面,《帮助手册》里的示例是放在下面,有可能会导致通讯错误。深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石PLC地址和Modbus地址的转换矩形PLC变量地址:由5位十进制数字组成,如40187,可看成4'0187,即第187个4类型的变量。注意:矩形PLC的偏移量,都是从0001开始的。因此,矩形PLC变量地址,对应于M_Bus功能块通讯设置区的主站变量类型+主站数据偏移,如:下图中传送的主站变量的地址,应该是前两个寄存器的数值的组合:4'0789,而不是41022或41023.深圳市矩形科技有限公司独立研发自成一派军工品质稳如磐石PLC地址和Modbus地址的转换已知Modbus地址为1000H,则先化成十进制数得到4096,然后再加1得到4097,如上图所示。当然,也可以直接用十六进制数字再加1,1000H加1为1001H,则move#1001H到41025。Modbus地址:由4位十六进制数字组成,如1001H、2003H等,这4位