張 磊,雷 斌,高 博
(蘭州交通大學(xué)機(jī)電技術(shù)研究所,蘭州730070)
自動(dòng)化立體倉(cāng)庫(kù)作為CIMS(Computer Intergrated Manufacturing Systems,計(jì)算機(jī)集成制造系統(tǒng))和FMS(Flexible Maunfacture System,柔性制造系統(tǒng))的一部分,是生產(chǎn)加工環(huán)節(jié)中的一個(gè)緩沖環(huán)節(jié)。它是一個(gè)將毛坯、半成品、配套件或成品、工具等物料自動(dòng)存取、自動(dòng)檢索的多層倉(cāng)庫(kù)存儲(chǔ)系統(tǒng)?,F(xiàn)在智能化倉(cāng)儲(chǔ)技術(shù)還處于初級(jí)發(fā)展階段,自動(dòng)化立體倉(cāng)庫(kù)仍是目前市場(chǎng)的主體。隨著中國(guó)企業(yè)規(guī)模的擴(kuò)大和數(shù)量的增加,以及重視與合理應(yīng)用土地這一稀缺資源的意識(shí)不斷增強(qiáng),自動(dòng)化立體倉(cāng)庫(kù)必將得到更廣泛使用。
自動(dòng)化立體倉(cāng)庫(kù)設(shè)備主要包括堆垛機(jī)、輸送機(jī)等,這些設(shè)備由PLC控制。對(duì)這些設(shè)備的監(jiān)控實(shí)際上就是上位監(jiān)控計(jì)算機(jī)向控制相應(yīng)設(shè)備的PLC發(fā)操作控制指令,同時(shí)接收下位PLC報(bào)告的設(shè)備工作信息。
設(shè)備監(jiān)控系統(tǒng)功能一般包括設(shè)備調(diào)度、設(shè)備工作狀態(tài)顯示、記錄、報(bào)警、操作引導(dǎo)信息顯示、條碼讀取等。監(jiān)控通信協(xié)議對(duì)于系統(tǒng)實(shí)現(xiàn)安全和高效的監(jiān)控和調(diào)度是一個(gè)關(guān)鍵,設(shè)備監(jiān)控通信協(xié)議需要考慮監(jiān)控對(duì)象的工作特點(diǎn)和數(shù)據(jù)傳輸實(shí)時(shí)性要求以及可靠性要求。
系統(tǒng)監(jiān)控可以分解成控制和監(jiān)視兩個(gè)任務(wù)??刂剖侵干衔槐O(jiān)控計(jì)算機(jī)給PLC發(fā)送操作指令。操作指令類型包括:出庫(kù)、入庫(kù)、揀選出庫(kù)、庫(kù)內(nèi)搬移。每條指令除了指令類型信息,還包括操作的操作地址,以及確認(rèn)信息。監(jiān)視主要是指記錄和顯示設(shè)備工作的狀況,主要是故障狀況。立體倉(cāng)庫(kù)監(jiān)控系統(tǒng)主要完成對(duì)入庫(kù)輸送機(jī)和堆垛機(jī)的監(jiān)控。
本設(shè)計(jì)選擇的基于以太網(wǎng)的設(shè)備監(jiān)控通信協(xié)議層次模型,如圖1。
圖1 監(jiān)控通信協(xié)議層次模型
在傳輸層采用UDP/IP協(xié)議。UDP是一種無(wú)連接的傳輸協(xié)議,位于IP協(xié)議的上層。UDP采用簡(jiǎn)單的校驗(yàn)和技術(shù)進(jìn)行差錯(cuò)控制,不處理流量控制。同TCP協(xié)議相比,UDP傳輸不需要建立連接,報(bào)文簡(jiǎn)單,傳輸?shù)念~外負(fù)載小,使得數(shù)據(jù)傳輸效率非常高,適用于實(shí)時(shí)通信。但UDP無(wú)法解決以太網(wǎng)本身通信不確定性和沖突的問題。這些問題可通過兩種方法結(jié)合解決:(1)在底層采用交換式以太網(wǎng)技術(shù)。(2)在應(yīng)用層設(shè)計(jì)可靠的通信協(xié)議。
2.2.1 數(shù)據(jù)結(jié)構(gòu)
為了防止通信對(duì)PLC輸入輸出映像區(qū)的占用和干擾,最好不要直接對(duì)輸入輸出映像區(qū)進(jìn)行讀寫。同時(shí)為了方便實(shí)現(xiàn)用戶層應(yīng)答協(xié)議,常用的方法是在PLC數(shù)據(jù)存儲(chǔ)器開辟2個(gè)數(shù)據(jù)區(qū)“窗口”,作為通信數(shù)據(jù)區(qū)。一塊數(shù)據(jù)區(qū)用于監(jiān)控計(jì)算機(jī)發(fā)送指令,稱為PC寫區(qū),專門由監(jiān)控計(jì)算機(jī)寫,PLC讀。另一塊用于PLC報(bào)告狀態(tài),稱為PLC寫區(qū),專門由PLC寫,監(jiān)控計(jì)算機(jī)讀。
PLC檢出故障后需要向監(jiān)控計(jì)算機(jī)報(bào)告,如果把所有檢測(cè)到的狀態(tài)位(“0”表示正常、“1”表示故障)都傳到監(jiān)控計(jì)算機(jī),則信息量太大。例如,8個(gè)位置的超限故障則需要8 byte表示。對(duì)其進(jìn)行壓縮是必要的,最常用的辦法是對(duì)故障狀況進(jìn)行編碼,形成故障代碼。故障狀況以故障代碼形式發(fā)送給監(jiān)控計(jì)算機(jī),監(jiān)控計(jì)算機(jī)把故障代碼翻譯成具體故障描述,在監(jiān)控界面上顯示、報(bào)警,并記錄到數(shù)據(jù)庫(kù),以備查詢。由于正常狀態(tài)沒必要報(bào)告,在正常情況下下位機(jī)不報(bào)告異常。系統(tǒng)中涉及的故障代碼包括堆垛機(jī)故障代碼和輸送機(jī)故障代碼。
2.2.2 通信原理及步驟
數(shù)據(jù)通信的關(guān)鍵在于數(shù)據(jù)的實(shí)時(shí)性和準(zhǔn)確性。以PC向PLC發(fā)送數(shù)據(jù)為例,不僅要保證數(shù)據(jù)正確發(fā)送,還要保證PLC正確讀入。由于雙方各有獨(dú)立的數(shù)據(jù)塊,PC將數(shù)據(jù)寫到自己的數(shù)據(jù)塊中后,應(yīng)等到PLC將數(shù)據(jù)讀入自己的數(shù)據(jù)塊中后,校驗(yàn)PLC的讀取是否正確。
基本通信步驟如下:
(1) PC發(fā)送指令允許為1時(shí),表示PLC可以接收指令。PC在PC寫區(qū)中寫入指令。(2) PLC在事件號(hào)發(fā)生變化時(shí),將指令讀入,驗(yàn)證指令合法性,驗(yàn)證通過則清零PC發(fā)送指令允許,并將PC寫區(qū)“確認(rèn)信息碼”置為1。表示PLC已經(jīng)讀到指令數(shù)據(jù),并禁止PC發(fā)送指令。(3) PC在收到“確認(rèn)信息碼”為1后,表示指令發(fā)送成功。雙方作相應(yīng)的處理后進(jìn)行第2次通信。
下位機(jī)執(zhí)行完一條指令后通過將“PC指令發(fā)送允許”置為1,向上位機(jī)報(bào)告。上位機(jī)接到完成報(bào)告后,即可發(fā)送下一條指令。通信過程中出現(xiàn)任何異常,下位機(jī)必須通知上位機(jī),并結(jié)束此次通信,作相應(yīng)的異常處理后,重新開始下一輪數(shù)據(jù)交換;若連續(xù)3次通信異常,系統(tǒng)將發(fā)出警告或停止運(yùn)行。若下位機(jī)執(zhí)行指令過程中出現(xiàn)異常,應(yīng)停止運(yùn)行并向上位機(jī)報(bào)告,等待管理員處理后重新聯(lián)機(jī)運(yùn)行。
按照上述監(jiān)控系統(tǒng)通信協(xié)議來(lái)完成監(jiān)控,所需數(shù)據(jù)包括指令信息,條碼信息,PC寫區(qū)以及PLC寫區(qū)等幾部分組成。
指令信息來(lái)源于監(jiān)控系統(tǒng)與管理系統(tǒng)的公共數(shù)據(jù)庫(kù)。首先在數(shù)據(jù)庫(kù)中建立指令緩沖表,無(wú)線終端作為數(shù)據(jù)產(chǎn)生者向數(shù)據(jù)庫(kù)中寫入指令,而監(jiān)控系統(tǒng)作為數(shù)據(jù)使用者從數(shù)據(jù)庫(kù)取走指令,構(gòu)成生產(chǎn)者-消費(fèi)者通信模式。通過SQL語(yǔ)句,監(jiān)控系統(tǒng)可以從公共數(shù)據(jù)庫(kù)中獲取指令信息。當(dāng)指令處理過程中,可以進(jìn)一步通過SQL語(yǔ)句完成對(duì)指令信息的修改。
條碼信息的獲取是通過映射得到的固定條碼掃描儀端口獲得的。經(jīng)過映射后,監(jiān)控系統(tǒng)可以像使用監(jiān)控機(jī)本機(jī)所配的串口設(shè)備一樣使用該串口。通過加載VB程序中的RS-232串口通信控件,并進(jìn)行相應(yīng)的串口參數(shù)設(shè)置后即可通過該串口獲取條碼信息。
PC寫區(qū)以及PLC寫區(qū)這兩部分信息為PLC的兩個(gè)數(shù)據(jù)塊。完成對(duì)這兩個(gè)數(shù)據(jù)塊操作,必須通過OPC服務(wù)器來(lái)實(shí)現(xiàn)。
監(jiān)控系統(tǒng)啟動(dòng)時(shí),首先建立與公共數(shù)據(jù)庫(kù)的鏈接。連接代碼如下所示:
If Conn.State Then Conn.Close Conn.Open Connstring
在與下位PLC建立連接的同時(shí),應(yīng)打開A區(qū)左右兩側(cè)的固定條碼掃描儀對(duì)應(yīng)串口。代碼如下。
' 串口波特率設(shè)置
ComA.Settings 9600, n, 8, 1
ComB.Settings 9600, n, 8, 1
'串口接收門檻值設(shè)置
ComA.RThreshold = 7
ComB.RThreshold = 7
' 打開串口
If ComA.PortOpen = False Then ComA.PortOpen = True
If ComB.PortOpen = False Then ComB.PortOpen = True
串口打開后在OnComm事件中即可接收條碼信息。具體處理流程如圖3。
基于OPC技術(shù)規(guī)范的實(shí)時(shí)數(shù)據(jù)訪問方法主要有同步訪問、異步訪問和數(shù)據(jù)訂閱3種訪問方式。本系統(tǒng)中采用了同步方式和訂閱方式兩種方式完成數(shù)據(jù)訪問。
系統(tǒng)中的輸送機(jī)占位狀態(tài)、PC指令發(fā)送允許,堆垛機(jī)箱號(hào)和刪除通知標(biāo)志位等數(shù)據(jù)為實(shí)時(shí)更新數(shù)據(jù),在監(jiān)控系統(tǒng)工作是需借助這些變量來(lái)完成系統(tǒng)工作,因而加入到了同步方式數(shù)據(jù)組,可以隨時(shí)采集該組變量信息。
輸送機(jī)報(bào)警、堆垛機(jī)報(bào)警,自動(dòng)模式變換和PLC數(shù)據(jù)刪除通知,這幾類數(shù)據(jù)平常是不會(huì)發(fā)生變化的,不需要定時(shí)采集,而且這些變量是不需要監(jiān)控機(jī)干預(yù)的,它反映了下位PLC系統(tǒng)的工作狀態(tài),為只讀數(shù)據(jù)。比如輸送機(jī)報(bào)警,輸送機(jī)正常工作時(shí)沒有報(bào)警發(fā)生,則PLC數(shù)據(jù)塊中輸送機(jī)報(bào)警字恒為零。一旦發(fā)生報(bào)警,則輸送機(jī)報(bào)警字將發(fā)生變化,此時(shí)需要通知PC。采用訂閱方式時(shí),一旦數(shù)據(jù)發(fā)生變化,則OPC服務(wù)器將自動(dòng)通知監(jiān)控程序,監(jiān)控程序則可以做出相應(yīng)的處理。這樣則節(jié)省程序定時(shí)去查詢這類數(shù)據(jù),而讓OPC服務(wù)器來(lái)完成查詢工作,可以提高系統(tǒng)運(yùn)行效率,節(jié)約系統(tǒng)資源。
圖3 串口接收數(shù)據(jù)處理流程
作為可靠的通信標(biāo)準(zhǔn),以太網(wǎng)側(cè)重于數(shù)據(jù)處理方面,它滿足了制造業(yè)自動(dòng)化現(xiàn)場(chǎng)級(jí)的部分要求,但有些現(xiàn)場(chǎng)級(jí)的要求是以太網(wǎng)所不能滿足的,例如過程自動(dòng)化系統(tǒng)中需要本質(zhì)安全防爆要求等等。因此,還需要進(jìn)一步加以完善。本系統(tǒng)自投入以來(lái),運(yùn)行狀況良好,精確地完成了50 000余件托盤的出/入庫(kù)操作,入庫(kù)準(zhǔn)確率達(dá)到了99.2%,庫(kù)存準(zhǔn)確率達(dá)到了99.8%,有效提高了倉(cāng)庫(kù)運(yùn)行效率40%以上,同時(shí)還縮短了企業(yè)供貨時(shí)間,降低了企業(yè)生產(chǎn)成本,為公司帶來(lái)了明顯的經(jīng)濟(jì)效益。
[1] 張春城. 對(duì)基于以太網(wǎng)的多路數(shù)據(jù)進(jìn)行統(tǒng)計(jì)復(fù)用的研究與實(shí)現(xiàn)[D] . 成都:電子科技大學(xué),2002 .
[2] 陸超,張曦煌. 基于工業(yè)以太網(wǎng)實(shí)時(shí)協(xié)議的改進(jìn)[J] . 計(jì)算機(jī)應(yīng)用,2005(10) .
[3] 方曉柯. 現(xiàn)場(chǎng)總線網(wǎng)絡(luò)技術(shù)的研究[D] . 沈陽(yáng):東北大學(xué),2005 .