PLC串行通信在测控装置中的实现
2008-08-26
作者:黄天戍,吴少勇
摘 要: 介绍了HG-2003型温升测控装置" title="测控装置">测控装置的测控对象和结构设计。详细讨论了装置中所采用的西门子公司的S7-200型PLC和PC机之间串行通信" title="串行通信">串行通信程序的设计与实现,即S7-200梯形图通信程序设计与实现中的细节和难点。简要介绍了上位PC机通信程序的设计。该通信功能的实现确保了该装置结构简单、可靠性高、便于二次开发。
关键词: RS-232串行通信 可编程控制器 自由端口模式 数据缓冲区 PC/PPI电缆
HG-2003型温升测控装置是笔者与我国北方某科学研究院联合开发的一套专门用于高压晶闸管阀温升检测试验的测控装置。考虑到PLC及其网络已被公认为现代测控装置开发的几大支柱之一,而且从近几年的统计数字来看,PLC产品在世界范围内的产量、销量高居各测控器件榜首,因此笔者决定本测控系统的核心器件采用可编程控制器(PLC),其基本功能可通过软件编程实现。PLC的三大亮点是:(1)集电控、电传、电仪三电于一体;(2)网络的性能价格比高;(3)可靠性高。这些亮点就使得整个测控设备结构简单、可靠性高,同时也为实现系统控制功能的二次开发奠定了良好的技术基础。本文主要讨论设备中所采用的西门子公司的S7-200型PLC和PC机之间的串行通信问题。
1 温升测控系统整体介绍
1.1 HG—2003测控装置的测控对象及结构
先来介绍一下该温升试验测控装置的基本工作流程。10kV电源进线经过进线柜中的高压断路器CB和高压隔离开关" title="隔离开关">隔离开关柜中的隔离开关G(用于在设备检修或维护时形成一个明显的断点)后,加在10kV转换变压器T1上。该变压器将三相电转化为单相电。这主要是由于做实验时负载电流很大,如果使用三相电源,容易造成负荷电流的不平衡从而造成试验故障。在转换变压器的输出端(二次侧)连接单相温升试验变压器T2。该温升变压器的一次侧应加装用于无功功率补偿的电容柜,二次侧则通过有载分接开关直接连接试验品(即高压晶闸管阀)进行温升试验。
从基本工作流程不难知道测控装置的测控对象,本装置的具体测控对象如表1所示。
测控装置的物理结构分为两部分:操作控制台和试区控制箱。其中,试区控制箱即PLC控制箱被安装在试验区的隔离开关柜内。操作控制台即PC机人机界面操作台则安装在控制室内。由于二者之间相距约40m,所以采用PC/PPI电缆传输测控信号时需加装中继器。
1.2 HG—2003测控装置的基本功能
本测控系统的基本功能包括:开关分合控制指示功能;设备和试品的过流、过压、过热报警及保护功能;各种操作连锁功能,如电源开关柜内10kV电源断路器和隔离开关柜内的手动隔离开关、控制室门触点、试验大厅门触点间的连锁保护功能等,并设有相关的报警提示画面。这些功能可以避免操作顺序出错。
2 S7-200通信程序的设计与实现
2.1 PC机与S7-200的通信方式
西门子S7-200 PLC的通信功能较强,有多种通信方式可供用户选择,如:单主站方式、多主站方式以及使用调制解调器的远程通信方式等。在本测控装置中,笔者采用单主站方式。在运行Windows或Windows NT操作系统的个人计算机" title="个人计算机">个人计算机(PC机)上安装STEP 7-Micro/WIN 32编程软件后,PC机就可作为通信中的主站。它可与一个或多个从站相连,STEP 7-Micro/WIN 32每次和一个S7-200 CPU通信,但可以访问网络上的所有CPU。该通信方式的硬件配置为PLC到PC机通信口的电缆连接器,即带RS-232口的隔离型PC/PPI电缆,用五个DIP开关设置波特率和其它配置项。它支持的波特率为9.6kbps或19,2kbps,支持的协议为PPI协议。这里并没有使用PPI协议,而是使用PC/PPI电缆和自由端口通信功能来实现S7-200 CPU与PC机间的通信。自由端口模式是计算机或其它带有串行通信接口的设备与S7-200 CPU之间通信的一种廉价和灵活的方法。它以用户定义的通信协议为基础,通过使用相关的中断指令和专用的通信指令控制S7-200 CPU通信口的操作模式,实现与多种智能设备的连接。
具体地说,所谓自由通信端口" title="通信端口">通信端口模式是指CPU的串行通信接口可由用户程序控制的一种通信操作模式,其梯形图程序可以使用接收完成中断、字符接收中断、发送完成中断、发送指令(XMT)和接收指令(RCV)等控制通信过程。在该模式下,通信协议完全由用户程序控制。
CPU处于STOP模式时,自由通信端口模式被禁止,CPU重新建立使用其它协议的通信,例如与编程设备的通信。只有当CPU处于RUN 模式时,才能使用自由通信端口模式。通过将特殊寄存器字节SM30或SM130的协议选择域(mm)置1可以将通信端口设置为自由端口模式,处于该模式时不能与编程设备通信。
可以用反映CPU模块上的工作方式开关当前位置的特殊存储器位SM0.7来控制自由端口模式的进入。当SM0.7为1时,工作方式开关处于RUN位置,可选择自由端口模式;当SM0.7为0时,工作方式开关处于TERM位置,应选择PC/PPI协议模式,以便用于编程设备监视或控制CPU模块的操作。
2.2 自由端口模式下PLC串行通信程序的编程要点
计算机与可编程控制器通信时,为了避免通信中的各方争用通信线,一般采用主从工作方式,即计算机为主机,可编程控制器为从机;只有主机才有权主动发送请求报文,从机收到后返回响应报文。下面主要谈一谈编程过程中应注意的几个问题。
首先是电缆切换时间的处理。因为使用了PC/PPI电缆,所以在S7-200 CPU的用户程序中应考虑电缆的切换时间。S7-200 CPU接收到RS232设备的请求报文到它发送响应报文的延迟时间必须大于等于电缆的切换时间。波特率为9600bps和19200bps时,电缆的切换时间分别为2ms和1ms。在梯形图程序中可用定时中断实现切换延时。
其次就是通信可靠性的处理,校验码的采用是提高通信可靠性最常用的措施之一。用得较多的是异或校验,即将每一帧中的第一个字符(不包括起始字符)到该帧中正文的最后一个字符作异或运算,并将异或的结果(异或校验码)作为报文的一部分发送到接收端。接收方接收到数据后计算出所接收到的数据的异或校验码,再与发送方传过来的校验码比较,如果不同,可以判断通信有误。
最后需注意的是防止起始字符、结束字符与数据字符的混淆。因为报文的起始字符和结束字符只有8位,接收到的报文数据区内出现与起始字符或结束字符相同的数据字符的机率很大,这可能会引起字符混淆。可以在发送前对数据作某种处理,例如选择起始字符和结束字符为某些特殊的值,而将数据字符转化为BCD码或ASCII码后再发送,这样可以避免出现上述的情况,但是会增加编程的工作量和数据传送的时间。
2.3 通信程序中关键指令的使用与说明
发送指令XMT(Transmit)用于启动自由端口模式下数据缓冲区(TBL)数据的发送,指令格式如图1所示。通过指定的通信端口(PORT),将存储在数据缓冲区(TBL)中的信息发送。使ENO=0的错误条件:SM4.3(运行时间),0006(间接寻址),009(在端口0同时XMT/RCV),000B(在端口1同时XMT/RCV)。
XMT指令可以方便地发送1~255个字符,如果有中断程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,端口0会产生中断事件9,端口1会产生中断事件26。可以监视发送完成状态位SM4.5和SM4.6的变化,而不是用中断进行发送。数据缓冲区中的起始字符和结束字符是可选项,第一个字节的“字符数”是要发送的字节数,它本身并不发送出去。
接收指令RCV(Receive)可以方便地接收一个或多个字符,最多可接收255个字符。通过指定的通信端口(PORT),将接收信息存储在数据缓冲区(TBL)中。数据缓冲区中的第一个字节用来累计接收到的字节数,它本身不能接收到,起始字符和结束字符是可选项。如果有中断程序连接到接收结束事件上,在接收完最后一个字符时,端口0产生中断事件23,端口1产生中断事件24。
使ENO=0的错误条件:SM86.6和SM186.6(RCV参数错误),SM4.3(运行时间),0006(间接寻址),009(在端口0同时XMT/RCV),000B(在端口1同时XMT/RCV)。CPU不是在自由端口模式。
可以监视SM86.6或SM186.6的变化,而不是用中断进行报文接收。SM86.6或SM186.6为非零时,RCV指令未被激活或接收已经结束。正在接收报文时,它们为0。
当超时或校验错误时,要自动中止报文接收功能。必须为报文接收功能定义一个启动条件和一个结束条件。
RCV指令允许通过参数设定选择报文开始条件和报文结束条件,即设定特殊存储器字节SM86~SM94(用于端口0)和SM186~SM194(用于端口1)。
另外两个比较重要的指令是获取与设置通信口地址指令。获取通信口地址指令(GET ADDR指令)用来读取PORT指定的CPU口的站地址,并将数值放入ADDR指定的地址中。设置通信口地址指令(SET ADDR指令)用来将通信口(PORT)站地址设置为ADDR指定的数值。设置的新地址不能永久保存,断电后又上电,通信口地址将恢复为上次的地址值(用系统块下载的地址)。图2为使用RCV指令和接收完成中断接收数据的通信程序流程图。
3 计算机通信程序的设计与实现
3.1 Windows环境下的PC机通信程序
在Windows环境下,操作系统通过驱动程序控制各硬件资源,不允许用户像在DOS环境下那样直接对串口进行底层的操作。为此,Visual Basic提供了一个串行通信控件:MSComm控件。程序员只需设置和监视MSComm控件的属性和事件,就可以轻而易举地实现串行通信。
3.2 MSComm控件的属性
MSComm控件主要属性如下:(1)Comm Port:设置并返回通信端口号。(2)Settings:以字符的形式设置并返回波特率、奇偶校验位、数据位和停止位。其中字符n、o、e分别代表无校验、奇校验、偶校验。(3)Port Open:设置并返回通信端口状态。设置为Ture时,打开端口;设置为False时,关闭端口。另外,还有Input、Output、Input Mode、In Buffer Count等属性,这里不再一一介绍。
3.3 MSComm控件处理接收信息的方式
MSComm控件提供两种处理方式:(1)事件驱动方式:RTHreshold属性非0时,收到字符或传输线发生变化时就会产生串口事件On Comm。通过查询Comm Event属性可以捕获并处理这些通信事件。(2)查询方式:通过查询Input Buffer Count(接收缓冲区的字节数)属性值,处理接收到的信息。本装置中采用事件驱动方式。
用Visual Basic语言设计串行通信程序简单实用,关键是如何形成一个友好的用户界面。编程的细节这里不再详述。
随着工业PC机的推出,个人计算机在工业现场运行的可靠性问题也得到了解决。因此在各类测控设备中实现PLC和PC机间的串行通信有着重大的意义。这样一方面有助于将个人计算机开发成简易工作站或者工作终端,实现集中显示、集中报警功能;另一方面也可把个人计算机开发成PLC编程终端,通过编程器接口接入PLC网络,进行编程、调试及监控,并最终达到PLC测控设备结构简单、运行可靠、维护容易、便于二次开发的技术特点。
参考文献
1 廖常初. PLC编程及应用.北京:机械工业出版社,2002.9
2 邱公伟. 可编程控制器网络通信及应用. 北京:清华大学出版社, 2000.3
3 郭宗仁. 可编程控制器应用系统设计及通信网络技术.北京:人民邮电出版社,2002.9
4 SIMATIC S7-200 可编程控制器用户手册. 北京:西门子(中国)有限公司,2002