本文转载自:
http://www.chuandong.com/publish/tech/application/2008/12/tech_3_16_12147.html
摘 要:介绍了在Visual Basic 6.0环境下工控机与S7-200PLC自由口通信的实现方法,并结合水位实时检测控制系统的开发实例,分析了Visual Basic 6.0与PLC通信的关键技术,该方法在几乎不增加设备开支的情况下实现了上位机与PLC的通信和监控。
关键词:PLC;通信;VB6.0;上位机
Application of Communication Based on PLC’s Freeport
GAO Lihua QI Xiangdong JIAO Fenjiao
Abstract:In this paper, the way of communication between industrial PC and S7-200 PLC is introduced. The key technology of the communication method is also analysed through an example of water-level real-time detection control system, the method realizes the communications and monitor between the upper computer and PLC without increase the equipment expense.
Key words: PLC;communication;vb6.0;upper computer
1 引言
在工业控制中,作为工厂自动化的三大支柱之一的可编程控制器 PLC(Programmable Logic Controller),由于其安全可靠、功能齐全、应用灵活、操作维修容易和稳定可靠等特点而得到广泛应用。但它无法实时显示各种控制图表,人机交互性差。为弥补这方面的不足,工业控制中一般与计算机组成控制系统,将PLC作为下位机使用。本文就此以 S7—200 PLC为例,通过 Visual Basic 6.0编程实现计算机作为上位机与 PLC的通信 ,完成工业流程和工艺参数的显示以及控制参数的修改等功能。
2 系统简介
本系统是一个水位实时检测和控制系统,整个系统分成2级;PLC控制级和上位机监控级。首先,通过 PLC 将水位传感器检测到的水位模拟量送至上位机进行显示;其次,上位机可发出起停泵、增减水位、手动自动切换等指令,并对上述指令信号动态采样,在上位机显示除了以上几部分外,系统还具备参数修改和报警、实时趋势显示、实时和历史数据报告等功能。
3 系统硬件组成
系统主要由工控机、PLC、水泵和电气控制柜等组成。其中工控机作为上位机,通过RS-232接口与下位机相连,主要负责监控和管理功能;下位机选用SIEMENS公司的S7-200系列PLC,中央处理模块采用S7-200系列CPU226,该CPU在本体中集成了2个RS-485通讯口,其性价比高,满足本系统的所有要求,由于水位传感器的模拟量信号,本系统还需要模拟量扩展模块EM235。
4 上位机与PLC通信
4.1 PLC自由口通信方式
工控机与 PLC通讯,工控机为 RS 232 串行接口,S7 - 200 为 RS 485 串行接口,他们之间不能直接相连使用,要实现 PLC 和 PC 之间的实时通讯,须进行电平转换,这种转换是通过带隔离型的 RS 232/485 转换器来实现的。工控机与PLC自由口通讯如图1所示。
图1 工控机与PLC自由口通讯示意图
本控制系统中采用了自由口通信方式实现与工控机的控制。自由口通信方式是 S7 - 200 PLC的一个很有特色的功能,他可以使通信的范围大大增加,使控制系统更加灵活、方便。通信协议完全由用户程序控制,通过设置特殊寄存器 SMB30,SMB86,SMB87,SMB94 等的控制字来确定通讯参数,通过使用接收中断、发送中断、发送指令和接收指令对通信口操作,通信协议完全可以由梯形图程序控制。本系统采用定时发送,通过中断查询的方式接收数据。PLC发送和接收的流程图如图2、图3所示。
图2 发送程序流程图
图3 接收程序流程图
4.2 MSComm控件
VB 6.0 是一个可视化的窗口开发环境,微软公司在VB 中提供了 MSComm 控件,该控件可以对串口状态、通信协议、数据的接收和发送进行设置。MSComm 的工作方式有两种,一是查询方式,二是事件驱动方式。并且MSComm 控件屏蔽了通讯过程中的底层操作,可以方便地实现 PC与 PLC之间的串行通讯。
MSComm 属性很多,实现通讯只要在程序中设置好几个重要的通讯属性即可,属性设置如表1。
表1 Mscomm控件属性
4.3 接口编程
在实施过程中,上位机与下位机之间要进行数据传输,本系统中,PLC要向上位机传输多个参数:1个水位传感器压力信号、2个报警信号及手动/自动状态信号等,同时要求上位机向PLC传送开关控制信号、压力设定值信号及调节参数,并把手动/自动状态命令送入PLC中,组成一个带上位机的PLC智能控制系统。系统界面如图4所示。这里应当注意的是,由于采用的通讯方式是半双工的RS-485通讯,所以发送和接收指令不能同时使用。
图4 系统界面
4.3.1 PLC部分程序
初始化:
NETWORK 1
LD SM0.0 //首次扫描
MOVB 16#05, SMB30 //初始化自由通信
NETWORK 2
MOVB 16#B0, SMB87 //初始化RCV信息控制字符
MOVB 16#0A, SMB89 //设定信息结束字符
MOVW +5, SMW90 //设置空闲线超时时间为5ms
MOVB 100, SMB94 //设置最大字符数为100
NETWORK 3
ATCH INT_0:INT0, 23 //接收完成事件连接到中断
ATCH INT_2:INT2, 9 //发送完成事件连接到中断
ENI //中断允许
RCV VB100, 0 //端口指向接收缓冲区VB100
中断程序INT_0 //接收完成中断
LDB= SMB86, 16#20 //接收状态显示接收到结束字符
MOVB 10, SMB34 //连接一个10ms的时基中断,触发发送
收到的信息字符
ATCH INT_1:INT1, 10
CRETI
NOT //接收未完成
RCV VB100, 0 //启动一个新的接收
中断程序INT_1 //定时中断
LD SM0.0
DTCH 10 //断开定时器中断
XMT VB100,0 //在端口0向用户回送信息
中断程序INT_2 //发送完成中断
LD SM0.0
RCV VB100, 0 //发送完成,允许另一个接收
4.3.2 VB部分通信程序
Private Sub MSComm1_OnComm()
Static SCOMS As String
Dim S1 As String
If MSComm1.CommEvent = comEvReceive Then ‘如果接收到字符
S1 = MSComm1.Input ‘把接收缓冲区内的数据赋值给临时变量"S1"
If (S1 = Chr(&H1B)) And (Len(SCOMS) > 3) Then ‘如果变量"S1"(接收缓冲区内的数据接收到起始字符‘&H1B‘,并且变量"SCOMS"中的字节数大于3),则
SCOMS = ""
Else
If S1 <> Chr(&HD) Then ‘如果变量"S1"没有接收到结束字符‘&H0D‘
SCOMS = SCOMS & S1
Else
Call mySave(SCOMS)
End If
End If
End If
End Sub
5 结束语
在工业控制过程中,常常需要PLC与其他设备的通讯,若采用厂方提供的复杂的通讯方式,必然会使系统的扩展性、灵活性和性价比大打折扣,在中小规模控制系统中采用自由口通讯,可以有效地解决以上问题。
参考文献
[1]范逸之.Visual Basic与RS-232串行通信控制.北京:清华大学出版社,2002.54-110. [2]王永华.现代电气控制及PLC应用技术[M].北京:航空航天大学出版社,2003.
[3]刘炳文. 精通Visual Basic6.0中文版[M].北京:电子工业出版社,1999.
[4]SIEMENS SIMATIC S7-200可编程控制器系统手册.
全部回复(1 )
只看楼主 我来说两句 抢板凳回复 举报