当前位置:首页 >> 信息与通信 >>

基于ProfiBus_DP的物流生产线网络监控系统设计与实现_图文

基于Pro?Bus-DP的物流生产线网络监控 系统设计与实现
Design and implementation of logistics production line network monitoring system based on ProfiBus-DP 闫晓玲1,王望龙2,范晓志1 YAN Xiao-ling1, WANG Wang-long2, FAN Xiao-zhi1
(1. 北京工商大学 机械工程学院,北京 102488;2. 中国人民解放军装甲兵工程学院 装备再制造工程系,北京 100072) 摘? 要:? 介绍了由工控机、PLC、高性能运动控制器构成的基于ProfiBus-DP协议的分布式网络监控 系统,着重阐述了系统的硬件连接、通信协议和利用VB实现物流生产线终端控制计算机与现 场各设备通信的方法,并给出了详细的程序设计过程。该系统对于用计算机实现集中监控多 个现场设备提供了可靠的手段。 关键词:? ProfiBus-DP;网络监控;通信;程序设计 中图分类号:TP273.5   文献标识码:A   文章编号:1009-0134(2011)1(上)-0011-04 Doi: 10.3969/j.issn.1009-0134.2011.1(上).03

0 引言

终端控制计算机

随着计算机技术、自动 CP5613 ProfiBus-DP总线 控制技术、网络通信技术的 发展,各种分布式控制系统 网络协议转换器 EM277PROFIBUS-DP+CP5613 CP5613 CP5613 在工业生产中应用越来越广 高性能运动控制器 机器人 高性能运动控制器 S7-200PLC 泛。本文所介绍的物流生产 自动化立体仓库 混合式流水线 激光雕刻机 线(深圳某企业生产) ,现场 各设备单机配有自己的控制 图1 系统的硬件构成 系统、相关的控制卡,终端 Pro?bus-DP 现场总线协议,Pro?bus-DP 是由西门 配有终端协调控制机,生产线中相关的硬件设备 子公司推出的一种开放式现场总线标准,用于现 通过 Pro?Bus 通讯模块连接在 Pro?Bus-DP 现场总 场级分布式自动化外设之间的高速数据传输。终端 线上(如图 1 所示) ,所以设计相应的控制软件, 控制计算机通过现场总线网卡 CP5613 连接在总线 分别运行在终端控制计算机和现场设备控制系统 上,自动化立体仓库和激光雕刻机通过高性能运 上,就可以实现对生产过程的集中监视管理和分 动控制器(工控机)+CP5613 连接在总线上,混 散控制。在这个系统中,现场各设备控制系统与 合式流水线通过 S7-200PLC+EM277 PROFIBUS - 底层设备的通信以及终端控制计算机与现场各设 DP 模块的 DP 端口同 CP5613 卡通过屏蔽双绞线 备控制系统的通信是至关重要的环节,为此,用 相连 , 构成整个 PROFIBUS - DP 现场总线网络。 VB 开发了本监控系统。 机器人具有 RS485 通讯接口,经过网络协议转换 1 系统的硬件构成 后就可以挂接到网络总线上,形成 1: 通信方式。 N 物流系统的硬件构成如图 1 所示,系统采用
收稿日期:2010-07-17 基金项目:北京市自然科学基金项目(4062011)。 作者简介:闫晓玲 (1974-),女,山西运城人,副教授,硕士,研究方向为先进制造技术及CAD/CAM。 第33卷? 第1期? 2011-1(上)? 【11】

2 网络监控系统的总体方案
网络监控系统分为服务器端(运行在终端控 制计算机上) 和客户端(运行在控制现场设备的工 控机上) ,此监控系统中,终端控制计算机的主要 任务是获取生产线上的信息,完成对生产过程的 实时显示,出现故障时及时报警,并采取应急措 施控制生产线的运行。现场设备控制系统的任务 是对生产过程进行自动控制,同时把设备的实时 状态通过网络传给终端控制计算机,发生故障时 按上位机命令执行 [1]。

初始化通信端口

WinSock(0)监听通信端口

有访问请求



是否为新客户


