柴處處,石春竹,蘭培霖,魏利卓,許井峰,柴琪琪
(1.中國電子信息產(chǎn)業(yè)集團有限公司第六研究所,北京 100083;2.中國能源建設集團山西省電力勘測設計院有限公司,山西 太原 030001;3.中國中車太原機車車輛有限公司,山西 太原 030027)
自從2013年德國在漢諾威展會上提出工業(yè)4.0的概念,各個國家相繼出臺了相關政策,我國于2017年提出了《中國制造2025發(fā)展綱要》。世界發(fā)達國家都在加緊部署發(fā)展智能制造,謀求在新一輪產(chǎn)業(yè)變革中保持領先優(yōu)勢。智能工廠作為一個載體,讓參與智能制造的人、機器、資源能自然地相互溝通和協(xié)作。而制造執(zhí)行系統(tǒng)(Manufacturing Execution System,MES)構成了智能工廠的核心,將底層自動化控制系統(tǒng)和上層管理系統(tǒng)連接起來。氫燃料電池作為未來新能源的發(fā)展方向,具有良好的發(fā)展前景。在相關政策和技術的支持下,氫燃料電池的商業(yè)化進程加快,相關產(chǎn)業(yè)迅速崛起。為積極應對氫燃料電池復雜多變的生產(chǎn)環(huán)境,企業(yè)急需采用MES系統(tǒng)變革現(xiàn)有的生產(chǎn)組織和管理模式,實現(xiàn)生產(chǎn)過程管控的數(shù)字化、透明化、精益化,做到生產(chǎn)過程精確、高效、科學的管理。位于MES系統(tǒng)和氫燃料電池自動化產(chǎn)線之間的數(shù)據(jù)采集系統(tǒng),實現(xiàn)了二者之間的數(shù)據(jù)交互,并且有安全、實時、高效等優(yōu)點[1]。
工業(yè)4.0的核心技術是信息物理系統(tǒng)(Cyber-Physical Systems,CPS),它通過集成先進的感知、計算、通信、控制等信息技術和自動控制技術,構建了物理空間與信息空間中人、機、物、環(huán)境、信息等要素相互映射、適時交互、高效協(xié)同的復雜系統(tǒng),實現(xiàn)系統(tǒng)內(nèi)資源配置和運行的按需響應、快速迭代、動態(tài)優(yōu)化[2]。信息物理系統(tǒng)能夠將感知、計算、通信、控制等信息技術與設計、工藝、生產(chǎn)、裝備等工業(yè)技術融合,能夠將物理實體、生產(chǎn)環(huán)境和制造過程精準映射到虛擬空間并進行實時反饋,能夠作用于生產(chǎn)制造全過程、全產(chǎn)業(yè)鏈、產(chǎn)品全生命周期,能夠從單元級、系統(tǒng)級到系統(tǒng)之系統(tǒng)(SoS)級不斷深化,實現(xiàn)制造業(yè)生產(chǎn)范式的重構[3]。
數(shù)據(jù)采集系統(tǒng)是一個高度集成、開放和共享的數(shù)據(jù)服務平臺,能夠實現(xiàn)工廠內(nèi)各類裝備、控制系統(tǒng)和信息系統(tǒng)的互聯(lián)互通,以及物料、產(chǎn)品、設備與人的無縫集成,是實現(xiàn)從單個機器、產(chǎn)線、車間到工廠的工業(yè)全系統(tǒng)互聯(lián)互通的重要基礎平臺,支撐數(shù)據(jù)流動,為打造萬物互聯(lián)的世界提供了基礎和前提,是構建智能制造的基石[4]。
數(shù)據(jù)采集系統(tǒng)實現(xiàn)了MES系統(tǒng)與氫燃料電池自動化產(chǎn)線各種設備之間的實時交互,系統(tǒng)架構設計如圖1所示。
圖1 系統(tǒng)架構
MES能通過信息傳遞,對從訂單下達到產(chǎn)品完成的整個生產(chǎn)過程進行優(yōu)化管理。MES是處于計劃層和車間層操作系統(tǒng)之間的執(zhí)行層,主要負責生產(chǎn)管理和調(diào)度執(zhí)行[5]。
MES系統(tǒng)分為以下8個模塊:
(1)基礎數(shù)據(jù):提供物料、產(chǎn)線、產(chǎn)品、員工、部門等基礎資料的維護,是整個制造執(zhí)行系統(tǒng)運行的基礎。
(2)資源管理:對設備和工裝進行基礎數(shù)據(jù)維護、保養(yǎng)管理、故障報修等操作,這些資源是以后進行調(diào)度、派工等工作的基礎,并直接影響生產(chǎn)計劃安排。
(3)生產(chǎn)計劃:新建生產(chǎn)計劃并將計劃下達到車間。
(4)車間調(diào)度:對生產(chǎn)計劃進行調(diào)度,對訂單進行修改、拆分,并將訂單下發(fā)到產(chǎn)線。
(5)作業(yè)執(zhí)行:在產(chǎn)線上對訂單進行開始、停止、工序監(jiān)控等操作,并進行異常的反饋和解除,設備狀態(tài)、任務進度的查詢等操作[6]。
(6)過程質(zhì)量:實現(xiàn)雙向追溯,即物料到產(chǎn)品的追溯,產(chǎn)品到物料、生產(chǎn)批次的追溯[7]。
(7)電子看板:支持各類LED、大屏等顯示終端,對產(chǎn)線的生產(chǎn)任務、直通率、異常等信息進行動態(tài)顯示。
(8)查詢分析:提供各類統(tǒng)計分析功能,提供各類報表、餅圖、柱狀圖等分析報告。
數(shù)據(jù)采集系統(tǒng)關鍵的數(shù)據(jù)庫表設計如圖2所示。
圖2 關鍵數(shù)據(jù)庫表設計
4.2.1網(wǎng)絡通信連接模塊
網(wǎng)絡通信連接模塊的主要功能是根據(jù)產(chǎn)線設備的通信方式,創(chuàng)建并配置該軟件和產(chǎn)線設備進行信息傳遞的通道[8],例如:如果軟件與設備之間采用基于TCP/IP協(xié)議網(wǎng)線接口,則該模塊會根據(jù)用戶設置創(chuàng)建相應的連接套接字(Socket)用于雙方通信;如果軟件與設備之間采用串行通信接口,則會創(chuàng)建并配置COM口通信。本模塊的任務包括:對本地的網(wǎng)絡接口進行初始化,并創(chuàng)建監(jiān)聽線程,對接入的設備進行監(jiān)聽,建立通信通道。
網(wǎng)絡通信連接模塊需要給其他模塊提供的接口如下:
void AcceptCallBack(IAsyncResult ar):接收回調(diào)函數(shù);
void ReadCallback(IAsyncResult ar):異步接收數(shù)據(jù)的回調(diào)函數(shù)。
4.2.2數(shù)據(jù)接收模塊
數(shù)據(jù)接收模塊是在通信已經(jīng)建立的基礎上,異步接收產(chǎn)線設備傳輸?shù)臄?shù)據(jù),并根據(jù)不同的協(xié)議進行處理、拆分,將拆分后的數(shù)據(jù)分發(fā)給其他功能模塊。本模塊的任務包括:建立合適大小的接收數(shù)據(jù)緩存區(qū),并根據(jù)不同的協(xié)議包頭,對數(shù)據(jù)進行截??;將截取的數(shù)據(jù)分發(fā)給相應的模塊進行處理操作。
數(shù)據(jù)接收模塊需要給其他模塊提供的接口如下:
void Decode_Cmd(string strReceive,out int machine_ty,out string Result):數(shù)據(jù)的解析函數(shù)。
4.2.3數(shù)據(jù)發(fā)送模塊
數(shù)據(jù)發(fā)送模塊是在通信已經(jīng)建立的基礎上,實現(xiàn)不同通信的發(fā)送數(shù)據(jù)接口,供其他模塊調(diào)用[9]。本模塊的任務包括:實現(xiàn)網(wǎng)口Socket、串行接口的發(fā)送接口Send();實現(xiàn)發(fā)送消息的功能接口;實現(xiàn)發(fā)送命令的功能接口[10]。
數(shù)據(jù)發(fā)送模塊需要給其他模塊提供的接口如下:
void Send(string msg):基本的發(fā)送函數(shù)接口;
void SendMessage(string msg):軟件作為客戶端角色的時候使用該接口;
bool Send_Cmd(string strSend,int machine_ty):軟件作為服務器角色時使用該接口發(fā)送命令。
4.2.4數(shù)據(jù)解析模塊
數(shù)據(jù)解析模塊將從產(chǎn)線接收到的數(shù)據(jù)通過以下四個模塊解析成四類信息:工序信息、設備狀態(tài)信息、報警信息、產(chǎn)品清單信息。
(1)工序信息解析模塊
工序信息解析模塊的主要功能是接收設備上傳的工序數(shù)據(jù)并做解析,生成產(chǎn)品清單號,提取工序開始時間與結束時間,并將工序數(shù)據(jù)記錄存在OperationData表中。
工序信息解析模塊的處理流程如下:
①獲取工序數(shù)據(jù)信息,對工序數(shù)據(jù)進行解析;
②解析獲取工序號、工序開始標識、結束標識、工序檢測結果;
③第一個工序根據(jù)訂單號和流水號,生成產(chǎn)品清單號碼;
④其他工序獲取當前的產(chǎn)品清單號,并將訂單號、工序的開始信息、結束信息、檢測信息寫入OperationData表中。
(2)設備狀態(tài)信息解析模塊
設備狀態(tài)信息解析模塊的主要功能是對解析到的設備狀態(tài)進行處理,并記錄到數(shù)據(jù)庫中。解析獲取設備狀態(tài)信息,與記錄該設備狀態(tài)的全局變量進行比較來判斷該設備的狀態(tài)是否有變化,若有變化,將變化填寫至相應的數(shù)據(jù)庫表(FacilityStatus)中,并更新全局變量的數(shù)值。
設備狀態(tài)信息解析模塊的處理流程如下:
①接收到設備狀態(tài)信息,解析出設備站號、啟停狀態(tài)、運行狀態(tài)、開關機狀態(tài);
②首次獲取到信息后,將各個設備狀態(tài)記錄到全局對象中;
③將接收到的狀態(tài)與全局對象中記錄的狀態(tài)相比較;
④如果一致,返回處理下一條狀態(tài)數(shù)據(jù);
⑤若不一致,則在FacilityStatus表中新增加一條狀態(tài)信息,并更新全局對象中的內(nèi)容。
(3)報警信息解析模塊
報警信息解析模塊的主要功能是接收報警數(shù)據(jù),并對報警數(shù)據(jù)根據(jù)報警信息協(xié)議字段進行解析,同時將解析的報警數(shù)據(jù)進行處理,按照數(shù)據(jù)庫表要求,記錄至數(shù)據(jù)表中。
報警信息解析模塊的處理流程如下:
①接收報警數(shù)據(jù),解析提取報警ID、報警內(nèi)容、設備站號、解決狀態(tài);
②根據(jù)報警ID和設備站號,查詢WarningTypeInfo表獲取設備ID;
③根據(jù)報警ID,查詢WarningInfo表中是否已經(jīng)存在該報警;
④否,則將此報警信息插入到WarningInfo中,包含報警類型ID、設備ID、報警內(nèi)容、報警時間、ReadTag為未讀;
⑤是,則判斷解決狀態(tài)是否為已經(jīng)解決;
⑥若是,將此報警信息插入到WarningInfo中,包含報警類型ID、設備ID、報警內(nèi)容、報警解決時間、Read-Tag為未讀;
⑦若否,不做處理,表明該信息已經(jīng)存在,返回處理下一條報警數(shù)據(jù)。
(4)產(chǎn)品清單信息解析模塊
產(chǎn)品清單信息解析模塊的主要功能是獲取產(chǎn)品清單數(shù)據(jù),解析訂單號、物料二維碼信息、物料類型信息,并生成產(chǎn)品清單號,將信息寫入InstallList數(shù)據(jù)庫表中。
物料二維碼信息的采集可以分為兩種方式,一種是由設備直接提供給服務器,由本采集軟件進行解析;另外一種方式是由設備提供掃碼信號,觸發(fā)軟件進行掃碼,由本軟件直接采集二維碼信息,然后再處理,記錄至數(shù)據(jù)庫中。
4.2.5數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊的功能是定時查詢MesInfo表,獲取最新的訂單信息,并將訂單生產(chǎn)信息下發(fā)給產(chǎn)線設備,信息包括訂單號、生產(chǎn)數(shù)量、產(chǎn)品類型和開始生產(chǎn)命令。
本模塊具體處理流程如下:
(1)定時查詢是否有新的生產(chǎn)訂單信息;
(2)若有,將訂單信息發(fā)送給設備開始生產(chǎn);
(3)若無,繼續(xù)查詢,重復步驟(1)。
4.2.6數(shù)據(jù)庫操作模塊
數(shù)據(jù)庫操作模塊實現(xiàn)了軟件對數(shù)據(jù)庫的讀寫操作功能接口,包括數(shù)據(jù)庫訪問連接的建立,數(shù)據(jù)庫表的增加、刪除、修改、查詢接口函數(shù),方便對數(shù)據(jù)庫的操作。本模塊的任務包括:實現(xiàn)數(shù)據(jù)庫連接建立的函數(shù)接口;實現(xiàn)針對不同數(shù)據(jù)表的增加、刪除、修改、查詢操作的通用接口和部分特定接口;根據(jù)數(shù)據(jù)庫表,建立并初始化數(shù)據(jù)庫表對應的字典類型的對象。
數(shù)據(jù)存儲模塊需要給其他模塊提供的部分接口如下:
public static int InsertDBdate(string Table,string Field,string date):插入數(shù)據(jù)庫表數(shù)據(jù)功能接口;
public static int UpdateDB(string Table,string ID,string Field):更新數(shù)據(jù)庫表;
public static List
public static int Insert_Message_into_DB(string Table,string Field,string Values):數(shù)據(jù)庫中插入信息;
public static DataSet get_message_from_table(string tableName):獲取信息;
public static DataSet get_message_idTop_from_table (string tableName):從數(shù)據(jù)庫表中獲取最大ID。
4.2.7日志模塊
日志模塊能夠記錄數(shù)據(jù)采集軟件中發(fā)生的事件信息,根據(jù)這些信息可以進行排錯,并優(yōu)化軟件的性能。
為了解決MES系統(tǒng)與氫燃料電池自動化產(chǎn)線的數(shù)據(jù)交互問題,本文提出了數(shù)據(jù)采集系統(tǒng)的實現(xiàn)方法,并對實現(xiàn)的系統(tǒng)進行了測試。測試結果表明,該設計實現(xiàn)有效地滿足了數(shù)據(jù)交互的實時性、正確性,具有廣泛的應用前景。