S7-200modbus从站协议攻略

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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指定(间接寻址方式)

相关文档
最新文档