李周利 韓路平
關(guān)鍵詞: 智能制造; 線程同步; 實時處理; 軟件設(shè)計; 數(shù)據(jù)存儲; 程序阻塞
中圖分類號: TN705?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A ? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2018)24?0125?03
Design and realization of upper computer software for intelligent manufacturing system
LI Zhouli, HAN Luping
(School of Electronic Engineering, Xian Shiyou University, Xian 710065, China)
Abstract: In an intelligent manufacturing control system, the status data and process data need to be saved for analytical processing to obtain the real?time running status of each subsystem. In allusion to the problems of large amount of processing data, much more burst data, and the low processing speed of data storage and extraction, an upper computer software design is proposed for intelligent manufacturing system. Relevant drive and application programs are compiled for the Windows CE 7.0 operating system by using the Embedded Visual C++. The modes of multiple threads, thread synchronization and asynchronous threads are comprehensively adopted to design the software of the data processing system, so as to realize functions of real?time data reception, storage, processing and display of various communication networks. The test results show that the method can effectively resolve the data packet loss problem and the application program blocking problem occurring when there exist busy tasks, which perfectly achieves real?time processing and analysis functions.
Keywords: intelligent manufacturing; thread synchronization; real?time processing; software design; data storage; program blocking
某全自動智能制造的控制系統(tǒng)具有高度自動化和高智能化的優(yōu)點,在勞動成本和資源節(jié)省上有很大優(yōu)勢。其在歐美和日本得到普遍認(rèn)可,在國內(nèi)正處于引進(jìn)消化和研發(fā)測試階段[1]。某全自動智能制造的控制系統(tǒng)由控制各個執(zhí)行機(jī)構(gòu)的下位機(jī)各系統(tǒng)和主要負(fù)責(zé)人機(jī)交互和數(shù)據(jù)處理的上位機(jī)系統(tǒng)兩部分組成。其中上位機(jī)是一個實時系統(tǒng),采集數(shù)據(jù)量和處理數(shù)據(jù)量比較大,系統(tǒng)中又需同時處理多個任務(wù),需要設(shè)計多線程使得多個任務(wù)可以并行處理來完成要求的任務(wù)。在常見的多線程應(yīng)用設(shè)計中,如GPRS終端雖然也使用多線程技術(shù)來接收數(shù)據(jù),但是沒有大數(shù)據(jù)的存儲和處理的要求[2],有的專注于數(shù)據(jù)采集[3],有的專注于數(shù)據(jù)存儲[4]。而上位機(jī)系統(tǒng)要完成數(shù)據(jù)采集和下發(fā)、數(shù)據(jù)存儲、數(shù)據(jù)提取和處理、數(shù)據(jù)分析及結(jié)果顯示和人機(jī)交互等環(huán)節(jié)的任務(wù),同時在人機(jī)交互中要求對操作響應(yīng)具有最優(yōu)先處理權(quán)。系統(tǒng)任務(wù)多又有實時處理的要求,采用多線程技術(shù)能夠避免某因一項任務(wù)長時間占用CPU時間而造成的數(shù)據(jù)丟失、人機(jī)交互界面反應(yīng)遲鈍等問題。
某全自動智能制造控制系統(tǒng)框架如圖1所示,其中上位機(jī)系統(tǒng)基于ARM處理器和Windows CE嵌入式操作系統(tǒng)[5?6]。上位機(jī)系統(tǒng)由CAN通信模塊、RS 485通信模塊、SQLite數(shù)據(jù)庫模塊[7]、數(shù)據(jù)處理模塊和人機(jī)交互界面等功能模塊組成。主要功能為:采集下位機(jī)生產(chǎn)數(shù)據(jù)和突發(fā)報警數(shù)據(jù);給下位機(jī)下發(fā)參數(shù);部分命令的下發(fā);數(shù)據(jù)的保存和數(shù)據(jù)庫管理;實時數(shù)據(jù)和歷史數(shù)據(jù)的分析處理;各類數(shù)據(jù)的界面顯示;折線圖和柱狀圖;人性化的人機(jī)交互。
2.1 ?關(guān)鍵要求
在每個模塊都有多個任務(wù)需要完成,因此設(shè)計23個線程。其中CAN通信模塊2個線程,RS 485通信模塊2個線程,數(shù)據(jù)庫管理模塊4個線程,數(shù)據(jù)處理分析模塊2個線程,定時器模擬線程12個和1個主線程。主線程負(fù)責(zé)處理用戶輸入、響應(yīng)用戶系統(tǒng)消息和命令,并負(fù)責(zé)調(diào)度各子線程。12個定時器模擬線程和主線程配合完成12個數(shù)據(jù)處理結(jié)果顯示頁面資源的管理并及時響應(yīng)用戶點擊事件完成數(shù)據(jù)刷新和更新。進(jìn)入主頁面默認(rèn)先打開PAGE_01頁面的線程Thread_PAGE_01,用于提取數(shù)據(jù)并按要求定時更新頁面數(shù)據(jù);當(dāng)用戶切換進(jìn)入下一個頁面時,首先關(guān)閉線程Thread_PAGE_01,并打開將要進(jìn)入頁面對應(yīng)線程Thread_PAGE_XX(XX:01~12)。利用線程同步這樣就保證只有一個頁面占用顯示屏等資源。切換過程流程圖如圖2所示,其中主線程負(fù)責(zé)響應(yīng)用戶切換命令并控制線程的開啟和關(guān)閉,其他12個線程負(fù)責(zé)按要求分組提取更新數(shù)據(jù)。
2.2 ?實現(xiàn)方法
一個應(yīng)用程序是由一個進(jìn)程和若干線程組成,進(jìn)程是計算機(jī)上的執(zhí)行實例,線程是程序的執(zhí)行分支,一個線程可以執(zhí)行一個任務(wù),多線程的應(yīng)用使得在一個應(yīng)用程序中可以并行處理多個任務(wù)。每一個應(yīng)用程序即進(jìn)程需要至少一個主執(zhí)行線程,該線程是系統(tǒng)在調(diào)用應(yīng)用程序時自主創(chuàng)建的,不需要用戶手動創(chuàng)建??梢愿鶕?jù)系統(tǒng)的要求建立多個線程,這樣就可以在一個進(jìn)程中并行處理各個任務(wù)。在一個進(jìn)程中的多個線程共享進(jìn)程的變量和其他資源,這樣對各線程間的數(shù)據(jù)傳遞提供方便[8]。
為了多個線程能夠協(xié)調(diào)地完成所規(guī)定的任務(wù),需要采用線程同步。EV C++的MFC提供了四種線程同步的方式:第一種是事件方法;第二種是信號燈方法;第三種是臨界區(qū)方法;第四種是互斥量方法。系統(tǒng)在數(shù)據(jù)顯示模塊使用臨界區(qū)的方法,在數(shù)據(jù)通信模塊采用事件方法。在整個系統(tǒng)運行過程中通過對線程的創(chuàng)建、掛起、喚醒、結(jié)束等操作來完成線程管理。
3.1 ?CAN通信模塊
PC機(jī)上只有一個CAN通道接口資源,為了完成數(shù)據(jù)的實時收發(fā)又能避免沖突在此引入線程同步,實現(xiàn)方法如圖3所示。接收數(shù)據(jù)線程Thread_CAN_Read和下發(fā)數(shù)據(jù)線程Thread_CAN_Write對該通道的占有需要建立互斥量,來避免沖突。 CAN通信是多主的通信方式,下位機(jī)之間也有相互通信,上位機(jī)的CAN節(jié)點需要等待總線空閑狀態(tài)時才能下發(fā)數(shù)據(jù),所以CAN數(shù)據(jù)下發(fā)線程用來下發(fā)數(shù)據(jù)直到數(shù)據(jù)下發(fā)成功[9],下發(fā)線程的實現(xiàn)過程如圖4所示。CAN接收數(shù)據(jù)線程用于在整個生產(chǎn)過程中接收實時生產(chǎn)數(shù)據(jù)和突發(fā)報警數(shù)據(jù),實現(xiàn)方法與發(fā)送線程類似,只是接收線程在機(jī)器的整個正常運行過程中都處于工作狀態(tài)。
3.2 ?數(shù)據(jù)庫管理模塊
數(shù)據(jù)庫管理模塊主要完成兩個任務(wù):數(shù)據(jù)的解析和存儲;歷史數(shù)據(jù)的提取和解析。用于保存的數(shù)據(jù)來自界面設(shè)置的數(shù)據(jù)和CAN接收到的各類數(shù)據(jù),由于CAN接收數(shù)據(jù)是實時進(jìn)行的,所以保存數(shù)據(jù)也需要實時保存完成。為了提高數(shù)據(jù)存儲的可靠性,首先將接收到的數(shù)據(jù)放在CAN緩存中,然后將緩存中的數(shù)據(jù)轉(zhuǎn)移到兩個公用緩存的其中一個里面,數(shù)據(jù)庫管理線程在這兩個數(shù)據(jù)緩存器中提取數(shù)據(jù),當(dāng)取完一個時清空干緩存區(qū),再提取下一個緩存區(qū)的數(shù)據(jù),同時將CAN結(jié)束緩存里面的數(shù)據(jù)向空的公用緩存中存放。 數(shù)據(jù)庫管理模塊的第二個功能是實時進(jìn)行數(shù)據(jù)分類處理,將歷史數(shù)據(jù)解析的結(jié)果一直保留,每次只更新最新一個時間段的數(shù)據(jù),這樣避免了數(shù)據(jù)的重復(fù)處理,提高數(shù)據(jù)庫數(shù)據(jù)管理效率[10]。
3.3 ?其他模塊的設(shè)計
上位機(jī)的RS 485模塊是RS 485總線中的主節(jié)點,主要負(fù)責(zé)將變頻器設(shè)置參數(shù)發(fā)送給指定的變頻器,并得到設(shè)置成功后的反饋信息。其工作過程和CAN通信類似。數(shù)據(jù)處理模塊主要功能是處理分析數(shù)據(jù)并得到最終計算結(jié)果,因為每個頁面都需要1萬~30萬條處理結(jié)果,切換頁面時在進(jìn)行解析分組計算會耗費大量時間,故設(shè)計線程在后臺把數(shù)據(jù)處理完畢并將結(jié)果保存等待提取。其他輔助模塊包括:主調(diào)度模塊,主要完成各模塊的管理任務(wù);實時監(jiān)控模塊,主要用來監(jiān)控系統(tǒng)實時運行狀態(tài);報警模塊,主要用來對報警故障的排除進(jìn)行指導(dǎo);下位機(jī)各系統(tǒng)監(jiān)控界面等。
軟件畫面包括主調(diào)度界面、通信顯示界面(見圖5),實時監(jiān)控界面(見圖6)、運行信息畫面、各單元歷史數(shù)據(jù)比較頁面、生產(chǎn)設(shè)置界面、報警界面等42個界面。本文中只給出幾個相對具有代表性的畫面通信顯示界面和實時監(jiān)控界面。接收到下位機(jī)數(shù)據(jù)后它的原始數(shù)據(jù)會立即顯示在數(shù)據(jù)接收顯示畫面中,后臺進(jìn)行數(shù)據(jù)解析和存儲,并通過算法線程處理,將最終處理結(jié)果顯示在實時監(jiān)控畫面上。
本文介紹全自動智能制造系統(tǒng)的上位機(jī)軟件的開發(fā)過程,在嵌入式操作系統(tǒng)Windows CE中利用多線程,在模塊內(nèi)部使用線程同步技術(shù),在模塊之間使用異步線程技術(shù),使數(shù)據(jù)處理效率大大提高,很好地滿足整個系統(tǒng)對實時性、穩(wěn)定性的要求。多線程的編程技術(shù)使得軟件可以在多種運行模式下切換自如,滿足處理實時數(shù)據(jù)的要求,對整個智能制造系統(tǒng)的正常可靠運行有重要意義。
參考文獻(xiàn)
[1] 徐惠君,張志,劉延華.轉(zhuǎn)杯紡紗機(jī)的高速化、智能化及自動化發(fā)展[J].紡織導(dǎo)報,2014(1):40?43.
XU Huijun, ZHANG Zhi, LIU Yanhua. Development of rotor spinning machinery: high?speed, intelligent and automatic [J]. China textile leader, 2014(1): 40?43.
[2] 朱峰.基于數(shù)據(jù)流和精確定位的多線程行人探測系統(tǒng)[J].電視技術(shù),2016,40(5):121?128.
ZHU Feng. Precise positioning multithreading predestrian detection system based on data stream [J]. Video engineering, 2016, 40(5): 121?128.
[3] 張萬君,李靜陽,牛敏杰,等.坦克火控系統(tǒng)故障的多線程數(shù)據(jù)采集方法[J].兵器裝備工程學(xué)報,2016,37(11):44?48.
ZHANG Wanjun, LI Jingyang, NIU Minjie, et al. Multithread fault data acquiring method for tank fire control system [J]. Journal of ordnance equipment engineering, 2016, 37(11): 44?48.
[4] 胡曉峰,張亮紅,劉文怡,等.VC多線程流水線在數(shù)據(jù)存儲系統(tǒng)中的設(shè)計與實現(xiàn)[J].電子器件,2016,39(4):964?967.
HU Xiaofeng, ZHANG Lianghong, LIU Wenyi, et al. Design and implementation of data storage system based on VC multithreading and pipelining [J]. Chinese journal of electron devices, 2016, 39(4): 964?967.
[5] Microsoft Corporation. Building a localized platform in Microsoft Windows CE platform builder 3.0 [EB/OL]. [2000?06?01]. https://msdn.microsoft.com/en?us/library/ms834426.aspx.
[6] Microsoft Corporation. Introducing Microsoft Windows CE 3.0 [EB/OL]. [2001?01?03]. https://msdn.microsoft.com/en?us/library/ms834413.aspx.
[7] 沈文偉,楊建華,陳葉富,等.嵌入式數(shù)據(jù)庫SQLite在可視嗅覺系統(tǒng)中的應(yīng)用[J].儀器儀表學(xué)報,2010,31(6):1289?1293.
SHEN Wenwei, YANG Jianhua, CHEN Yefu, et al. Application of embedded database SQLite in smell?seeing system [J]. Chinese journal of scientific instrument, 2010, 31(6): 1289?1293.
[8] 王孟祿,李浩,張鐳.基于多線程和隊列操作的TCM上位機(jī)系統(tǒng)設(shè)計[J].河南大學(xué)學(xué)報(自然科學(xué)版),2016,46(1):96?101.
WANG Menglu, LI Hao, ZHANG Lei. Upper computer system design of TCM based on multithreading and queue operations [J]. Journal of Henan University (Natural science), 2016, 46(1): 96?101.
[9] 張梁,王景存,梅鏢.基于CAN總線的中控主機(jī)的系統(tǒng)設(shè)計[J].計算機(jī)測量與控制,2016,24(2):264?266.
ZHANG Liang, WANG Jingcun, MEI Biao. A center control computer system based on CAN bus [J]. Computer measurement & control, 2016, 24(2): 264?266.
[10] 馬林.基于SQLite的個人通信錄管理系統(tǒng)的設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2015.
MA Lin. Design and implementation of personal address book management system based on SQLite [D]. Changchun: Jilin University, 2015.