1 引言W1WW_P4LCJS_COM-PLC-技.术_网
PLC即可编程控制器,是一种数字运算操作的电子系统,专门为工业环境下应用而设计,它既可以完成各种各样的控制功能,又可以与工控机或其他PLC(相同类型或不同类型)组成通信网络进行通信。但是由于市场上有很多种类型的PLC,对于不同型号的PLC来说,如果采用传统的程序设计方法(即结构化程序设计),笔者在做程序设计时就必须根据其型号做出相应的修改,有时甚至会面目全非,为了使应用软件能有良好的可重用性,可以采用面向对象的程序设计方法设计应用软件。本文是以“面向对象的程序设计”的思想为指导,以VB为基础实现上位计算机与可编程控制器(PLC)之间的通信功能。
WWW_PL※CJS_COM-PLC-技.术_网
2 面向对象的程序设计方法及问题的描述
WWW.PLCJS.COM——可编程控制器技术门户
面向对象的程序设计方法是把系统中所有资源,如数据、模块以及系统都看成对象,每个对象把一个数据类型和一组过程封装在一起,使得这组过程了解对这一数据类型的处理,并在定义对象时可以规定外界在其上的运行权限。WWW_P※LCJS_COM-PLC-)技.术_网
本工作采集的数据可以分为两类,一类是模拟量,包括各段线路上的三相电压值、电流值以及有功、无功、功率因数等;另外一类即开关量,包括断路器的分合闸状态、油机工作状态等。模拟量是由智能仪表采集然后通过PLC传到工控机中,开关量直接通过现场设备继电器动作反映到PLC中,然后送入工控机中。工控机对这些数据进行分析,分类记入数据库、实时显示在显示屏上并提供数据查询。这样由局部状态(即数据)和操作集(即对这些数据所进行的分析、记录和显示)就组成了一个实体,这个实体就是本次工作的对象。WWW_PL※CJS_COM-PLC-技.术_网
3 系统构成
WWW.PLCJS.COM——可编程控制器技术门户
本次数据采集系统由智能仪表、可编程控制器和工控机三部分组成,其系统框图如图1所示。在本系统中,PLC处于相对特殊的位置:对于上位工控机来说他是从机,对于智能仪表来说它又是主机,为了解决这一争用串口的矛盾,我们选择了S7-226,这种类型的PLC有两个串口,我们设置其中一个串口和上位工控机通信,另一串口与智能仪表交换数据。PLC与上位机串行通信接口采用RS-485,通信方式为半双工,不能同时接收和发送数据。当PLC运行时就可以存于PLC缓冲区中的数据送入上位机的串口,上位机接收这些数据后显示并通过数据库控件Adodc的绑定,把数据记录到数据库,从而完成数据的采集。 W1WW_P4LCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
图1 系统框图
WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
4 PLC与上位机通信程序设计plcjs.技.术_网
S7-200的通信功能强大,有多种通信方式可供用户选择,包括单主站方式、多主站方式、使用调制解调器的远程通信方式等。本工程选择STEP7-Micro/WIN32支持的通信硬件PC/PPI电缆,它所支持的波特率有9.6kbps和19.2kbps,协议为PPI协议,即点对点通信协议。PPI是主/从协议,计算机网络上的S7-200CPU均为从站。通信端口采用RS-485 信号标准的连接口,PC/PPI电缆把 S7-200与计算机连接起来。通过使用接收中断、发送中断和字符中断等指令,自由端口通信可以控制S7-200CPU通信口的操作模式。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
4.1 PLC通信参数初始化WWW_PLC※JS_COM-PmLC-技.术_网
本系统工作使用的是自由端口模式,允许在CPU处于RUN模式是串口0(或串口1)使用自由端口模式。通过设定SMB30(或SMB130)的值,可以选择波特率、奇偶校验、每个字符的数据位和协议。CPU处于STOP模式时,停止自由端口通信,串口强制转换成PPI协议模式,此时,就可以向CPU中输入PLC程序,实现编程软件对PLC的编程和控制功能。WWW_P※LCJS_CO※M-PLC-技-.术_网
4.2 上位工控机通信参数的初始化P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
上位机通信接口部分采用VB语言来编写,在VB中专门有一个控件Microsoft Comm Control(简称MSComm控件)用来提供串行通信。在编程过程中只要设置MSComm控件的属性就可以实现串行通信。在此控件众多的属性当中,需要重新定义的属性只有CommPort(传输数据的通信端口号)、Settings(设置数据传输的波特率、奇偶校验、数据位以及停止位,注意,此参数一定要与PLC通信程中设置的参数相一致)、PortOpen(设置通信端口的状态)、InputMode(读取接收缓冲区的格式)等。为减少丢失数据的现象,在程序初始化串口以后,程序为串口设立一个定时器,利用该定时器定时检查串口状态,如果有数据则开始接收处理,否则该定时器消息无处理。为避免出现在数据处理未结束时下一个定时器消息可能发生的现象,除了加大定时器间隔,我们把程序设置为在发现有数据时关闭定时器,在数据接受完再打开。WW.W_PLC※JS_C,OM-PL,C-技.术_网