3 服务器端程序的设计
3.1 编程语言的选择 在 Windows 环境下,编写网络通信软件有多 种 编 程 语 言 可 以 使 用, 但 用 Visual Basic 编 写 通 信软件十分方便,编程工作量小,可视化程度高, 尤其是提供了通信控件 MSComm 和套接字控件 WinSock 可方便地实现计算机与 PLC 的数据通讯 以及不同计算机之间的网络通信。 3.2 服务器端程序设计 服务器端程要能够读取现场设备的信息和向 现场设备发送控制命令。现场设备可以分成两大 类,一类是由工控机控制的,一类是由 PLC 控制 的,所以服务器端程序要实现与客户端程序(运 行 在 控 制 现 场 设 备 的 工 控 机 上 )的 通 信, 程 序 设计流程图如图 2 所示,因为是 1 : 的通信方 N 式, 所 以 采 用 动 态 WinSock 控 件 数 组 来 实 现 通 信。WinSock 控件在计算机中提供了一个通信端 口,应用程序可以通过这个端口与任何一个具有 WinSock 接口的计算机通信。应用程序在网络上 传输、接收的信息都通过这个 WinSock 接口来实 现。另外服务器端程序还要实现与 PLC 的通信, 程序设计流程如图 3 所示,采用 MSComm 控件实 现通信 [2],MSComm 控件是 Microsoft 公司提供的 简化的 Windows 下串行通讯编程的 ActiveX 控件, 该通信控件提供了使用 RS232 开发串行通信软件 的细则,开发通信软件只需利用该控件的几个重 要属性设置好通信口(参见 3.3 程序代码) ,按照 通信协议,待 PC 机与 PLC 握手成功后,可按照 特定的数据格式通过 output 属性和 input 属性来送 和接收信息。 服务器端程序与 PLC 的通信实际上是计算机 与 PLC 的通信模块之间交换命令和响应,服务器
【12】? 第33卷? 第1期? 2011-1(上)

i=i+1;加载 WinSock(i) 控件,接受访问请求

使用原来的 WinSock(i) 控件,接受访问请求

通过 WinSock(i)发送、接收信息



程序结束 ?


关闭所有 WinSock 控件

图2

服务器端与客户端通信程序设计流程图

初始化同心端口

打开端口

向PLC发送信息

接收来自PLC的 现场设备信息
N

检查结果正确?

Y 通信有效

图3

服务器端与PLC通信程序设计流程

端程序具有初始传送优先权 , 所有的通信均由服 务器来启动,PLC 始终处于被动响应状态 [3]。S7200PLC 支持多种通讯模式,如点点接口(PPI) 、 MPI(多点接口) 等,自由通信方式,在自由口模 式下,可由用户控制串行通信接口,通信协议完全 由梯形图程序控制。本文主要讨论自由通信方式, 其关键指令格式如图 4 所示 [4]。
XMT EN TBL PORT ENO EN TBL PORT RCV ENO

字符数

起始字符

数据区

结束字符

图4

关键指令的格式

XMT 指令将指定存储区内的数据通过指定端 口传送出去,当存储区内最后一个字节传送完毕, PLC 将产生一个中断,命令格式为: XMT TABLE, PORT,其中 PORT 指定 PLC 用于发送的通信端 口,TABLE 为是数据存储区地址,其第一个字节 存放要传送的字节数,即数据长度,最大为 255。 RCV 命令从指定的端口读入数据存放在指定的 数据存储区内,当最后一个字节接收完毕,PLC 也 将 产 生 一 个 中 断, 命 令 格 式 为 RCV TABLE, PORT,PLC 通过 PORT 端口接收数据,并将数据 存放在 TBL 数据存储区内,TABLE 的第一个字节 为接收的字节数。 3.3 关键代码 1) 初始化代码,指定与客户端通信的协议端 口号并侦听该端口,初始化与 PLC 的通信端口。 Private sub Form_Load( ) Winsock1(0).LocalPort=1300 Winsock1(0).bind sckserver(0).LocalPort ‘与本 地端口绑定 winsock1(0).listen ’ 侦听 MSComm1. CommPort=1 ‘ 使用串行口 1 MSComm1. Settings=″9600,N,8,1″‘9600 波特率,无校验,8 位数据位,1 位停止位 MSComm1. InBufferCount=0 ‘ 清除接收缓冲区 MSComm1. InputLen=0 ‘ 输入时,读取缓冲区 的全部内容 MSComm1. Rthreshold=1 ‘ 每收到一个字符位

