當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]摘要:為了解決高檔數(shù)控系統(tǒng)對控制軟件實(shí)時(shí)性的要求,提出了分時(shí)并行處理的設(shè)計(jì)方法,以實(shí)時(shí)環(huán)境下多線程技術(shù)的原理為依據(jù),用Delphi提供的多線程編程組件完成了系統(tǒng)線程的具體實(shí)現(xiàn),并且以開發(fā)實(shí)例的方式給出了多線

摘要:為了解決高檔數(shù)控系統(tǒng)對控制軟件實(shí)時(shí)性的要求,提出了分時(shí)并行處理的設(shè)計(jì)方法,以實(shí)時(shí)環(huán)境下多線程技術(shù)的原理為依據(jù),用Delphi提供的多線程編程組件完成了系統(tǒng)線程的具體實(shí)現(xiàn),并且以開發(fā)實(shí)例的方式給出了多線程技術(shù)在實(shí)現(xiàn)數(shù)控系統(tǒng)實(shí)時(shí)響應(yīng)中的應(yīng)用。實(shí)時(shí)多任務(wù)的實(shí)現(xiàn),顯著提高了CPU的利用率,并使系統(tǒng)的可靠性得到了保證。
關(guān)鍵詞:高檔數(shù)控系統(tǒng);分時(shí)并行處理;實(shí)時(shí)控制;多線程技術(shù)

0 引言
    實(shí)時(shí)性是數(shù)控系統(tǒng)一項(xiàng)重要的性能指標(biāo)。
    通信在IPC(Industrial Personal Computer)與運(yùn)動(dòng)控制器構(gòu)成的開放式數(shù)控系統(tǒng)開發(fā)平臺上,雖然這種主從式結(jié)構(gòu),確保了運(yùn)動(dòng)控制指令在運(yùn)動(dòng)控制器內(nèi)高速、實(shí)時(shí)的被執(zhí)行,但在PC平臺上,仍需要完成諸如實(shí)時(shí)顯示、預(yù)處理計(jì)算、系統(tǒng)狀態(tài)監(jiān)控等許多任務(wù)。為了保證系統(tǒng)的實(shí)時(shí)性能,擬采用多線程技術(shù),通過多任務(wù)并行處理的方式,提高系統(tǒng)實(shí)時(shí)性。

1 進(jìn)程與線程以及多線程技術(shù)
    Windows操作系統(tǒng)既支持多進(jìn)程,又支持多線程。一個(gè)進(jìn)程就是應(yīng)用程序的一個(gè)實(shí)例,一次執(zhí)行過程也就是調(diào)入內(nèi)存準(zhǔn)備執(zhí)行的程序,包括當(dāng)前執(zhí)行的應(yīng)用程序的執(zhí)行代碼和程序執(zhí)行相關(guān)的一些環(huán)境信息。每個(gè)進(jìn)程擁有整臺計(jì)算機(jī)的資源,無須知道其他進(jìn)程在計(jì)算機(jī)中的信息。通常每個(gè)進(jìn)程至少有一個(gè)線程在執(zhí)行所屬地址空間中的代碼,該線程稱為主線程,如果該主線程運(yùn)行結(jié)束,系統(tǒng)將自動(dòng)清除進(jìn)程及其他地址空間。
    線程是進(jìn)程內(nèi)部執(zhí)行的路徑,是操作系統(tǒng)分配CPU時(shí)間的基本實(shí)體,是程序運(yùn)行的最小單位。每個(gè)進(jìn)程都由主線程開始進(jìn)行應(yīng)用程序的執(zhí)行。線程由一個(gè)堆棧、CPU寄存器的狀態(tài)和系統(tǒng)調(diào)用列表中的一個(gè)人口組成。每個(gè)進(jìn)程可以包含一個(gè)以上的線程,這些線程可以同時(shí)獨(dú)立地執(zhí)行進(jìn)程地址空間中的代碼,共享進(jìn)程中的所有資源。
    Windows系統(tǒng)分配處理器時(shí)間的最小單位是線程,系統(tǒng)不停地在各個(gè)線程之間切換。在PC機(jī)中,同一時(shí)間只有一個(gè)線程在運(yùn)行。通常系統(tǒng)為每個(gè)線程劃分的時(shí)間片很小(ms級別),這樣快速系統(tǒng)的實(shí)時(shí)性就有了保障。
    要實(shí)現(xiàn)多線程編程,可建立輔助線程(Worker Thread)和用戶界面線程(User Interface Thread)。輔助線程主要用來執(zhí)行數(shù)控程序、坐標(biāo)顯示、動(dòng)態(tài)仿真和數(shù)據(jù)預(yù)處理;用戶界面線程用來處理用戶的輸入,響應(yīng)用戶產(chǎn)生的事件和消息。

