摘要】介绍了在VB6.0 环境下PC机与S7—200PLC自由口通信的实现方法,并结合安全阀气密性检测控制系统的开发实例,分析了VB与PLC通信的关键技术,同时对通信中重点部分作了简要说明。
关键词:VB6.0;PLC;自由口模式;Mscomm
【Abstract】The communication between PC and S7 - 200PLC under freeport mode based on VB6.0 is introduced in this. The key techniques of communication between VB and PLC are analyzed with gas leak test system for butterfly valve for an Optical experiment table,and brief explanations of important part in communication are also added.
Key words: VB6. 0;PLC;Freeport model; Mscomm
引言
随着可编程控制器(PLC)技术的迅速发展,PLC在我国各个工业控制领域中得到了越来越广泛的应用。而西门子公司生产的S7-200系列小型PLC,以其功能强人,使用稳定且性价比高而在中国市场上占有很重要的地位,其内部集成的通信接口为用户提供了强大的通信功能,根据不同的协议通过接口使得PLC可与不同的设备进行通信并组成网络,实现数据传送及控制等功能。S7-200系列PLC支持自由口协议,它为用户在使用时,提供了很多方便之处。本文主要研究的是在VB6.0环境下S7- 200PLC与PC机自由口通信的实现,并结合安全阀检测控制系统的开发实例加以说明。
1.系统硬件组成
图1蝶阀监测系统原理示意图
系统主要由工控机、PLC、打印机和电气控制柜等组成,如图1所示。为了提高控制系统的可靠性与灵活性,系统采用PLC可编程逻辑控制器。PLC选型为SIEMENS公司的S7-200系列PLC,中央处理单元为西门子公司推出的PLC采用S7-200系列CPU226,该CPU在本机体中集成了2个RS-485通讯口,其性价比高,满足本系统的所有要求。
使用485总线的一端连接PLC的通讯口PORT1,另一端通过RS-485/232电平转换器连接至PC机的RS-232串口,实现PC机向PLC发送命令帧、并接收PLC响应帧。
系统共有6个台位,共有12个传感器,其开关量控制点数有限所以需要扩展模块EM221和EM231。
2.控制的内容和要求
系统采用集散控制,工控机为上位机主要负责监控和管理功能:如数据的处理、与PLC通讯、误差修正等。PLC为下位机也是控制的核心,通过RS485接口与工控机相连。把发送信息输入到上位机,上位机向PLC发送发放的数据和指令。PLC接受上位机的信息并响应,实时控制电磁阀的打开合关闭,实时采集监测压力,并把每一路状态的相关数据反馈到上位机,由管理程序生成数据库,可对数据进行统计、报表、打印等。
本控制系统设计任务需要实现以下目标:
(1)可以监控蝶阀腔体内压力的变化,可以人工设定并自动控腔内压力值。
(2)可以通过自动方式和手动方式控制该系统。
(3)现场显示界面显示的内容主要包括:当压力值、当前的检测状态、实时故障报警和历史故障报警等。
(4)通讯采用RS-485总线通讯方式,使PLC与远程PC机联系,实现通过PC机控制电磁阀的开关,来压力大小目的。PC机同时与其他系统发生联系,进而使工厂整个生产过程构成了一个有机的整体。
3 PC机与PLC通信基础
3.1PLC自由口通信命令
所谓自由口通信模式即Freeport模式,它是建立在RS一485硬件基础上的一种通讯方式,它允许用户自己定义一些简单、基本的通讯协议设置,如数据长度、奇偶校验等等,通讯功能完全由用户程序控制[1]。自由口模式使用的相关的命令为XMT和RCV命令[2],分别用于发送和接收数据。这两个命令都对应各自的一个数据缓冲区,该缓冲区可以由用户在编程中决定,如VB100,即为从VBl00 起始的一块数据存储区。其中,XMT的缓冲区格式如图2
图2 RCV 的缓冲区格式为
但应当注意的是,自由口协议必须在PLC处于RUN 模式下才有效,如果处于STOP 模式下PLC会自动的回到PPI模式(前提是使用PPI模式) 。
3.2 Mscomm 控件
为了实现PC 机与下位机PLC 之间的通信,Windows 提供了Mscomm 控件以供用户使用。它封装了关于通信的相关内容,我们只需在Ⅷ平台中,设置其相关属性,并且对其的事什进行相应的编程即可使用。关于Mscomm 控件的一些重要属性见表1。
关于Mscomm控件的事件,只有一种,即OnComm事件,通信中只要有错误或事件发生时,就会产生OnComm事件,而CommEvent 属性传回不同的错误或事件:
对应的数码值,据此可对事件进行处理。在本文的通信过程中,主要用到的是ComEvReceive值。当接收缓冲区有数据时产生该值,然后对Input值进行相应的处理。
4.VB6.0平台PC机与PLC的通信
Microsoft公司生产的Visual Basic6.0是Windows 环境下的一种可视化编程语言开发系统,它以强大的图形设计能力,简易的编程语言和容易学习使用等优点在工程中得到了广泛的应用,我们正是使用它进行了与PLC 通讯的开发。
PLC I/O分配表见表2,只列出了4个台位的。,结合工程的实际,我们编制了相应的PLC 通信程序。由于篇幅有限,只列出部分程序。但在编程中需要注意的是,程序中与通讯有关的除了进行相关寄存器的设置之外,还应该对接受的命令进行判断,己选择运行相关的程序。另外,由于PLC 中的通讯口是RS—485通讯口,其为半双上通讯口,所以XMT 和RCV 命令不能同时运行。
PLC的中断程序
LDB= SMB86, 16#20
LPS
MOVB 10, SMB34
ATCH INT1, 10
AB= ‘K‘, VB301
AB= ‘C‘, VB302
AB= ‘0‘, VB303
S Q0.0, 1
LRD
AB= ‘G‘, VB301
AB= ‘C‘, VB302
AB= ‘0‘, VB303
R Q0.0, 1
LRD
AB= ‘K‘, VB301
AB= ‘P‘, VB302
AB= ‘0‘, VB303
S Q0.1, 1
LRD
AB= ‘G‘, VB301
AB= ‘P‘, VB302
AB= ‘0‘, VB303
R Q0.1, 1
LPP
NOT
RCV VB300, 0
5 VB通信程序设计
VisualBasic 开发包括界面的设计和程序的开发两部分。
5.1 人机界面设计
人机界面使用户与计算机之间的中介,是软件产品的窗口。人机界面首先考虑的是如何能更好的满足用户的使用要求和操作习惯。人机界面的设计要考虑界面功能的全面和操作的简便。最常用的功能要尽量安排在主界面中,如果有多个功能模块,可以将先对独立的模块用单独的界面表示,并与主界面双向连接。如图3
本系统界面包括状态的监控、身份登陆、参数设定、报表查询、打印、报警和事件显示。
图3 人机界面
安全阀气密性检测控制系统 ,VB通讯界面设计时, Mscomm 控件的重要属性设置为:
InputMode 属性:comlnputModeBinary,按二进制方式读取数据,因为从PLC 返回的数据中包括ASCII码值超过128 的字节。
Settings 属性:9600,n,8,1,选择9600bps波特率,不进行奇偶校验,8 位数据位,1位停止位,其设置要与PLC的设置一样,才能正常通信。
RThreshold 属性:1,当接收到1个字符时,引发OnComm事件的ComEvReceive 常数。
5.2 通信程序设计
VB通信中接收事件的程序清单如下
If MSComm1.CommEvent = comEvReceive Then
S1 = MSComm1.Input
If (S1 = Chr(&H1B)) And (Len(SCOMS) > 5) Then
SCOMS = ""
Else
If S1 <> Chr(&HD) Then
SCOMS = SCOMS & S1
Else
Call MYSAVE(SCOMS)
End If
End If
End If
VB通信中分配变量
SCOMS = Trim(SCOMS) ‘接收到20个字段
SCOMS = Right(SCOMS, 20)
vh5 = Trim(Mid(SCOMS, 8, 4)) ‘压力值的存放(字符串)
yld1 = CCLng(vh5)
vh6 = Trim(Mid(SCOMS, 12, 1)) ‘自动信号
zdd1 = vh6
vh7 = Trim(Mid(SCOMS, 13, 1)) ‘充气信号
cqd1 = CCLng(vh7)
vh8 = Trim(Mid(SCOMS, 14, 1)) ‘排气信号
结束语
在实际中采用自由口通信模式,运用VB6.0作为开发工具,方便的实现了S7—200PLC与上位PC 机间的通信,实现了对蝶阀气密检测的控制。经现场调试及运行表明,这是一种非常有效、可靠的通信方法,这种通信方法也可以应用于其它相关的通信场合,具有一定的普遍意义。