摘要:针对控制系统中上位机与S7-200系列PLC通信的实际问题,总结了计算机与S7-200系列PLC的几种通信方法,介绍了基于VB6.0 的串行通信编程的ActiveX 控件MSComm。并给出了程序流程图,现场运行表明该方法组成灵活、实时性强、性能价格比高等优点。
关键词:可编程控制器;自由通信口;串行通信
引言
以PLC控制器为核心,上位计算机为实时监控体的控制系统已成为工业自动化PLC控制系统的一个发展方向。实现PLC 与PC通信的目的是为了向用户提供诸如工艺流程图显示、动态数据画面显示、报表显示等多种窗口技术,使PLC控制系统具有良好的人机界面。尽管各种PLC网络差异很大,通信机理却有同一性,表现在编写PLC通信程序、系统组态和系统配置方面。通过上位计算机对PLC数据的读写来控制生产现场数据的自动采集、传送以及生产调度的自动化和信
息化,其应用前景十分广阔。目前市场上通信组态软件价格昂贵。本文介绍一种基于VB 的PLC 与上位机之间实现通信的方法,该系统具有组成灵活、实时性强、性能价格比高等优点。
1. S7-200 PLC 与计算机数据通信方式
目前PLC和PC机的互联通信有以下几种:
(1)通过PLC开发商提供的系统协议和网络适配器,来实现PLC和PC机的互联通信。但是其通信协议不公开,互联通信必须使用开发商提供的上位机组态软件,并采用支持相应协议的外设,这种方式是PLC开发商为自己的产品量身制作的。这种方式其显示画面和功能往往难以满足用户的具体需要。
(2)使用目前通用的上位机组态软件,如Wincc等,来实现PLC和PC机的通信。组态软件功能强大、界面友好、开发简单等优点,但价格比较贵。组态软件本身并不具备直接访问PLC寄存器或其它智能仪表的功能,必须借助v0驱动程序来实现。但大多数情况下,vo驱动程序是与设备相关,因此组态软件的灵活性受到了限制。
(3) PLC厂商所提供的标准通信端口和由用户自定义的自由端口通信方式。这种方式不需要增加投资,具有较好的灵活性,特别适合小规模控制系统。
2. S7-200P LC与计算机的通信协议
S7-200支持多种通信协议(l),主要有以下几种。
2.1 点对点接口协议(PPI )
PPI是主/从协议,网络上的S7-200CPU均为从站,其它CPU,SIMATIC编程器为主站。
2.2 多点接口协议(MPI)
MPI是集成在西门子公司PLC、操作员界面和编程器上的集成通信接口,用于建立小型通信网络。
2.3 Profibus协议
该协议用于分布式U0设备(远程Uo)的高速通信。许多厂家生产类型众多的Profibus设备,如简单的输入/输出模块、电机控制器和PLC.
2.4 用户定义协议(自由端口模式)
自由端口模式是指PLC的CPU串行通信口可由用户程序控制。用户利用发/收中断,发/收指令实现与打印机、CRT条码阅读器等设备的数据通信。该方式为计算机或其它具备串行通信接口的设备与PLC之间提供了兼价的灵活的通信方式。
3. 通信编程
3.1 PLC通信编程
3.1.1自由端口的初始化
在自由通信模式下,通过设置特殊存储器SMB30端口0)来为自由端口通信选择波特率、奇偶校验和数据位。这些设定必须与PC机设定值相一致。格式如下:
PP为奇偶校验选择,d为数据位选择,bbb为波特率选择。
·00 为无校验,0为每个字符8位,000为38400baud,001为19200baud;
·01为偶校验,1为每个字符7位,010为9600baud,011为4800baud;
·10为无校验,100为24 00baud,101为12 00baud;
·11为奇检验,110为600baud,1 11为300baud;
RIM为协议选择:00为PPI协议,01为自由口协议,10为PPI/主站模式,11默认为PPI/从站模式。
3.1.2 S7-200PLC实时向上位机传递数据在大部分控制系统中,所有的控制信号为开关量,基于这一特点,系统状态的改变即为这些开关量状态的改变,因此可根据跟踪这些开关量信号的上升沿信号、下降沿信号的到来,作为系统状态改变的依据。通过对同一个开关量信号的上升沿、下降沿分别定义不同的16进制数的方式,来代表信号的产生和结束,当检测到这些信号产生时,便将这些数据存人指定的数据缓冲区的字节中,并通过COM口发至上位PC机,同时产生发送完成中断,PLC延迟等待接收来自上位机的应答信号,通过分析存储在接口字符缓冲器SMB2中的数据,判断是否需要重新发送。
下位机程序流程图如图1所示。
图1. 下位机程序流程图
3.2 上位机通信编程
在Windows环境下开发与工业PLC通信的软件,利用VB的通信控件MSComm控件编写软件程
序[X27,V B 也为这个控件提供了标准的事件处理函数,并通过设置一些属性对通信接口进行初始化,从而很容易实现串行通信。
3.2.1 MSComm控件的属性Commport设置或返回通信端口号。
格式为:MSComm. Commport [=PortNumber]。
Settings 以字符串形式设置或返回波特率、奇偶校验、数据位和停止位。
格式为:MSComm.se tting[=paraString ]。
PartOpen 设置并返回通信端口状态(打开或关闭)。在设计时无效。
格式为: MSComm.portOpen[ =TRUE/FALSE] 。
Input 返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。
格式为: MSComm.In put.
Inpuden 设置从串行端口读人的字符串长度。
格式为: MSComm.In puten[ =CharNumber]。
Rthreshold设置引发接收事件的字符数。
InBuferCount返回接收缓冲区中已接收的字符数。
格式为:MSComm.In BufferCount〔=0]。
Inputmode设置或返回Input属性取回的数据的类型。
格式为: MSComm.In putM ode【二ModeV alue]。
OnComm 事件,用来处理所有与通信相关的文件。
3.2.2 MSComm控件参数初始化程序
Private SubForm-Load( )
MSComml.Commport=1
MSComml.Settings=”96 00,n,8,1”
MSComml.Inpuden= 0
MSComml.InbuferSite=200
MSComml. OutBufersite=200
MSComml. Rthreshold=1
MSComm l.PortOpen=True
End Sub
通信初始化程序[3],首先选定串行口,设定波特率为9 600B/S,无奇偶校验,数据传输位为8位,一位停止位。InputLen二0表明输人时读取缓冲区的全部内容,根据发送和接收字符串的长度,设置输人、输出缓冲区大小;Rthreshold=1表明每接收一位字符,就引发OnComm接收事件。
3.2.3 上位机程序由上所述,设计上位机程序流程图如图2所示。
图2 上位机程序流程图
结论
本程序充分利用VB6.0,易学,高效和串行通信控件MSComm的功能强大,对于小型系统可以取代PLC监控组态软件降低系统的成本。本文设计的监控通信程序在实际的实验加热炉一年多的使用,表明程序稳定可靠,完全满足实时监控要求。使用VB6.0的MSComm控件构成的计算机对PLC的监控系统,对于近距离和采集速度要求不高的传输数据的现场控制来说是一种性价比很高的解决方案。
本文作者创新点: 介绍了采用VB6.0实现的S3-200系列PLC与上位计算机的串行通信程序的设计方法,并讨论了在程序设计中需要注意的问题。
|