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