技术频道

基于PLC自由口通信的应用

摘 要:介绍了在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可编程控制器系统手册.

文章版权归西部工控xbgk所有,未经许可不得转载。