土木在线论坛 \ 电气工程 \ 工业自动化 \ [zt]基于PLC自由口通信的应用

[zt]基于PLC自由口通信的应用

发布于:2009-02-03 14:07:03 来自:电气工程/工业自动化 [复制转发]
本文转载自: 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可编程控制器系统手册.
  • chenlin0022
    chenlin0022 沙发
    看看,学习了.
    2010-11-02 21:59:02

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

工业自动化

返回版块

17.92 万条内容 · 367 人订阅

猜你喜欢

阅读下一篇

哪位大哥有s7v5.3_sp2中文版授权?

哪位大哥有s7v5.3_sp2中文版授权?能否给小弟一份,本人将不胜感激!!lyfwgj1982@sina.com

回帖成功

经验值 +10