2 實(shí)時(shí)多任務(wù)的實(shí)現(xiàn)
    數(shù)控系統(tǒng)軟件具有實(shí)時(shí)性和多任務(wù)兩大特點(diǎn)。數(shù)控系統(tǒng)中要管理和控制的任務(wù)很多,如當(dāng)數(shù)控系統(tǒng)正處于加工控制狀態(tài)時(shí),為了保證加工的連續(xù)性,在各個(gè)程序段之間不停頓,各數(shù)控加工程序段的預(yù)處理、插補(bǔ)計(jì)算、位置控制和各種輔助控制任務(wù)都要及時(shí)進(jìn)行;為了使操作人員及時(shí)了解和干預(yù)數(shù)控系統(tǒng)的工作狀態(tài),系統(tǒng)在執(zhí)行加工任務(wù)的同時(shí)還應(yīng)該及時(shí)進(jìn)行一些人機(jī)交互工作,即顯示加工狀態(tài)、接收操作人員通過操作面板輸入的各種改變系統(tǒng)狀態(tài)的控制信號等。為了及時(shí)檢查和預(yù)報(bào)軟、硬件的各種故障,系統(tǒng)在運(yùn)行控制程序和人機(jī)交互程序同時(shí)還要及時(shí)運(yùn)行診斷程序;此外,系統(tǒng)還可能被要求及時(shí)完成通信等其他任務(wù)。可見,理想的數(shù)控程序,應(yīng)具有實(shí)時(shí)多任務(wù)的處理能力。
    針對數(shù)控系統(tǒng)軟件的實(shí)時(shí)性和多任務(wù)性兩大特點(diǎn),采用分時(shí)并行處理技術(shù)來確定數(shù)控系統(tǒng)軟件結(jié)構(gòu)。分時(shí)并行處理技術(shù)是指一個(gè)處理器同時(shí)完成多種任務(wù)。系統(tǒng)用時(shí)間片輪換的方式處理和完成各任務(wù),即按照某種輪換次序給每個(gè)任務(wù)分配一段CPU時(shí)間進(jìn)行各任務(wù)的處理。從微觀上看,各任務(wù)分時(shí)占用CPU;從宏觀的角度來看,在一段時(shí)間內(nèi),CPU并行完成了多個(gè)任務(wù)。在軟件設(shè)計(jì)中,利用Windows的多線程技術(shù)以“資源分時(shí)共享”為原則,有效地解決CNC系統(tǒng)的實(shí)時(shí)多任務(wù)問題。應(yīng)用優(yōu)先級搶占方式來進(jìn)行線程調(diào)度,以滿足系統(tǒng)的實(shí)時(shí)性要求,利用時(shí)間重疊和資源共享的方法來實(shí)現(xiàn)并行處理。
