0 引言
目前,絕大多數(shù)混凝土攪拌機控制系統(tǒng)為單機版軟件。該軟件由機樓操作工使用和維護,且功能單一,數(shù)據(jù)封閉,不能與外部ERP等管理系統(tǒng)實現(xiàn)信息交換。工程部、實驗室和調(diào)度中心的工作人員分別將生產(chǎn)任務單(澆筑令)、實驗配比單和車輛排單輸入到ERP系統(tǒng)中,機樓操作員再將這些單據(jù)轉(zhuǎn)錄到機樓控制系統(tǒng)中,這樣不但增加了機樓人員的工作量,而且容易出錯,給生產(chǎn)帶來不必要的麻煩。此外,站場管理人員很難及時掌握進料、庫存和實際耗量等信息。
為了實現(xiàn)機樓控制系統(tǒng)和外部ERP系統(tǒng)之間數(shù)據(jù)的無縫對接,一些攪拌機控制軟件公司和第三方開發(fā)商針對特定客戶的需求定制了簡單的對接程序,因此,沒有充分地考慮程序本身的通用性和開放性。通過分析了大量現(xiàn)有混凝土攪拌站實際需求,本文提出了一套較為完整的攪拌機控制系統(tǒng)與外部ERP之間數(shù)據(jù)對接的解決方案。不同系統(tǒng)之間通過Windows Socket通信方式進行數(shù)據(jù)交換,每個攪拌機控制系統(tǒng)作為一個獨立的客戶端,Socket的服務端程序部署在ERP管理系統(tǒng)中,采用多線程機制,所設計的接口與運行平臺、開發(fā)語言以及軟件廠商無關,便于擴展和實現(xiàn)。
1 數(shù)據(jù)對接方式
常見的系統(tǒng)之間數(shù)據(jù)通訊方式有Socket、WebService、基于網(wǎng)絡協(xié)議的直接數(shù)據(jù)庫訪問以及其它通訊方式,下文分別介紹這幾種通訊方式的特點。
(1)Socket通訊
Socket套接字通訊實質(zhì)上就是建立在應用程序端與遠程服務器端之間的雙向數(shù)據(jù)通道。按照通信方式的不同,Socket通訊可分為同步方式和異步方式兩種。其中同步方式的操作直到其執(zhí)行完成才將控制交給到主調(diào)程序,而異步方式則在執(zhí)行操作調(diào)用后立即返回。以同步通訊為例,首先服務端ServerSocket綁定監(jiān)聽端口,等待客戶端請求連接;當客戶端ClientSocket發(fā)出請求申請后,ServerSocket響應該請求,并創(chuàng)建新的Socket線程,這樣通信雙方就可以進行數(shù)據(jù)交換;而后,ServerSocket繼續(xù)處于監(jiān)聽狀態(tài),等待下一個客戶端的連接請求。具體通信過程如圖1所示。
圖1 Socket通信模型
(2)Web Service訪問
Web Service是一種自包含、自描述和模塊化的Web應用分支。由于它與平臺和實現(xiàn)語言無關和易于開發(fā)部署的優(yōu)點而備受關注。Web Service整個使用流程包括描述、發(fā)布、查找和調(diào)用四個環(huán)節(jié)。面向服務(SOA)的應用系統(tǒng)中,其用的主要技術(shù)包括XML、HTYP、SOAP、WSDL和UDDI等。實質(zhì)上,Web服務的交互是在HTTP協(xié)議上傳遞由SOAP封裝了的XML結(jié)構(gòu)化的數(shù)據(jù)。
(3)直接數(shù)據(jù)庫訪問
直接數(shù)據(jù)庫訪問的方法是將管理軟件的數(shù)據(jù)庫表結(jié)構(gòu)暴露給外部接口程序,通過遠程數(shù)據(jù)庫訪問組件技術(shù)進行數(shù)據(jù)交換,這種方式不需要設計特殊的數(shù)據(jù)通信協(xié)議,但是它對數(shù)據(jù)庫進行直接讀寫操作存在潛在的安全威脅。
此外,通過RS-232或RS-485等串口通訊方式實現(xiàn)數(shù)據(jù)交換。
以上幾種方式各有優(yōu)缺點,在本次接口設計中,本文選擇了Socket通信方式進行各種數(shù)據(jù)交互。
2 協(xié)議格式設計
在雙方正式通訊之前,必須協(xié)商好消息的格式。按功能類型的不同,協(xié)議幀可分為數(shù)據(jù)幀、控制幀和空閑幀三種格式,各種幀的尺寸不盡相同。
數(shù)據(jù)幀包括ERP向攪拌機控制系統(tǒng)發(fā)送的生產(chǎn)任務、實驗配比和車輛排單消息,以及控制系統(tǒng)反饋到ERP的生產(chǎn)記錄消息幀。表1—4分別給出不同數(shù)據(jù)幀格式,括號中的數(shù)字表示每個字段域的尺寸。
表1生產(chǎn)任務消息幀格式
表2 實驗配比消息幀格式
表3 車間調(diào)度消息幀格式
表4生產(chǎn)記錄消息幀格式
控制幀包括各種發(fā)送控制命令字和驗證確認信息幀等。其中控制命令字包括向攪拌機發(fā)送的啟停指令、刪除生產(chǎn)任務等消息以及其他反饋信息指令。表5—6分別是驗證確認消息和刪除指令幀格式。
表5驗證幀協(xié)議格式
表6刪除指令幀協(xié)議格式
值得注意的是,表6中類別和ID可以唯一確定所要刪除的記錄,如類別=3,ID=201021表示要刪除編號為201021的實驗配比單;狀態(tài)值=0,表示刪除成功,而狀態(tài)值=1,表示刪除失敗。
空閑幀主要用于通信雙方無數(shù)據(jù)傳輸時維持連接。表7為空閑幀格式,空閑幀的類別為0,計數(shù)器的作用是周期性的記錄空閑時間的大小,一旦遇到正式數(shù)據(jù)傳輸或計數(shù)溢出,計數(shù)器立即清空。
表7 空閑幀協(xié)議格式
3 接口實現(xiàn)
接口程序是由一個服務器端ServerSockethnpl和多個客戶端ClientSocketImpl組成。ClientSocketImpl為桌面軟件,安裝在攪拌機控制系統(tǒng)的機器上。ServerSocketImpl可以集成到ERP中,服務于B/S或C/S架構(gòu)的應用系統(tǒng)。下文分別描述了服務器端和客戶端接口程序的實現(xiàn)流程。
(1)服務器端接口程序ServerSocketImpl實現(xiàn)步驟
①初始化服務器端Socket配置。
②主線程等待連接。
③一旦捕獲到連接請求,創(chuàng)建新的客戶端套接字newSocket,主線程返回到等待狀態(tài)。
④如果newSoeket驗證通過,并將此加入到全局Socket隊列,否則丟棄。
⑤啟動newSocket連接的網(wǎng)絡狀態(tài)監(jiān)控子線程,定期(比如每隔10s)檢查連接是否正常。
⑥如果斷開連接,則將newSocket從當前存活的Socket隊列中踢出。
⑦如果當前的newSocket存活,則執(zhí)行以下步驟。
⑧啟動newSocket所關聯(lián)的生產(chǎn)記錄監(jiān)聽子線程,當該端口接收到新的生產(chǎn)記錄時,立即保存到ERP系統(tǒng)的數(shù)據(jù)庫中,并將保存成功與否的狀態(tài)通知相應的客戶端。
⑨ERP系統(tǒng)按照前面設計的協(xié)議格式封裝數(shù)據(jù),調(diào)用相應的函數(shù),向攪拌機控制系統(tǒng)的數(shù)據(jù)庫中寫人生產(chǎn)任務單、實驗配比單、車輛排單和迸料單等信息。
⑩結(jié)束。
(2)客戶端接口程序ClientSocketImpl實現(xiàn)步驟
①初始化客戶端Socket配置。
②主線程請求連接。
③如果請求連接失敗,則不斷向服務器端發(fā)出連接請求,否則執(zhí)行以下步驟。
④如果驗證通過,則建立Socket套接字。
⑤啟動網(wǎng)絡狀態(tài)監(jiān)控子線程,定期檢查網(wǎng)絡連接是否正常。
⑥如果連接斷開,延時后繼續(xù)請求連接。
⑦如果連接正常,定時檢查是否有新的生產(chǎn)記錄需要發(fā)送到ServerSocket中或者ServerSocket端是否有數(shù)據(jù)到來。
⑧結(jié)束。
服務器端接口程序一旦啟動就阻塞等待客戶端的請求連接,當雙方連接確認后,就可以進行數(shù)據(jù)交換。為了能夠支持多個客戶端并發(fā)連接,本方案采用了多線程機制。在每個客戶端與服務器端成功建立連接后,它們之間建立了獨立的子線程,從而隔離了不同Socket之間的相互干擾,即使其中一個Socket連接崩潰也不會影響到其他Socket和服務器之間的數(shù)據(jù)交互。客戶端接口程序在數(shù)據(jù)對接中起著重要作用,它擁有對攪拌機控制系統(tǒng)中相關數(shù)據(jù)庫表的讀寫操作權(quán)限?蛻舳硕〞r檢查連接狀態(tài),并且主動維護與服務器端之間的連接。
4 結(jié)束語
本文提出了一種基于多線程Socket通訊方式實現(xiàn)攪拌機控制系統(tǒng)與外部ERP之間的數(shù)據(jù)交互。ClientSocket接口程序與攪拌機控制系統(tǒng)同時啟動或終止,ServerSocket接口由服務器端實現(xiàn),可支持B/S或C/S架構(gòu)的應用系統(tǒng)。目前,采用此設計思想實現(xiàn)的接口程序已經(jīng)成功地應用到某商品混凝土ERP管理系統(tǒng)中,并得到了預期的目標。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標題:混凝土攪拌機控制系統(tǒng)與ERP數(shù)據(jù)接口設計
本文網(wǎng)址:http://www.oesoe.com/html/consultation/10820212590.html