PLC串行通信在分布式监控系统中的应用_第1页
PLC串行通信在分布式监控系统中的应用_第2页
PLC串行通信在分布式监控系统中的应用_第3页
PLC串行通信在分布式监控系统中的应用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PLC串行通信在分布式监控系统中的应用 1 引言目前,plc作为一种成熟稳定可靠的控制器,已经在工业控制中得到了广泛的应用。在实际应用中通常采用以工业控制计算机和plc构成计算机监控系统。在这里,plc完成对系统的底层控制,即直接控制执行机构,实现数据采集,处理与控制;上位计算机则完成数据处理、信息管理等复杂的监控管理任务。通讯的实现就成为这种系统中的关键技术之一。本文以电厂输煤监控系统为例,介绍了串行通信技术在分布式监控系统中的应用。2 监控系统硬件构成某电厂输煤系统共有储煤圆筒仓6个,每个仓下面各对应着环式给煤机,犁煤机,变频器和皮带等设备,每个仓距离几十米。我们使用可编程控制器(omr

2、on c200h型plc)作为下位机负责对每台圆筒仓下的设备信号采集和控制命令的发送。由程序实现对设备启停的连锁控制,出现异常情况,如设备电流越限,给煤车挡板卡死等情况,能快速作出反应并报警。采用工业控制计算机(ipc)作为操作员站,实现对整个的监控和管理功能。plc之间以rs422方式组成网络,并和上位机之间采用hostlink方式连接。系统结构图如图1所示。每个圆筒仓下的设备使用一个c200h型plc对其进行控制,并配置一个com06通信模块。它能够为plc提供rs422/485方式的通讯。这样可以方便的将其联网。rs422采用平行发送接收方式,具有传输距离长,抗干扰能力强和多点通信能力,

3、最多可以连接32台plc。在plc和上位机之间使用一个rs422/232转换模块,将rs422信号转换为rs232信号,这里使用的是研华adam4520。这种网络通信方式经济实用,完全能满足生产运行的需要。3 系统软件开发及串行通信的实现上位机监控系统开发c+ builder6.0编程软件。c+builder是borland公司的产品,它采用面向对象的c+语言,实时性好,运算速度快,编程效率高,人机界面功能强大。近年来越来越多地应用于工业控制。plc与上位机的串行通信程序的编制是监控系统开发的关键部分。使用c+builder开发系统人机界面的部分较为容易,不是本文讨论的主要内容,在此不作详细叙

4、述。 3.1 plc的通信协议简介上位计算机和plc通讯使用的是上位链接通讯方式,所以我们要开发c+ builder与omron plc的串行通信,必须使用omron plc的上位机链接通信协议。上位机链接通信是通过在上位机和plc之间交换命令(command)和应答(response)帧实现的。在一次交换中从上位机传输至plc的命令称为命令帧,plc对命令帧的应答数据称为应答帧。每个帧以设备号和标题开始,以检验码fcs及结束符结束。一个命令帧最多可以包含131个数据字符,多于131个数据字符的数据要分成若干帧发送。从上位机发送一个命令帧时,命令格式如图2所示。符号必须置于每个命令的开头。节点