2.1 系統(tǒng)線程的總體設(shè)計(jì)
    Windows提供兩種線程,輔助線程和主線程。主線程有窗口,因此它有自己的消息循環(huán),可以處理消息,使程序能夠迅速響應(yīng)命令和其他事件;輔助線程沒有窗口,所以它不需要處理消息。它可用于完成一些費(fèi)時(shí)的工作,以免在由主線程處理這些工作時(shí)阻礙程序消息的處理。軟件設(shè)計(jì)時(shí)有并行要求的模塊置于獨(dú)立的線程中,以實(shí)現(xiàn)系統(tǒng)的多任務(wù)并行工作。根據(jù)對系統(tǒng)實(shí)時(shí)多任務(wù)的分析,將軟件系統(tǒng)中的線程設(shè)計(jì)為:
    (1)主線程
    主線程是應(yīng)用系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的第一個(gè)線程,其他線程都是由主線程直接或間接創(chuàng)建。主線程主要負(fù)責(zé)創(chuàng)建客戶界面、數(shù)據(jù)顯示、與客戶交互、系統(tǒng)初始化以及對其他線程進(jìn)行監(jiān)控。
    (2)譯碼線程
    譯碼線程是由主線程創(chuàng)建的,負(fù)責(zé)程序的譯碼,并將計(jì)算結(jié)構(gòu)存入公共數(shù)據(jù)區(qū),為通信線程提供數(shù)據(jù)來源。
    (3)通信線程
    通信線程負(fù)責(zé)上下位機(jī)間的數(shù)據(jù)傳輸。上下位機(jī)間的傳輸以一來一回的形式進(jìn)行。通信線程接收到下位機(jī)傳來的數(shù)據(jù),根據(jù)事先定義好的協(xié)議對它進(jìn)行識別,并根據(jù)識別的結(jié)果來判斷是否需要將插補(bǔ)命令等傳給下位機(jī),還需要通知主線程來處理異常情況。
    通信線程所承擔(dān)的任務(wù)是強(qiáng)實(shí)時(shí)周期性任務(wù),譯碼線程所承擔(dān)的任務(wù)是弱實(shí)時(shí)性任務(wù),主線程承擔(dān)的是實(shí)時(shí)突發(fā)性任務(wù)。因此根據(jù)系統(tǒng)任務(wù)實(shí)時(shí)性強(qiáng)弱不同,可為各個(gè)線程設(shè)置相應(yīng)的優(yōu)先級來確保實(shí)時(shí)性。主線程與進(jìn)程的優(yōu)先級相同,通信線程的優(yōu)先級高于主線程,而譯碼線程的優(yōu)先級高于主線程低于通信線程。
     在線程優(yōu)先級設(shè)置中,通信線程的優(yōu)先級最高,這使得通信線程在需要CPU時(shí)間片等資源時(shí),能夠順利的搶占其他線程的資源,保證上下位機(jī)的通信順暢,使下位機(jī)在加工時(shí)能夠平穩(wěn)的實(shí)現(xiàn)進(jìn)程,并且使下位機(jī)在出現(xiàn)異常情況時(shí)能及時(shí)通知上位機(jī)。由于通信這一動(dòng)作是依照某種頻率進(jìn)行的,因此通信線程不會(huì)一直占用CPU資源,從而不會(huì)因?yàn)樗膬?yōu)先級高使其他線程無法運(yùn)行。
    具體實(shí)現(xiàn)原理架構(gòu)如圖1所示。


2.2 系統(tǒng)線程的具體實(shí)現(xiàn)
    Delphi提供了許多與多線程編程相關(guān)的組件,其中最重要的是Tthread類,本文就是利用它來實(shí)現(xiàn)多線程編程。該類封裝了大多數(shù)與線程相關(guān)的方法,使用Tthread類大大簡化了多線程程序的開發(fā)步驟。Tthread類是一個(gè)抽象類,不可以直接創(chuàng)建它的實(shí)例,但是可以創(chuàng)建它的派生類。創(chuàng)建方法在Delphi菜單中依次選擇“File”→“New”→“Other”→“New”,選擇“Thread Object”項(xiàng),在對話框中輸入新的線程類的名稱,確認(rèn)后即創(chuàng)建了一個(gè)新的線程類:
   
   
    其中:“private”及“protected”用來定義變量和程序函數(shù),“procedure Execute;override;”是線程函數(shù),用來編寫線程的執(zhí)行部分。同時(shí)Delphi還提供了各種函數(shù)用來運(yùn)行和終止線程等。創(chuàng)建了線程的派生類后可以生成該類的對象,來表示應(yīng)用程序的執(zhí)行線程。各個(gè)線程創(chuàng)建好后將NC的解釋程序、通信程序等放在各自線程函數(shù)內(nèi),再創(chuàng)建線程的對象,設(shè)置幾個(gè)線程就生成幾個(gè)對象,在對象內(nèi)編寫打開或終止線程等函數(shù)來控制線程的運(yùn)行。

3 結(jié)語
    基于Windows平臺的高檔數(shù)控實(shí)時(shí)操作系統(tǒng)的開發(fā),實(shí)現(xiàn)了不僅能向Windows平臺添加實(shí)時(shí)功能,而且使這些實(shí)時(shí)功能具有很好的可擴(kuò)展性。本課題下步的目標(biāo)是將此實(shí)時(shí)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)在Windows XPEmbedded平臺上,使其具備高檔數(shù)控系統(tǒng)需要的嵌入式設(shè)備的特性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