S7-200modbus从站协议攻略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、基础理论知识准备
MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
1、MODBUS从站协议的两种传输模式
MODBUS从站协议的传输模式包括传统的ASCII模式(大多数仪表设备使用)和RTU(远程终端)模式,在使用MODBUS协议时,主站和从站必须使用相同的传输模式和使用相同的波特率、校验方法。
MODBUS的ASCII传输模式
当控制器以ASCII 模式在Modbus 总线上进行通讯时,一个信息中的每8 位字节作为 2 个ASCII 字符传输的,这种模式的主要优点是允许字符之间的时间间隔长达IS,也不会出现错误。
2、ASCII模式通讯帧格式
在ASCII 模式中,以(:)号(ASCII3AH)表示信息开始,以回车一换行键(CRLF) (ASCII OD和OAH)表示信息结束。对其它的区,允许发送的字符为16 进制字符0-9,A-F。网络中设备连续检测并接收一个冒号(:)时,每台设备对地址区解码,找出要寻址的设备。字符之间的最大间隔为1S,若大于1S,则接收设备认为出现了一个错误。
典型的ASCII模式通讯帧的格式如下图所示:
3、RTU模式通讯帧格式
RTU 模式中,信息开始至少需要有 3.5 个字符的静止时间,各个区允许发送的字符均为 16进制的 0-9,A-F。网络上的设备连续监测网络上的信息,包括静止时间。当接收第一个地址数据时,每台设备立即对它解码,以决定是否是自己的地址。发送完最后一个字符号后,也有一个3.5个字符的静止时间,然后才能发送一个新的信息。
整个信息必须连续发送。如果在发送帧信息期间,出现大于1.5个字符的静止时间时,则接收设备刷新不完整的信息,并假设下一个地址数据。
同样一个信息后,立即发送的一个新信息,(若无 3。5 个字符的静止时间)这将会产生一个错误。是因为合并信息的 CRC 校验码无效而产生的错误。
RTU模式通讯帧格式如下:
4、功能码及其对应的请求帧和响应帧的格式
通过上面介绍ASCII模式通讯帧和RTU通讯帧的格式,我们可以看到,在通讯帧里面包括了一个功能码的问题,所谓功能码是指主站告诉从站执行何种功能,也就是说,相当于我告诉你,我将要干什么。
应帧是各不相同的,下面,将为大家详细讲解各个功能码对应的请求帧和响应帧的格式
功能1
功能1用来读单个或者多个数字量输出的ON/OFF状态。当利用功能1时,
响应帧的
功能2用于读当个或者多个开关量输入点的ON/OFF状态,请求帧格式和响应帧格式和功能相同。
功能3
功能3读取当个活多个保持寄存器(V存储区中的字)的内容,最多可以读120个字的数据。当利用功能3时,上位机(计算机)向PLC发送的通信请求帧
响应帧的
功能4用来读单个或者多个模拟量输入值,其请求帧和响应帧的格式与功能
3相同。
功能5
功能5用于将某一个开关量输出点(Q点)置位或者复位。当利用功能51
响应帧的格式和请求帧格式相同。
功能6
功能6用于将一个数据字写入V存储区,响应帧和请求帧格式相同:
功能15用于改写多个开关量输出点,采用功能15时,被改写的开关量的状态不是被强制的,用户可以再次用程序来修改这些点的值。采用功能15时,计
功能16用于写多个V存储区的字,一个请求帧最多可写120个字。该功能
二、编程实战篇(MODBUS RTU模式)
通过上面的理论知识的学习,相信大家已经对MODBUS从站协议有了一定的了解,下面我们就一起来学习一下怎样来编程实现VB(或者串口调试助手等软件)读取PLC内部存储单元的内容。闲话少说,VB通过MODBUS协议访问PLC的内部数据时,双方遵循的是MODBUS从站协议,上位机和下位机只需保持一致的通信数据格式,PLC利用库文件初始化端口0以后,计算机向PLC发送请求帧,再读取PLC返回回来的响应帧的数据即可。简而言之,两者的通信是一个握手的过程,下面先说一下S7-200 PLC MODBUS从站协议RTU传输模式通信的初始化。
S7-200PLC初始化MODBUS从站协议RTU传输模式时,可以利用Mcro/Win编程软件的库文件来实现,在每次上电前,调用库文件初始化程序,具体的程序见下面的程序截图和本文附录的程序。在这里需要说明的是,当PLC端口0初始化以后,PLC端口0是不能和装有编程软件的计算机连接的,所以在调试过程中,为了方便监视程序运行,建议大家选用224或者226的CPU。
Mro/WIN编程软件自带的MODBUS从站协议库文件只能支持RTU模式,不能用于ASCII 模式传输,这是大家应该特别注意的。该库文件说明如下:
在第一个循环周期内初始化Modbus从站协议
Mode: 模式选择,启动/停止MODBUS,1=启动;0=停止
Address: 从站地址,MODBUS从站地址,取值1~247
Baud: 波特率,可选1200,2400,4800,9600,19200,38400,57600,115200 Parity: 奇偶校验,0=无校验;1=奇校验;2=偶校验
Delay: 延时,附加字符间延时,缺省值为0
MaxIQ: 最大I/Q位,参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128
MaxAI: 最大AI字数,参与通信的最大AI通道数,可为16或32
MaxHold: 最大保持寄存器区,参与通信的V存储区字(VW)
HoldStart: 保持寄存器区起始地址,以&VBx指定(间接寻址方式)