You are on page 1of 4

70 Column 专栏 ■

智能制造

基于Modbus TCP实现S7-200
Smart与PC间的通信应用
Implementation of Communication Between S7-200 Smart and PC Based on Modbus TCP

★费森尤斯卡比华瑞制药有限公司 徐键

摘要:药品安全关乎大众的生命健康,产品状态的可控是药品质量管理 和质量风险评估。现由于其中两只电子盒读出故障,导
体系最基本的要求。本文通过深入分析S7-200 Smart PLC与PC机之 致生产出现偏差和无法控制产量平衡,我们在进行了充
间的Modbus TCP的通信协议和编程应用,实现了药品在不同生产环 分技术调研后对其进行了功能升级性改造,加入远程数
节下的产量数据采集和远程通信显示及数据后处理功能。
据采集和控制。由于玻璃瓶在传输带上前行受阻时产生
关键词:S7-200 Smart;Modbus TCP;VS2010C#
抖颤的情况,会导致常规计数器经常出现计数不准的状
Abstract: Drug safety is very important for people's life and health,
况,方案采用了S7-200 Smart PLC对光电感应脉冲滤
and the controllability of the product status is one of the most
basic requirement for drug quality management system. This 波后再触发现场计数器进行计数的方式,同时将分布于
article first analyzed the Modbus TCP communication protocol and 现场的四个计数值以Modbus RTU串口通信至PLC中,
programming application between S7-200 Smart PLC and PC, 再由PLC以Modbus TCP网络通讯的方式传输至远程
and then the drug data acquisition, remote communication display PC机进行显示和数据后处理。本文主要介绍PC机如何
and data post-processing within different production processes
以Modbus TCP的方式对Smart PLC中的数据进行读取
are realized.
和控制。计数网络示意图如图1所示。
Key words: S7-200 Smart; Modbus TCP; VS2010C#

1 引言

公司LVP大输液生产线正式投产至今已有十多年,
随着时间的推移,许多设备元器件出现老化问题,故障
问题频出,严重影响了产品的正常生产。现有灯检测区
域的检测线于1998年初从德国引进,在检测线上的进
瓶口、合格品出瓶口、废品出瓶口和贴签机出口分别安 图1 计数网络示意图
装有四个现场独立计数电子盒,方便生产人员核算产量
2017.10 AUTOMATION PANORAMA 71

2 基于Modbus/TCP协议的系统设计原理 表1 项目开发应用中常用的功能代码
功能名称 对象类型 访问类型 功能码
Modbus/TCP协议是运行在TCP/IP上的Modbus 离散量输入 位操作 读输入点 02
报文传输协议,通过该协议,控制器通过以太网和其他 离散量输出 位操作 写多个线圈 15

设备之间进行数据通信。Modbus/TCP相对比于传统 内部寄存器 16位操作 读多个寄存器 03


内部寄存器 16位操作 写多个寄存器 16
串行链路的Modbus,由于使用以太网TCP/IP数据链
内部寄存器 16位操作 写单个寄存器 06
路层的校验机制保证了数据的完整性,Modbus/TCP
模拟量输入 16位操作 读输入寄存器 04
报文中不再带有数据校验域,原报文中的从站地址也
被单元标识符所替代而加在Modbus/TCP应用协议的
3 S7-200 Smart PLC程序设计
报文头部分。Modbus/TCP是开放性协议,IANA(互
联网编号分配管理机构)给Modbus协议赋予TCP:
随着西门子STEP 7-Micro/WIN SMART V2.2软
502端口号,所有的Modbus请求通过TCP从寄存器端
件和S7-200 SMART CPU固件V2.2的发布,S7-200
口502发出。Modbus/TCP数据帧包含报文头、功能代
SMART CPU开始支持TCP等开放式用户通信。在
码和数据3个部分,功能代码和数据构成协议数据单元
STEP 7-Micro/WIN SMART V2.2版本软件安装
(PDU),报文头(MBAP)分4个域,共7个字节,
MB Server指令库后,S7-200 SMART CPU可以支持
由事务处理标识符(2个字节)、协议、协议标识符(2
Modbus TCP 服务器指令。
个字节)、长度字段(2个字节,后面余下域字节的数
MB Server指令库包含MBS Connect和MBS
量)和单元标识符(1个字节)组成,如图2所示。
Slave等2个指令。MBS Connect指令用于建立或断
开Modbus TCP连接;MBS Slave指令用于处理来自
Modbus TCP客户端的请求,并且该指令必须在每次
扫描时执行,以便检查和响应Modbus请求。每个MB
Server指令库只能创建一个Modbus TCP连接,如果
一个S7-200 SMART 需要连接多个Modbus TCP 客
户端,则需要购买多个名称不同的MB Server指令库
(例如MB_Server_0,MB_Server_1,MB_Server_2
等)。基于计数器系统未来可能接入公司OEE系统,我
们购买安装了可连接2个客户端的MB Server指令库。
根据现场计数器WPNF02的说明书通信功能指
图2 MODBUS TCP报文
导,在PLC中编写了Modbus RTU的相关程序代码,
Modbus协议定义了三种功能码,分别为:公共
循环按序与各个计数器进行通信,读取它们中的总计
功能码、用户自定义功能码和保留功能码,在常规客户
数值,并存入到指定的内部寄存器中(VD116、126、
机/服务器基于请求/响应机制进行Modbus/TCP通信
136、146),同时对各个计数器进行复位时通过PLC输
应用中,公共功能码已经满足绝大部分通信开发要求,
出触点进行硬件复位,PLC中触点输出由内部寄存器
它是被确切定义的、由Modbus.org认可、可进行一致
VW106进行控制。
性测试的唯一功能码。在项目开发应用中常用的功能代
在PLC主程序中调用MBS_Connect_0和MBS_
码如表1所示(十进制表示)。
Slave_0指令,如图3所示。
72 Column 专栏 ■
智能制造