5、号用来辨识接收命令的plc,节点号在数据寄存区dm6558地址中设定。识别码是2个字符的命令代码,用来设置通信的功能。正文设置命令参数,包括要读写的plc寄存器单元的起始地址和字数。fcs是2个字符的帧检查顺序码,是检查前面数据的校验码,终止符以“*”和回车(chr$(13)两字符,表示命令结束。一些常用命令代码如rr表示读ir/sr区的值,rd表示读dm区的值,wd表示向dm区写数据。具体情况可参照相关操作手册。响应帧的格式与命令帧类似,在标志码后多了两位的结束代码。不同结束代码的值代表不同含义。查看结束码可以得知是否有错误发生以及发生错误的类型。正常情况下的结束码为00。表1为常见的结束代

6、码及其含义。帧顺序检查fcs在终止符之前,以检查传送时是否存在数据错误。fcs是一个转换成2个asc字符的8位数据。这8位数据为从帧开始到帧正文结束所有字符asc码执行“异或”操作的结果。每次接收到一帧,先要计算fcs,与帧中所包含的fcs作比较,就能检查数据传输的正确与否。例如:要读出01号plc的ir200里的数据,通过上位机可以发送格式为“01rr*”的命令帧。其中“41”即为计算所得的fcs。每一帧的fcs的可由上位机程序计算得到。3.2 c+ builder中串行通信的实现使用c+ builder开发串行通信程序有两种方法:一种是利用activex控件,c+builder本身并不提供

7、单独的串行通信控件,可以使用visual basic自带的mscomm32控件,在c+builder中注册它,c+ builder就可以调用了。另一种方法是利用windows api函数创建串行通信。 利用activex控件开发串行通信程序较为容易,很多文章都进行论述过,但是这种方法实时性较差。使用windows api函数开发串行通信程序虽然比较复杂,但是采用多线程技术,其准确性高,实时性好,适用于连续生产过程中通讯要求严格,实时性强,数据量大的场合。在本次系统开发中,经过综合考虑,我们选择了使用windows api函数开发串行通信程序。在开发过程中,我们使用了多线程,事件驱动的方式。通信

8、程序主要由两个线程组成,主线程负责接收用户输入,相应键盘鼠标,接收windows消息,以及向串口发送数据。另一个监视线程监视串口接收消息,并向主线程发送windows消息。通信过程如图3所示。使用过程中,首先使用一系列api函数初始化通信端口。这部分程序如下:char *comno;dcb dcb;string sendtemp;file:/取得要打开的通信端口sendtemp=“com” + inttostr(radiogroup1-itemindex +1);comno=sendtemp.c_str(); file:/字符串转换hcomm=createfile(comno,generic_

9、read|generic_write,0,null,open_existing,0,0);file:/使用createfile函数打开一个通信端口,打开的file:/端口视窗体上选择的而定。if (hcomm=invalid_handle_value)file:/如果串口未打开,报警消息。messagebox(0,“打开通信端口错误!”,“comm error”,mb_ok);return;getcommstate(hcomm,&dcb); file:/取目前串口状态file:/设置通信端口的状态dcb.baudrate =cbr_9600; file:/波特率设为9600dcb.bytesi

10、ze =7; file:/数据位7位dcb.parity =evenparity;/奇偶校验设为偶校验dcb.stopbits =twostopbits;/停止位设为2位 if(!setcommstate(hcomm,&dcb)messagebox(0,“通信端口设置错误!”,“set error”,mb_ok);return; 通信端口初始化成功后,主线程开始接收用户消息,监测用户输入,然后开始发送命令帧,发送完毕后将发送事件标记设为false,接收事件标记设为true。接收标记为true时,监视线程启动,使用readfile函数读取从plc返回的应答帧。如果没有错误而且校验帧fcs正确,则

11、使用一段翻译程序将应答帧中的plc信息翻译出来,例如某个dm区的值,存入内存变量中,即可以在监控画面上作出显示。然后主线程发送下一个命令帧,开始下一个循环。如果plc返回的应答帧错误,或者fcs不正确,那么监视线程将根据错误的类型,发送消息至主线程,通知主线程重发命令帧或者改变设置。主线程经过多次重发仍然出现错误,则发出相关报警信息,通知操作员进行处理。由于监视线程在接收消息状态下立即启动,且与主线程采用同步处理方式,只需要向主线程发送消息,因此循环时间短,提高了控制系统的实时性。在本系统中,例如要使用上位计算机控制plc关闭某个设备。主线程首先监测到鼠标点击开关事件,然后将这个操作事件翻译成相应的命令帧,通过串口发送此命令到对应的plc中,改变plc内存区的某个对应的值,进而改变plc的输出,关闭这个设备。同时监控画面可以显示出改变后的设备状态。4 结束语使用本文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论