當(dāng)今,人們對(duì)食品安全的要求越來(lái)越高,對(duì)畜產(chǎn)品的品質(zhì)要求越來(lái)越嚴(yán)格,飼料標(biāo)準(zhǔn)也正處于逐步的修訂之中。由于市場(chǎng)行為、地區(qū)差異、季節(jié)變化、原料儲(chǔ)運(yùn)方式的變化,原料數(shù)據(jù)也經(jīng)常發(fā)生變化。因此,飼料配方的及時(shí)調(diào)整是保證配合飼料質(zhì)量的前提。隨著我國(guó)工業(yè)自動(dòng)化的發(fā)展及勞動(dòng)成本的提高,自動(dòng)配料系統(tǒng)在飼料工業(yè)的應(yīng)用越來(lái)越廣泛。使用自動(dòng)配料系統(tǒng)不僅能夠保證稱量精度,而且可以實(shí)現(xiàn)多批次、連續(xù)生產(chǎn),既減輕了工人的勞動(dòng)強(qiáng)度,又保證了產(chǎn)品的質(zhì)量。目前我國(guó)飼料行業(yè)中自動(dòng)配料系統(tǒng)主要有兩大類:PC機(jī)+數(shù)據(jù)采集卡+配料攪龍點(diǎn)動(dòng)配料方式;PC機(jī)+PLC控制方式。第一種方式主要由計(jì)算機(jī)、數(shù)據(jù)采集卡、外圍繼電器、接觸器等外圍電路組成?刂菩问胶(jiǎn)單,隨機(jī)誤差較大。由于這種形式為集中式控制,整體可靠性沒(méi)有很大改善,且網(wǎng)絡(luò)通信能力不足;第二種方式采用分布式控制集中式管理的形式,上位機(jī)采用工業(yè)PC機(jī)管理,下位機(jī)采用PLC控制。它結(jié)合了計(jì)算機(jī)高性能的優(yōu)勢(shì)和PLC高可靠性的特點(diǎn),有效避免了計(jì)算機(jī)集中控制的缺陷。本設(shè)計(jì)針對(duì)這種分布式控制集中式管理的形式,重點(diǎn)研究其網(wǎng)絡(luò)通信能力,實(shí)現(xiàn)飼料配方的遠(yuǎn)程及時(shí)調(diào)整與現(xiàn)場(chǎng)設(shè)備的實(shí)時(shí)監(jiān)控,飼料
顆粒機(jī)、
秸稈顆粒機(jī)是養(yǎng)殖戶們壓制顆粒飼料最佳的選擇。
1、遠(yuǎn)程監(jiān)控系統(tǒng)的構(gòu)成
在配合飼料生產(chǎn)過(guò)程中,由PLC控制現(xiàn)場(chǎng)所有設(shè)備,PLC通過(guò)自由口與現(xiàn)場(chǎng)監(jiān)控服務(wù)器(現(xiàn)場(chǎng)監(jiān)控計(jì)算機(jī)或稱上位機(jī))進(jìn)行通信。現(xiàn)場(chǎng)監(jiān)控服務(wù)器實(shí)時(shí)監(jiān)控PLC的運(yùn)行狀況,并在線記錄生產(chǎn)數(shù)據(jù),提供報(bào)警、數(shù)據(jù)匯總查詢、文檔打印等。遠(yuǎn)程監(jiān)控客戶端通過(guò)局域網(wǎng)遠(yuǎn)程監(jiān)控現(xiàn)場(chǎng)服務(wù)器,實(shí)現(xiàn)生產(chǎn)配方的遠(yuǎn)程調(diào)整及生產(chǎn)過(guò)程的遠(yuǎn)程監(jiān)控與管理。自動(dòng)配料生產(chǎn)線遠(yuǎn)程監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1中現(xiàn)場(chǎng)監(jiān)控服務(wù)器運(yùn)行的監(jiān)控程序通過(guò)串口將生產(chǎn)配方數(shù)據(jù)下傳到PLC CPU226,PLC根據(jù)配方參數(shù)及下料順序,控制變頻器啟動(dòng)配料攪龍工作,配料攪龍將各原料倉(cāng)內(nèi)原料按序分別不斷推入配料秤內(nèi)。安裝于配料秤上的稱重傳感器將重量信號(hào)經(jīng)A/D模塊轉(zhuǎn)換為數(shù)字信號(hào)送給PLC,并與事先存儲(chǔ)的飼料配方值不斷地進(jìn)行比較,直到配方所要求的重量為止。然后打開秤斗門,將稱好的原料放入混合機(jī),同時(shí)投入配方所需其他精料,并啟動(dòng)定時(shí),計(jì)算混合機(jī)內(nèi)原料的混合時(shí)間。與此同時(shí),上面配料過(guò)程繼續(xù)進(jìn)行。在預(yù)定的混合時(shí)間達(dá)到后,打開混合機(jī)門,將混合好的料放出,交給下道T序處理。
2、PLC控制程序的設(shè)計(jì)
根據(jù)生產(chǎn)工藝要求編寫相應(yīng)的PLC控制程序,控制現(xiàn)場(chǎng)設(shè)備并實(shí)現(xiàn)與上位機(jī)的通信。程序設(shè)計(jì)的難點(diǎn)是與上位機(jī)通信程序的實(shí)現(xiàn)。S7-200 CPU上的通信口是與RS-485兼容的9針D型連接器,通過(guò)PC/PPI電纜實(shí)現(xiàn)RS-485與PC機(jī)上RS-232C的硬件連接。S7-200支持的自由口通信可由用戶控制串行通訊接口,實(shí)現(xiàn)用戶自定義的通訊協(xié)議。
計(jì)算機(jī)與PLC通信時(shí),為了避免通信中的各方爭(zhēng)用通信線,一般采用主從工作方式,只有主機(jī)才有權(quán)主動(dòng)發(fā)送請(qǐng)求報(bào)文,從接收到請(qǐng)求報(bào)文后返回響應(yīng)報(bào)文。具體實(shí)現(xiàn)方法有兩種:采用發(fā)送指令(XMT)和接收字符中斷事件進(jìn)行主從式通信;采用發(fā)送指令(XMT)和接收指令(RCV)進(jìn)行主從式通信。
本設(shè)計(jì)中PLC采用發(fā)送指令(XMT)和接收字符中斷進(jìn)行主從式通信,PLC為主機(jī),計(jì)算機(jī)為從機(jī)。PLC主程序首次掃描時(shí),執(zhí)行一次發(fā)送指令,目的是產(chǎn)生發(fā)送完成中斷事件9,事件9的中斷程序中分別啟用字符接收中斷事件8和定時(shí)中斷事件10;在定時(shí)期間,PLC使用字符中斷監(jiān)視通信端口上的數(shù)據(jù),若收到計(jì)算機(jī)傳來(lái)的一個(gè)字符,會(huì)產(chǎn)生字符接收中斷事件8.可以在連接的中斷程序中處理此控制字符,此時(shí)要禁止中斷事件8和中斷事件10,以便中斷處理程序不被打斷。注意:在較高的波特率下(38.4~115.2 kbit/s)使用接收字符中斷時(shí),中斷之間的時(shí)間間隔會(huì)非常短,例如在38.4 kbit/s時(shí)為260 ms,115.2 kbit/s時(shí)為86 ms,這時(shí)應(yīng)確保所編寫的中斷服務(wù)程序足夠短,不會(huì)丟失字符。中斷程序中還要執(zhí)行發(fā)送指令才能回到事件9所連接的中斷程序中;若在定時(shí)期間未收到計(jì)算機(jī)傳來(lái)的字符,定時(shí)時(shí)間到后,會(huì)產(chǎn)生定時(shí)中斷事件10,可在事件10的中斷程序中執(zhí)行發(fā)送指令并禁止中斷事件8和中斷事件10,實(shí)現(xiàn)PLC定時(shí)發(fā)送狀態(tài)信息,發(fā)送完成后回到事件9的中斷程序中,開始下一個(gè)循環(huán)。
服務(wù)器監(jiān)控程序通過(guò)Visual C++.NET設(shè)計(jì)開發(fā)。通過(guò)使用MSComm控件實(shí)現(xiàn)與PLC通信。MSComm控件是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,MSComm控件支持應(yīng)用程序?qū)Υ诘脑L問(wèn)。首先在監(jiān)控程序的主對(duì)話框中插入MSComm控件,然后右鍵單擊MSComm控件,在彈出的菜單中選中添加變量便可方便的實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。監(jiān)控程序通過(guò)響應(yīng)OnComm事件完成現(xiàn)場(chǎng)設(shè)備狀態(tài)數(shù)據(jù)的實(shí)時(shí)采集;通過(guò)執(zhí)行MSComm控件變量的成員函數(shù)put_Output()實(shí)現(xiàn)配方數(shù)據(jù)的發(fā)送。
3、現(xiàn)場(chǎng)服務(wù)器監(jiān)控程序設(shè)計(jì)
現(xiàn)場(chǎng)服務(wù)器與遠(yuǎn)程客戶端監(jiān)控程序通過(guò)Visual C++.NET設(shè)計(jì)開發(fā),Visual C++.NET是使用C++開發(fā)語(yǔ)言創(chuàng)建基于Microsoft Windows和.NET的應(yīng)用程序、動(dòng)態(tài)Web應(yīng)用程序和XML Web服務(wù)的綜合開發(fā)語(yǔ)言平臺(tái)。設(shè)計(jì)采用網(wǎng)絡(luò)編程中最常用的客戶端/服務(wù)器模型,這種模型是一種非對(duì)稱式編程模式。該模式的基本思想是把集中在一起的應(yīng)用劃分成為功能不同的兩個(gè)部分,分別在不同的計(jì)算機(jī)上運(yùn)行,通過(guò)它們之間的分工合作來(lái)實(shí)現(xiàn)—個(gè)完整的功能。在這種模式中服務(wù)器程序用來(lái)響應(yīng)并為客戶提供固定的服務(wù);客戶端程序用來(lái)向服務(wù)器提出請(qǐng)求或要求某種服務(wù)。
本文選取了基于TCPFIP的客戶端/服務(wù)器模型和面向連接的流式套接字。其通信原理為:服務(wù)器端和客戶端都必須建立通信套接字,首先服務(wù)器端先進(jìn)入監(jiān)聽(tīng)狀態(tài),然后客戶端套接字發(fā)出連接請(qǐng)求;服務(wù)器端收到請(qǐng)求后,創(chuàng)建另一個(gè)套接字與客戶端通信,實(shí)時(shí)進(jìn)行數(shù)據(jù)傳輸。現(xiàn)場(chǎng)服務(wù)器監(jiān)控程序是基于微軟基礎(chǔ)類MFC( Microsoft Foundation Classes)的單文檔框架,由于現(xiàn)場(chǎng)服務(wù)器監(jiān)控程序需要和遠(yuǎn)程客戶端監(jiān)控程序進(jìn)行實(shí)時(shí)信息傳輸,在使用MFC應(yīng)用程序向?qū)?chuàng)建項(xiàng)目時(shí),應(yīng)在高級(jí)功能中選定使用“Windows套接字”。在面向連接的流式通信模式下,MFC提供的CSocket類通常會(huì)與CArchive類結(jié)合,以串行化的方式發(fā)送和接收數(shù)據(jù),使網(wǎng)絡(luò)編程變得像讀寫文件一樣簡(jiǎn)單。CArchive類扮演的是一個(gè)數(shù)據(jù)緩沖區(qū)的角色,它通過(guò)CSocketFile類與一個(gè)套接字相聯(lián)系,只要建立兩者的聯(lián)系,然后往“數(shù)據(jù)緩沖區(qū)”裝入數(shù)據(jù)與取出數(shù)據(jù)即可。本文設(shè)計(jì)的CSocket編程模型見(jiàn)圖2。
現(xiàn)場(chǎng)運(yùn)行設(shè)備的狀態(tài)顯示與配方數(shù)據(jù)的管理是上位機(jī)監(jiān)控程序設(shè)計(jì)的重點(diǎn)。PLC通過(guò)自由口協(xié)議實(shí)現(xiàn)與上位機(jī)監(jiān)控程序的通信,上位機(jī)監(jiān)控程序使用的MSComm控件支持應(yīng)用程序?qū)Υ诘脑L問(wèn)。通過(guò)響應(yīng)OnComm事件完成現(xiàn)場(chǎng)設(shè)備狀態(tài)信息的實(shí)時(shí)采集;通過(guò)執(zhí)行MSComm控件變量的成員函數(shù)put_Output()下傳配方數(shù)據(jù)給PLC。
現(xiàn)場(chǎng)服務(wù)器監(jiān)控程序的數(shù)據(jù)庫(kù)開發(fā)使用MFC的ODBC直接讀寫Excel文件數(shù)據(jù)。遠(yuǎn)程客戶端將配方數(shù)據(jù)通過(guò)Excel文件的形式傳送給上位機(jī)。上位機(jī)監(jiān)控程序利用Excel的“規(guī)劃求解”功能設(shè)計(jì)最佳飼料配方的方法,實(shí)現(xiàn)了隨飼養(yǎng)標(biāo)準(zhǔn)、飼料原料的種類和價(jià)格的變化而變化的最佳飼料配方的設(shè)計(jì)。Excel文件作為飼料配方數(shù)據(jù)庫(kù),需要使用C Database類創(chuàng)建,利用其ExecuteSQL(LPCTSTR lpszSQL)成員函數(shù)可以方便地使用SQL語(yǔ)句對(duì)Excel文件進(jìn)行讀寫、查詢及管理。Excel文件一般大于10 kB,如果直接傳輸往往會(huì)丟失數(shù)據(jù)。為了能夠準(zhǔn)確無(wú)誤的發(fā)送較大的數(shù)據(jù)文件,采用的方法為:首先定義一個(gè)文件信息屬性結(jié)構(gòu)體(發(fā)送端和接收端都需要定義);然后先發(fā)送此結(jié)構(gòu)體,再循環(huán)讀文件,循環(huán)傳送;接收端先接收文件結(jié)構(gòu)體,再循環(huán)寫文件,完成大文件的傳輸。
現(xiàn)場(chǎng)服務(wù)器監(jiān)控程序除了要響應(yīng)遠(yuǎn)程客戶端監(jiān)控程序發(fā)來(lái)的控制命令外,還實(shí)現(xiàn)了以下功能:料倉(cāng)數(shù)據(jù)的采集,趨勢(shì)圖的繪制,歷史數(shù)據(jù)的管理,報(bào)警動(dòng)畫的實(shí)現(xiàn)等。服務(wù)器監(jiān)控程序使用的MSComm控件支持應(yīng)用程序?qū)Υ诘脑L問(wèn)。監(jiān)控程序通過(guò)響應(yīng)OnComm事件完成PLC監(jiān)控?cái)?shù)據(jù)的實(shí)時(shí)傳輸,F(xiàn)場(chǎng)服務(wù)器創(chuàng)建非模式對(duì)話框時(shí),自動(dòng)執(zhí)行Onlnit.Dialog()初始化函數(shù),完成MSComm控件的初始化,同時(shí)構(gòu)造套接字,開啟一個(gè)通信端口,并偵聽(tīng)遠(yuǎn)程客戶端套接字的連接請(qǐng)求,如果連接成功,服務(wù)器將受控于客戶端。串口數(shù)據(jù)的讀取設(shè)置在主線程中實(shí)現(xiàn),趨勢(shì)圖的繪制需要單獨(dú)開啟一個(gè)線程來(lái)完成,以達(dá)到數(shù)據(jù)接收與曲線繪制的同步。報(bào)警動(dòng)畫的實(shí)現(xiàn)也需要開啟一個(gè)線程來(lái)實(shí)現(xiàn)。兩個(gè)輔助線程都是通過(guò)響應(yīng)定時(shí)器OnTimer()函數(shù)來(lái)創(chuàng)建的。
4、遠(yuǎn)程客戶端監(jiān)控程序設(shè)計(jì)
為了能夠遠(yuǎn)程實(shí)時(shí)監(jiān)控現(xiàn)場(chǎng)設(shè)備的運(yùn)行狀況,需要在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行遠(yuǎn)程客戶端監(jiān)控程序。遠(yuǎn)程客戶端監(jiān)控程序利用局域網(wǎng)絡(luò)可以實(shí)現(xiàn)對(duì)多個(gè)車間的現(xiàn)場(chǎng)服務(wù)器進(jìn)行控制與管理,提供管理級(jí)監(jiān)管的效率。常用的局域網(wǎng)絡(luò)一般是基于TCP/IP協(xié)議的工業(yè)以太網(wǎng),圖2中CSocket類的使用使遠(yuǎn)程監(jiān)控易于實(shí)現(xiàn)。遠(yuǎn)程客戶端監(jiān)控程序?qū)崿F(xiàn)的功能包括:讀取現(xiàn)場(chǎng)服務(wù)器的監(jiān)控畫面,讀取服務(wù)器的歷史數(shù)據(jù),鎖定服務(wù)器界面,解鎖服務(wù)器界面,注銷服務(wù)器,重啟服務(wù)器,關(guān)機(jī)服務(wù)器等,為進(jìn)一步實(shí)現(xiàn)現(xiàn)場(chǎng)無(wú)人值守奠定基礎(chǔ)。不同監(jiān)控命令通過(guò)給字符串變量賦不同的值相區(qū)別,服務(wù)器接收字符串變量后,根據(jù)不同的值來(lái)響應(yīng)不同的功能。讀取現(xiàn)場(chǎng)服務(wù)器監(jiān)控畫面的實(shí)現(xiàn)過(guò)程為:發(fā)送屏幕截圖命令給服務(wù)器,服務(wù)器監(jiān)控程序接收命令后利用嵌套類實(shí)現(xiàn)屏幕拷貝并將圖片及時(shí)傳輸給客戶端,客戶端顯示圖片便可及時(shí)監(jiān)控現(xiàn)場(chǎng)設(shè)備的運(yùn)行情況,圖片的實(shí)時(shí)傳輸是設(shè)計(jì)的難點(diǎn),可采用如下方法加以實(shí)現(xiàn):
首先采用屏幕切分法將截屏圖像切分成大小相同的各種網(wǎng)格,然后和前一時(shí)刻的截屏圖像相比較,最后將更新的網(wǎng)格數(shù)據(jù)通過(guò)哈夫曼編碼進(jìn)行壓縮后傳輸給遠(yuǎn)程監(jiān)控計(jì)算機(jī)。服務(wù)器截屏后保存的文件為位圖(BMP)格式,位圖為非壓縮圖片,不失真但文件較大,一般為2~6 MB左右。對(duì)于大文件的網(wǎng)絡(luò)傳輸系統(tǒng)會(huì)有一定延時(shí),實(shí)驗(yàn)測(cè)試的延時(shí)時(shí)間為3~7s,達(dá)不到實(shí)時(shí)性的要求。故需要對(duì)位圖進(jìn)行無(wú)損壓縮,然后傳輸壓縮文件,再通過(guò)客戶端解壓縮后顯示。但如果對(duì)整個(gè)位圖進(jìn)行無(wú)損壓縮后傳輸,在客戶端解壓后顯示,采用常用的哈夫曼編碼進(jìn)行壓縮一傳輸一解壓所需要的時(shí)間在1~5s,同樣不能滿足實(shí)時(shí)性的要求。哈夫曼編碼是可變字長(zhǎng)編碼(VLC)的一種,常用于無(wú)損壓縮。為解決這個(gè)問(wèn)題,在程序中采用了屏幕切分法,將截屏后的圖像劃分網(wǎng)格,屏幕的刷新以網(wǎng)格為單元,然后與前次圖像比較,相同的刪除,不同的留下。對(duì)留下的網(wǎng)格進(jìn)行壓縮,將壓縮后的圖像進(jìn)行傳輸;客戶端接收到數(shù)據(jù)后,先對(duì)其解碼,然后再將解碼后的數(shù)據(jù)加到指定網(wǎng)格形成新圖像,顯示于視圖中。在計(jì)算哈夫曼編碼表時(shí)需要對(duì)原始圖像數(shù)據(jù)掃描兩遍:第一遍掃描要精確地統(tǒng)計(jì)出原始圖像中每個(gè)灰度值出現(xiàn)的概率;第二遍是建立哈夫曼樹并進(jìn)行編碼。此方法在第一次圖像傳輸時(shí)需要傳輸整個(gè)位圖文件,會(huì)有一定的延時(shí),此后傳輸并顯示的時(shí)間小于1s,圖像顯示無(wú)失真。
5、結(jié)語(yǔ)
隨著飼料廠自動(dòng)化程度的不斷提高,電氣設(shè)備的安全運(yùn)行對(duì)飼料生產(chǎn)顯得尤為重要;赑LC的自動(dòng)配料遠(yuǎn)程監(jiān)控系統(tǒng)著力實(shí)現(xiàn)飼料配方的遠(yuǎn)程及時(shí)調(diào)整,在不影響飼料質(zhì)量的前提下,可以積極應(yīng)對(duì)各種原料上漲帶來(lái)的成本問(wèn)題。PLC的使用,保證了設(shè)備的安全運(yùn)行,良好的監(jiān)控管理軟件,,便于及時(shí)排除故障,對(duì)飼料廠的生產(chǎn)發(fā)揮了積極作用。遠(yuǎn)程監(jiān)控功能的實(shí)現(xiàn)為多車間無(wú)人值守,遠(yuǎn)程集中監(jiān)控各種飼料機(jī)械的安全運(yùn)行提供技術(shù)支持。該系統(tǒng)在河南華典飼料科技有限公司投運(yùn)以來(lái),運(yùn)行效果良好,極大地改善了工作環(huán)境,降低了勞動(dòng)強(qiáng)度,對(duì)產(chǎn)品質(zhì)量和生產(chǎn)效益都有較大的提高,飼料顆粒機(jī)可以在很大程度上提高顆粒飼料的質(zhì)量。