4 VS-C#监控程序的设计

为能够实现对PLC中的计数值进行读取和复位操
作,选用VS2010-C#作为界面开发软件,该软件使用
封装的Windows Socket类来实现TCP/IP协议通信,
按如下步骤实现与S7-200 Smart PLC的通信:(1)用
Connect命令建立与PLC的连接;(2)准备Modbus
报文包括7个字节的MBAP在内的发送字节数组;
(3)用Send命令进行报文发送;(4)发送完毕后等
待PLC应答;(5)用Receive命令进行报文读取和分
图3 MB Server指令调用 析,完成一次读/写数据交换过程。当通信任务完成结
MBS Connect主要指令各个参数定义如下: 束后,关闭TCP/IP服务连接。
· Connect:启动TCP连接建立操作。 由于上位机远程软件只需对Smart PLC中的V区域
· Disconnect:断开TCP连接操作。 进行访问以获取所要信息,故分别编写定义了相应的子
· ConnID:TCP连接标识。 模块化函数来实现数据的通信读写操作,这样代码结构
· IPaddr1~IPaddr4:Modbus TCP 客户端的 清晰、便于维护和不同方式的调用。
IP地址,IPaddr1 是 IP 地址的最高有效字节,IPaddr4 4.1 数据读取代码函数
是IP地址的最低有效字节。如果不指定伙伴 IP ,则可 项目中要求读取PLC中4个计数值并在界面进行
以设置为0.0.0.0。 显示和处理,本部分以读取一个数值(内部寄存器
· LocPort:设备端口号,固定:502。 VD116)为例,子功能函数代码为:
· MaxHold:用于设置可访问的V存储器中的
字保持寄存器数,此项目设定值:1000。
· HoldStart:间接地址指针,指向V存储器中
保持寄存器的起始地址,此项目设定值:VB0。
· ConnectDone:Modbus TCP连接已经成功
建立。
MBS Slave主要指令各个参数定义如下:
· Done:当 MB_Server 指令响应 Modbus 请
求时,Done完成位在当前扫描周期被设置为1;如果未
处理任何请求,Done完成位为0 。
· Error:错误代码,只有在 Done 位为1时错
误代码有效。
MB Server指令库要占用 300个字节V存储区用于
库存储器地址分配。该库存储器分配地址不能与 MBS
Connect 指令参数 HoldStart指向的V存储器地址重
叠,也不能与其它程序使用的地址有重叠,该项目选择 软件对读取后的字节数组中相关的数据进行解析,
地址范围为:VB4100~VB4399。 获取出我们所要的VD116实际数值,主要代码为:
2017.10 AUTOMATION PANORAMA 73

5 结语

S7-200 Smart是国内广泛使用的S7-200的更新
4.2 数据写入代码函数
替代产品,本文以简单的项目案例对Modbus/TCP协
按照生产工艺要求,每批产品结束后,需要进行
议如何在Smart PLC与上位机之间进行可靠的数据传输
计数清零操作,本例对PLC内部寄存器VW106进行不
进行了实用性探讨与验证。Modbus/TCP通信在该项
同赋值,PLC代码根据其值输出相应的高电平触点信号
目系统上的成功实现,为Modbus/TCP协议在S7-200
对现场计数器进行清零操作,以设定VW106值等于1
Smart PLC系统上未来的推广应用具有重要意义。AP
为例,子功能函数为:

作者简介:
徐键(1981-),男,江苏南通人,工程师,本科,
现就职于费森尤斯卡比华瑞制药有限公司,主要研究
方向为设备自动化。

参考文献:
[1] 白焰, 钟艳辉, 秦宇飞. 基于VC的Modbus协议通信测试软件的实现[J]. 现代电力,2008, 25 ( 6 ) : 76 - 80.
[2] 袁文波, 洪波, 尤万方, 殷召生, 蒋彦, 温柳. S7-PLC基于Modbus/TCP协议通信研究[J]. 计算机工程与设计,2014, 35 ( 2 ) : 736 - 741.

You might also like