李周利 韓路平
關(guān)鍵詞: 智能制造; 線程同步; 實(shí)時(shí)處理; 軟件設(shè)計(jì); 數(shù)據(jù)存儲(chǔ); 程序阻塞
中圖分類號(hào): TN705?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 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
某全自動(dòng)智能制造的控制系統(tǒng)具有高度自動(dòng)化和高智能化的優(yōu)點(diǎn),在勞動(dòng)成本和資源節(jié)省上有很大優(yōu)勢(shì)。其在歐美和日本得到普遍認(rèn)可,在國(guó)內(nèi)正處于引進(jìn)消化和研發(fā)測(cè)試階段[1]。某全自動(dòng)智能制造的控制系統(tǒng)由控制各個(gè)執(zhí)行機(jī)構(gòu)的下位機(jī)各系統(tǒng)和主要負(fù)責(zé)人機(jī)交互和數(shù)據(jù)處理的上位機(jī)系統(tǒng)兩部分組成。其中上位機(jī)是一個(gè)實(shí)時(shí)系統(tǒng),采集數(shù)據(jù)量和處理數(shù)據(jù)量比較大,系統(tǒng)中又需同時(shí)處理多個(gè)任務(wù),需要設(shè)計(jì)多線程使得多個(gè)任務(wù)可以并行處理來(lái)完成要求的任務(wù)。在常見(jiàn)的多線程應(yīng)用設(shè)計(jì)中,如GPRS終端雖然也使用多線程技術(shù)來(lái)接收數(shù)據(jù),但是沒(méi)有大數(shù)據(jù)的存儲(chǔ)和處理的要求[2],有的專注于數(shù)據(jù)采集[3],有的專注于數(shù)據(jù)存儲(chǔ)[4]。而上位機(jī)系統(tǒng)要完成數(shù)據(jù)采集和下發(fā)、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)提取和處理、數(shù)據(jù)分析及結(jié)果顯示和人機(jī)交互等環(huán)節(jié)的任務(wù),同時(shí)在人機(jī)交互中要求對(duì)操作響應(yīng)具有最優(yōu)先處理權(quán)。系統(tǒng)任務(wù)多又有實(shí)時(shí)處理的要求,采用多線程技術(shù)能夠避免某因一項(xiàng)任務(wù)長(zhǎng)時(shí)間占用CPU時(shí)間而造成的數(shù)據(jù)丟失、人機(jī)交互界面反應(yīng)遲鈍等問(wèn)題。
某全自動(dòng)智能制造控制系統(tǒng)框架如圖1所示,其中上位機(jī)系統(tǒng)基于ARM處理器和Windows CE嵌入式操作系統(tǒng)[5?6]。上位機(jī)系統(tǒng)由CAN通信模塊、RS 485通信模塊、SQLite數(shù)據(jù)庫(kù)模塊[7]、數(shù)據(jù)處理模塊和人機(jī)交互界面等功能模塊組成。主要功能為:采集下位機(jī)生產(chǎn)數(shù)據(jù)和突發(fā)報(bào)警數(shù)據(jù);給下位機(jī)下發(fā)參數(shù);部分命令的下發(fā);數(shù)據(jù)的保存和數(shù)據(jù)庫(kù)管理;實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)的分析處理;各類數(shù)據(jù)的界面顯示;折線圖和柱狀圖;人性化的人機(jī)交互。
2.1 ?關(guān)鍵要求
在每個(gè)模塊都有多個(gè)任務(wù)需要完成,因此設(shè)計(jì)23個(gè)線程。其中CAN通信模塊2個(gè)線程,RS 485通信模塊2個(gè)線程,數(shù)據(jù)庫(kù)管理模塊4個(gè)線程,數(shù)據(jù)處理分析模塊2個(gè)線程,定時(shí)器模擬線程12個(gè)和1個(gè)主線程。主線程負(fù)責(zé)處理用戶輸入、響應(yīng)用戶系統(tǒng)消息和命令,并負(fù)責(zé)調(diào)度各子線程。12個(gè)定時(shí)器模擬線程和主線程配合完成12個(gè)數(shù)據(jù)處理結(jié)果顯示頁(yè)面資源的管理并及時(shí)響應(yīng)用戶點(diǎn)擊事件完成數(shù)據(jù)刷新和更新。進(jìn)入主頁(yè)面默認(rèn)先打開(kāi)PAGE_01頁(yè)面的線程Thread_PAGE_01,用于提取數(shù)據(jù)并按要求定時(shí)更新頁(yè)面數(shù)據(jù);當(dāng)用戶切換進(jìn)入下一個(gè)頁(yè)面時(shí),首先關(guān)閉線程Thread_PAGE_01,并打開(kāi)將要進(jìn)入頁(yè)面對(duì)應(yīng)線程Thread_PAGE_XX(XX:01~12)。利用線程同步這樣就保證只有一個(gè)頁(yè)面占用顯示屏等資源。切換過(guò)程流程圖如圖2所示,其中主線程負(fù)責(zé)響應(yīng)用戶切換命令并控制線程的開(kāi)啟和關(guān)閉,其他12個(gè)線程負(fù)責(zé)按要求分組提取更新數(shù)據(jù)。
2.2 ?實(shí)現(xiàn)方法
一個(gè)應(yīng)用程序是由一個(gè)進(jìn)程和若干線程組成,進(jìn)程是計(jì)算機(jī)上的執(zhí)行實(shí)例,線程是程序的執(zhí)行分支,一個(gè)線程可以執(zhí)行一個(gè)任務(wù),多線程的應(yīng)用使得在一個(gè)應(yīng)用程序中可以并行處理多個(gè)任務(wù)。每一個(gè)應(yīng)用程序即進(jìn)程需要至少一個(gè)主執(zhí)行線程,該線程是系統(tǒng)在調(diào)用應(yīng)用程序時(shí)自主創(chuàng)建的,不需要用戶手動(dòng)創(chuàng)建??梢愿鶕?jù)系統(tǒng)的要求建立多個(gè)線程,這樣就可以在一個(gè)進(jìn)程中并行處理各個(gè)任務(wù)。在一個(gè)進(jìn)程中的多個(gè)線程共享進(jìn)程的變量和其他資源,這樣對(duì)各線程間的數(shù)據(jù)傳遞提供方便[8]。
為了多個(gè)線程能夠協(xié)調(diào)地完成所規(guī)定的任務(wù),需要采用線程同步。EV C++的MFC提供了四種線程同步的方式:第一種是事件方法;第二種是信號(hào)燈方法;第三種是臨界區(qū)方法;第四種是互斥量方法。系統(tǒng)在數(shù)據(jù)顯示模塊使用臨界區(qū)的方法,在數(shù)據(jù)通信模塊采用事件方法。在整個(gè)系統(tǒng)運(yùn)行過(guò)程中通過(guò)對(duì)線程的創(chuàng)建、掛起、喚醒、結(jié)束等操作來(lái)完成線程管理。
3.1 ?CAN通信模塊
PC機(jī)上只有一個(gè)CAN通道接口資源,為了完成數(shù)據(jù)的實(shí)時(shí)收發(fā)又能避免沖突在此引入線程同步,實(shí)現(xiàn)方法如圖3所示。接收數(shù)據(jù)線程Thread_CAN_Read和下發(fā)數(shù)據(jù)線程Thread_CAN_Write對(duì)該通道的占有需要建立互斥量,來(lái)避免沖突。 CAN通信是多主的通信方式,下位機(jī)之間也有相互通信,上位機(jī)的CAN節(jié)點(diǎn)需要等待總線空閑狀態(tài)時(shí)才能下發(fā)數(shù)據(jù),所以CAN數(shù)據(jù)下發(fā)線程用來(lái)下發(fā)數(shù)據(jù)直到數(shù)據(jù)下發(fā)成功[9],下發(fā)線程的實(shí)現(xiàn)過(guò)程如圖4所示。CAN接收數(shù)據(jù)線程用于在整個(gè)生產(chǎn)過(guò)程中接收實(shí)時(shí)生產(chǎn)數(shù)據(jù)和突發(fā)報(bào)警數(shù)據(jù),實(shí)現(xiàn)方法與發(fā)送線程類似,只是接收線程在機(jī)器的整個(gè)正常運(yùn)行過(guò)程中都處于工作狀態(tài)。
3.2 ?數(shù)據(jù)庫(kù)管理模塊
數(shù)據(jù)庫(kù)管理模塊主要完成兩個(gè)任務(wù):數(shù)據(jù)的解析和存儲(chǔ);歷史數(shù)據(jù)的提取和解析。用于保存的數(shù)據(jù)來(lái)自界面設(shè)置的數(shù)據(jù)和CAN接收到的各類數(shù)據(jù),由于CAN接收數(shù)據(jù)是實(shí)時(shí)進(jìn)行的,所以保存數(shù)據(jù)也需要實(shí)時(shí)保存完成。為了提高數(shù)據(jù)存儲(chǔ)的可靠性,首先將接收到的數(shù)據(jù)放在CAN緩存中,然后將緩存中的數(shù)據(jù)轉(zhuǎn)移到兩個(gè)公用緩存的其中一個(gè)里面,數(shù)據(jù)庫(kù)管理線程在這兩個(gè)數(shù)據(jù)緩存器中提取數(shù)據(jù),當(dāng)取完一個(gè)時(shí)清空干緩存區(qū),再提取下一個(gè)緩存區(qū)的數(shù)據(jù),同時(shí)將CAN結(jié)束緩存里面的數(shù)據(jù)向空的公用緩存中存放。 數(shù)據(jù)庫(kù)管理模塊的第二個(gè)功能是實(shí)時(shí)進(jìn)行數(shù)據(jù)分類處理,將歷史數(shù)據(jù)解析的結(jié)果一直保留,每次只更新最新一個(gè)時(shí)間段的數(shù)據(jù),這樣避免了數(shù)據(jù)的重復(fù)處理,提高數(shù)據(jù)庫(kù)數(shù)據(jù)管理效率[10]。
3.3 ?其他模塊的設(shè)計(jì)
上位機(jī)的RS 485模塊是RS 485總線中的主節(jié)點(diǎn),主要負(fù)責(zé)將變頻器設(shè)置參數(shù)發(fā)送給指定的變頻器,并得到設(shè)置成功后的反饋信息。其工作過(guò)程和CAN通信類似。數(shù)據(jù)處理模塊主要功能是處理分析數(shù)據(jù)并得到最終計(jì)算結(jié)果,因?yàn)槊總€(gè)頁(yè)面都需要1萬(wàn)~30萬(wàn)條處理結(jié)果,切換頁(yè)面時(shí)在進(jìn)行解析分組計(jì)算會(huì)耗費(fèi)大量時(shí)間,故設(shè)計(jì)線程在后臺(tái)把數(shù)據(jù)處理完畢并將結(jié)果保存等待提取。其他輔助模塊包括:主調(diào)度模塊,主要完成各模塊的管理任務(wù);實(shí)時(shí)監(jiān)控模塊,主要用來(lái)監(jiān)控系統(tǒng)實(shí)時(shí)運(yùn)行狀態(tài);報(bào)警模塊,主要用來(lái)對(duì)報(bào)警故障的排除進(jìn)行指導(dǎo);下位機(jī)各系統(tǒng)監(jiān)控界面等。
軟件畫面包括主調(diào)度界面、通信顯示界面(見(jiàn)圖5),實(shí)時(shí)監(jiān)控界面(見(jiàn)圖6)、運(yùn)行信息畫面、各單元?dú)v史數(shù)據(jù)比較頁(yè)面、生產(chǎn)設(shè)置界面、報(bào)警界面等42個(gè)界面。本文中只給出幾個(gè)相對(duì)具有代表性的畫面通信顯示界面和實(shí)時(shí)監(jiān)控界面。接收到下位機(jī)數(shù)據(jù)后它的原始數(shù)據(jù)會(huì)立即顯示在數(shù)據(jù)接收顯示畫面中,后臺(tái)進(jìn)行數(shù)據(jù)解析和存儲(chǔ),并通過(guò)算法線程處理,將最終處理結(jié)果顯示在實(shí)時(shí)監(jiān)控畫面上。
本文介紹全自動(dòng)智能制造系統(tǒng)的上位機(jī)軟件的開(kāi)發(fā)過(guò)程,在嵌入式操作系統(tǒng)Windows CE中利用多線程,在模塊內(nèi)部使用線程同步技術(shù),在模塊之間使用異步線程技術(shù),使數(shù)據(jù)處理效率大大提高,很好地滿足整個(gè)系統(tǒng)對(duì)實(shí)時(shí)性、穩(wěn)定性的要求。多線程的編程技術(shù)使得軟件可以在多種運(yùn)行模式下切換自如,滿足處理實(shí)時(shí)數(shù)據(jù)的要求,對(duì)整個(gè)智能制造系統(tǒng)的正??煽窟\(yùn)行有重要意義。
參考文獻(xiàn)
[1] 徐惠君,張志,劉延華.轉(zhuǎn)杯紡紗機(jī)的高速化、智能化及自動(dòng)化發(fā)展[J].紡織導(dǎo)報(bà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ù)流和精確定位的多線程行人探測(cè)系統(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] 張萬(wàn)君,李靜陽(yáng),牛敏杰,等.坦克火控系統(tǒng)故障的多線程數(shù)據(jù)采集方法[J].兵器裝備工程學(xué)報(bào),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ù)存儲(chǔ)系統(tǒng)中的設(shè)計(jì)與實(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ù)庫(kù)SQLite在可視嗅覺(jué)系統(tǒng)中的應(yīng)用[J].儀器儀表學(xué)報(bào),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] 王孟祿,李浩,張鐳.基于多線程和隊(duì)列操作的TCM上位機(jī)系統(tǒng)設(shè)計(jì)[J].河南大學(xué)學(xué)報(bào)(自然科學(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].計(jì)算機(jī)測(cè)量與控制,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的個(gè)人通信錄管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)春:吉林大學(xué),2015.
MA Lin. Design and implementation of personal address book management system based on SQLite [D]. Changchun: Jilin University, 2015.