引发 oncomm 事件 MSComm1. PortOpen=True ‘ 打开通信端口 End sub 2) PLC 发送控制命令 [5] 向 Private Sub SendCmd(command as byte) ‘command 为具体的 PLC 操作指令 Dim 输出命令(1 To 1)As Byte DoEvents 输出命令(1)=command MSComm1. OutBufferCount=0 MSComm1. Output= 输出命令 MSComm1. InBufferCount=0 End Sub 3) 接收数据 PLC 只有在接收到上位机发送的信息后,才 发送数据,所以将发送完成后收到的第一个字节 作为接收报文的开始,直到串口无接收事件时认 为报文结束。 Dim rcv( ) as Byte Dim rcvlenth as integer Private Sub MSComml_OnComm() Dim rcvtemp( ) As Byte ‘数据的暂存数组 Dim i as Integer Redim Preserve rcv(100) As Byte‘预设接收字 符的数组 ( 最大 101 字节 ) Text1=” ” Select Case MSComml.CommEvent Case comEvReceive Rcvtemp=MSComml.Input i= MSComml.InputLen ReDim rcv(UBound(rcvtemp)+1) As Byte For i=LBound(rcvtemp) TO UBound(rcvtemp) rcvlenth=rcvlenth+1‘rcvlenth 为模块变量初始 值为 -1 rcv(rcvlenth)=rcvtemp(i) Next i ReDim Preserve rcv(rcvlenth) As Byte End Select For i=LBound(rcv) TO UBound(rcv) Text1=Text1&Str$(rcv(i)) Next i End Sub

第33卷? 第1期? 2011-1(上)? 【13】

4 客户端程序设计
客户端程序能够通过通信端口读取监控对象 的状态信息,并且能够把这些信息发送给服务器 程序,同时接收服务器程序发送的控制现场设备 的信息。客户端程序和服务器端程序采用 TCP/IP 通信协议,TCP 协议是面向连接的可靠的传输协 议,可确保物流生产线上数据传送的次序和传输 的可靠性。客户端程序与服务器端程序通信要处 理以下过程: 1)调用 WinSock 控件创建一个客户 端套节字,并连接到服务器端(必须和服务器端 的端口号一致) 2) ; 建立和服务器的连接; 发送 3) 和接收信息; 4)最后关闭通信套接字。客户端程 序与底层设备通过串行端口进行通信,相应的程 序设计类似于服务器端与 PLC 的通信程序,所以 不再赘述。

5 PLCT通信程序设计
5.1 信参数设置 为了使服务器与 PLC 建立起正确的通信,必 须预先在 PLC 中设置下述参数。 通 信 方 式: 在 特 殊 寄 存 器 SM0.7 中 设 置, SM0.7 为 0 时,模式开关处于 TERM 位置,SM0.7 为 1 时 , 模式开关处于 RUN 位置 , 而只有模式开 关处于 RUN 位置时 , 才能进行自由口通信。 通 信 参 数: SMB30 是 自 由 口 模 式 控 制 字 节, 设置的参数有数据长度、停止位位数、波特率、 校验形式和协议方式(要与计算机端口的参数相 同 )。设置好通信参数后,编写 PLC 通信梯形图 程序即可实现与服务器程序的通信。 5.2 PLC主要程序 主程序 LD SM0.7 OR SM0.1 CALL SBR_0 LDN SM0.7 EU

R SM30.0,1 DTCH 23 DTCH 9 DTCH 10 初始化子程序 LD SM0.1 MOVB 16#09,SMB30 MOVB 16#EC,SMB87 MOVB 16#0,SMB88 MOVB 16#FF,SMB89 MOVB +1000,SMW92 ‘接收超时时间 1S MOVB 200,SMB94 ‘最大 200 字符 ATCH INT_0,23 ATCH INT_1,9 ENI RCV VB100,0

6 结束语
分别将服务器端程序和客户端程序运行在终 端控制机和现场设备控制机上,实际情况表明, 该网络监控系统能方便地实现物流生产线上终端 控制机和多台现场设备间的联网通信,且运行稳 定可靠,能很好地满足对物流生产线进行集中监 视管理和分散控制的要求 , 具有一定的应用推广 价值。 参考文献:
[1] 华路光,方清城. 基于RS485总线的分布式PLC监控系统 通信设计[J].制造业自动化, 2009, 31(8):15. [2] 李长林.Visual Basic串行口通信技术与典型实例[M].北 京:清华大学出版社, 2006. [3] 田娟娟,蔡光起,史家顺,王晋生.基于VB的PC机与S7200PLC自由口通信的实现与应用[J].机械设计与制造. 2006.7:116. [4] 徐慧,卢艳军,主编. 数控机床电气及PLC控制技术[M]. 北京:国防工业出版社, 2006. [5] 李斌,赵海涛,王亚杰. S7- 200 与PC.实时通信方法的研 究[J]. 微计算机信息, 2007, 23(8-1):75.

【14】? 第33卷? 第1期? 2011-1(上)