配合饲料生产线远程监控系统的应用研究
2011-02-09王彩玲霍文颖王亭岭刘庆华
王彩玲 霍文颖 王亭岭 刘庆华
当今,人们对食品安全的要求越来越高,对畜产品的品质要求越来越严格,饲料标准也正处于逐步的修订之中。由于市场行为、地区差异、季节变化、原料储运方式的变化,原料数据也经常发生变化。因此,饲料配方的及时调整是保证配合饲料质量的前提。随着我国工业自动化的发展及劳动成本的提高,自动配料系统在饲料工业的应用越来越广泛。使用自动配料系统不仅能够保证称量精度,而且可以实现多批次、连续生产,既减轻了工人的劳动强度,又保证了产品的质量。目前我国饲料行业中自动配料系统主要有两大类:PC机+数据采集卡+配料搅龙点动配料方式;PC机+PLC控制方式[1]。第一种方式主要由计算机、数据采集卡、外围继电器、接触器等外围电路组成。控制形式简单,随机误差较大。由于这种形式为集中式控制,整体可靠性没有很大改善,且网络通信能力不足;第二种方式采用分布式控制集中式管理的形式,上位机采用工业PC机管理,下位机采用PLC控制。它结合了计算机高性能的优势和PLC高可靠性的特点,有效避免了计算机集中控制的缺陷[2]。本设计针对这种分布式控制集中式管理的形式,重点研究其网络通信能力,实现饲料配方的远程及时调整与现场设备的实时监控。
1 远程监控系统的构成
在配合饲料生产过程中,由PLC控制现场所有设备,PLC通过自由口与现场监控服务器(现场监控计算机或称上位机)进行通信。现场监控服务器实时监控PLC的运行状况,并在线记录生产数据,提供报警、数据汇总查询、文档打印等。远程监控客户端通过局域网远程监控现场服务器,实现生产配方的远程调整及生产过程的远程监控与管理。自动配料生产线远程监控系统结构如图1所示。
图1 自动配料生产线远程监控系统结构
图1中现场监控服务器运行的监控程序通过串口将生产配方数据下传到PLC CPU226,PLC根据配方参数及下料顺序,控制变频器启动配料搅龙工作,配料搅龙将各原料仓内原料按序分别不断推入配料秤内。安装于配料秤上的称重传感器将重量信号经A/D模块转换为数字信号送给PLC,并与事先存储的饲料配方值不断地进行比较,直到配方所要求的重量为止。然后打开秤斗门,将称好的原料放入混合机,同时投入配方所需其他精料,并启动定时,计算混合机内原料的混合时间。与此同时,上面配料过程继续进行。在预定的混合时间达到后,打开混合机门,将混合好的料放出,交给下道工序处理。
2 PLC控制程序的设计
根据生产工艺要求编写相应的PLC控制程序,控制现场设备并实现与上位机的通信。程序设计的难点是与上位机通信程序的实现。S7-200 CPU上的通信口是与RS-485兼容的9针D型连接器,通过PC/PPI电缆实现RS-485与PC机上RS-232C的硬件连接。S7-200支持的自由口通信可由用户控制串行通讯接口,实现用户自定义的通讯协议。
计算机与PLC通信时,为了避免通信中的各方争用通信线,一般采用主从工作方式,只有主机才有权主动发送请求报文,从接收到请求报文后返回响应报文。具体实现方法有两种:采用发送指令(XMT)和接收字符中断事件进行主从式通信;采用发送指令(XMT)和接收指令(RCV)进行主从式通信[3]。
本设计中PLC采用发送指令(XMT)和接收字符中断进行主从式通信,PLC为主机,计算机为从机。PLC主程序首次扫描时,执行一次发送指令,目的是产生发送完成中断事件9,事件9的中断程序中分别启用字符接收中断事件8和定时中断事件10;在定时期间,PLC使用字符中断监视通信端口上的数据,若收到计算机传来的一个字符,会产生字符接收中断事件8,可以在连接的中断程序中处理此控制字符,此时要禁止中断事件8和中断事件10,以便中断处理程序不被打断。注意:在较高的波特率下(38.4~115.2 kbit/s)使用接收字符中断时,中断之间的时间间隔会非常短,例如在38.4 kbit/s时为260 ms,115.2 kbit/s时为86 ms,这时应确保所编写的中断服务程序足够短,不会丢失字符。中断程序中还要执行发送指令才能回到事件9所连接的中断程序中;若在定时期间未收到计算机传来的字符,定时时间到后,会产生定时中断事件10,可在事件10的中断程序中执行发送指令并禁止中断事件8和中断事件10,实现PLC定时发送状态信息,发送完成后回到事件9的中断程序中,开始下一个循环。
服务器监控程序通过Visual C++.NET设计开发。通过使用MSComm控件实现与PLC通信。MSComm控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,MSComm控件支持应用程序对串口的访问。首先在监控程序的主对话框中插入MSComm控件,然后右键单击MSComm控件,在弹出的菜单中选中添加变量便可方便的实现数据的收发。监控程序通过响应OnComm事件完成现场设备状态数据的实时采集;通过执行MSComm控件变量的成员函数put_Output()实现配方数据的发送。
3 现场服务器监控程序设计
现场服务器与远程客户端监控程序通过Visual C++.NET设计开发,Visual C++.NET是使用C++开发语言创建基于Microsoft Windows和.NET的应用程序、动态Web应用程序和XML Web服务的综合开发语言平台。设计采用网络编程中最常用的客户端/服务器模型,这种模型是一种非对称式编程模式。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。在这种模式中服务器程序用来响应并为客户提供固定的服务;客户端程序用来向服务器提出请求或要求某种服务。
本文选取了基于TCP/IP的客户端/服务器模型和面向连接的流式套接字。其通信原理为:服务器端和客户端都必须建立通信套接字,首先服务器端先进入监听状态,然后客户端套接字发出连接请求;服务器端收到请求后,创建另一个套接字与客户端通信,实时进行数据传输。现场服务器监控程序是基于微软基础类MFC(Microsoft Foundation Classes)的单文档框架,由于现场服务器监控程序需要和远程客户端监控程序进行实时信息传输,在使用MFC应用程序向导创建项目时,应在高级功能中选定使用“Windows套接字”。在面向连接的流式通信模式下,MFC提供的CSocket类通常会与CArchive类结合,以串行化的方式发送和接收数据,使网络编程变得像读写文件一样简单[4]。CArchive类扮演的是一个数据缓冲区的角色,它通过CSocketFile类与一个套接字相联系,只要建立两者的联系,然后往“数据缓冲区”装入数据与取出数据即可。本文设计的CSocket编程模型见图2。
现场运行设备的状态显示与配方数据的管理是上位机监控程序设计的重点。PLC通过自由口协议实现与上位机监控程序的通信,上位机监控程序使用的MSComm控件支持应用程序对串口的访问。通过响应OnComm事件完成现场设备状态信息的实时采集;通过执行MSComm控件变量的成员函数put_Output()下传配方数据给PLC。
现场服务器监控程序的数据库开发使用MFC的ODBC直接读写Excel文件数据。远程客户端将配方数据通过Excel文件的形式传送给上位机。上位机监控程序利用Excel的“规划求解”功能设计最佳饲料配方的方法,实现了随饲养标准、饲料原料的种类和价格的变化而变化的最佳饲料配方的设计[5]。Excel文件作为饲料配方数据库,需要使用CDatabase类创建,利用其ExecuteSQL(LPCTSTR lpszSQL)成员函数可以方便地使用SQL语句对Excel文件进行读写、查询及管理。Excel文件一般大于10 kB,如果直接传输往往会丢失数据。为了能够准确无误的发送较大的数据文件,采用的方法为:首先定义一个文件信息属性结构体(发送端和接收端都需要定义);然后先发送此结构体,再循环读文件,循环传送;接收端先接收文件结构体,再循环写文件,完成大文件的传输。
现场服务器监控程序除了要响应远程客户端监控程序发来的控制命令外,还实现了以下功能:料仓数据的采集,趋势图的绘制,历史数据的管理,报警动画的实现等。服务器监控程序使用的MSComm控件支持应用程序对串口的访问。监控程序通过响应OnComm事件完成PLC监控数据的实时传输。现场服务器创建非模式对话框时,自动执行OnInitDialog()初始化函数,完成MSComm控件的初始化,同时构造套接字,开启一个通信端口,并侦听远程客户端套接字的连接请求,如果连接成功,服务器将受控于客户端。串口数据的读取设置在主线程中实现,趋势图的绘制需要单独开启一个线程来完成,以达到数据接收与曲线绘制的同步。报警动画的实现也需要开启一个线程来实现。两个辅助线程都是通过响应定时器OnTimer()函数来创建的。现场服务器监控界面如图3所示。
4 远程客户端监控程序设计
为了能够远程实时监控现场设备的运行状况,需要在远程计算机上运行远程客户端监控程序。远程客户端监控程序利用局域网络可以实现对多个车间的现场服务器进行控制与管理,提供管理级监管的效率。常用的局域网络一般是基于TCP/IP协议的工业以太网,图2中CSocket类的使用使远程监控易于实现。远程客户端监控程序实现的功能包括:读取现场服务器的监控画面,读取服务器的历史数据,锁定服务器界面,解锁服务器界面,注销服务器,重启服务器,关机服务器等,为进一步实现现场无人值守奠定基础。不同监控命令通过给字符串变量赋不同的值相区别,服务器接收字符串变量后,根据不同的值来响应不同的功能。读取现场服务器监控画面的实现过程为:发送屏幕截图命令给服务器,服务器监控程序接收命令后利用嵌套类实现屏幕拷贝并将图片及时传输给客户端,客户端显示图片便可及时监控现场设备的运行情况。图片的实时传输是设计的难点,可采用如下方法加以实现:
首先采用屏幕切分法将截屏图像切分成大小相同的各种网格,然后和前一时刻的截屏图像相比较,最后将更新的网格数据通过哈夫曼编码进行压缩后传输给远程监控计算机。服务器截屏后保存的文件为位图(BMP)格式,位图为非压缩图片,不失真但文件较大,一般为2~6 MB左右。对于大文件的网络传输系统会有一定延时,实验测试的延时时间为3~7 s,达不到实时性的要求。故需要对位图进行无损压缩,然后传输压缩文件,再通过客户端解压缩后显示。但如果对整个位图进行无损压缩后传输,在客户端解压后显示,采用常用的哈夫曼编码进行压缩→传输→解压所需要的时间在1~5 s,同样不能满足实时性的要求。哈夫曼编码是可变字长编码(VLC)的一种,常用于无损压缩。为解决这个问题,在程序中采用了屏幕切分法,将截屏后的图像划分网格,屏幕的刷新以网格为单元,然后与前次图像比较,相同的删除,不同的留下。对留下的网格进行压缩,将压缩后的图像进行传输;客户端接收到数据后,先对其解码,然后再将解码后的数据加到指定网格形成新图像,显示于视图中。在计算哈夫曼编码表时需要对原始图像数据扫描两遍:第一遍扫描要精确地统计出原始图像中每个灰度值出现的概率;第二遍是建立哈夫曼树并进行编码。此方法在第一次图像传输时需要传输整个位图文件,会有一定的延时,此后传输并显示的时间小于1 s,图像显示无失真。
5 结语
随着饲料厂自动化程度的不断提高,电气设备的安全运行对饲料生产显得尤为重要。基于PLC的自动配料远程监控系统着力实现饲料配方的远程及时调整,在不影响饲料质量的前提下,可以积极应对各种原料上涨带来的成本问题。PLC的使用,保证了设备的安全运行[6],良好的监控管理软件,便于及时排除故障,对饲料厂的生产发挥了积极作用。远程监控功能的实现为多车间无人值守,远程集中监控各种饲料机械的安全运行提供技术支持。该系统在河南华典饲料科技有限公司投运以来,运行效果良好,极大地改善了工作环境,降低了劳动强度,对产品质量和生产效益都有较大的提高。
[1] 杨友平,等.配合饲料生产线电气系统的改造[J].农机化研究,2005,5(9):234-236.
[2] 徐毅峰.深化自动控制技术在保证饲料质量中的应用[J].粮食与食品工业,2004,2(4):41-44.
[3] 陈建明,王亭岭,孙标编著.电气控制与PLC应用(第二版)[M].北京:电子工业出版社,2010,1:280-281.
[4] 何炜等编著.Visual C++.NET2003程序设计[M].北京:冶金工业出版社,2004,4:247-261.
[5] 钟志光,卢君,刘伟荣编著.Visual C++.NET数字图像处理实例与解析[M].北京:清华大学出版社,2003,6:530-538.
[6] 李浩权,胡光华.基于PLC和触摸屏的气流膨化机控制系统[J].中国农机化,2010,227(1):98-101.