• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > 基于高檔數控的實時多任務實現

    基于高檔數控的實時多任務實現

    作者: 時間:2011-04-07 來源:網絡 收藏

    摘要:為了解決系統對控制軟件性的要求,提出了分時并行處理的設計方法,以環境下多線程技術的原理為依據,用Delphi提供的多線程編程組件完成了系統線程的具體,并且以開發實例的方式給出了多線程技術在系統響應中的應用。實時多,顯著提高了CPU的利用率,并使系統的可靠性得到了保證。
    關鍵詞:系統;分時并行處理;實時控制;多線程技術

    0 引言
    實時性是數控系統一項重要的性能指標。
    通信在IPC(Industrial Personal Computer)與運動控制器構成的開放式數控系統開發平臺上,雖然這種主從式結構,確保了運動控制指令在運動控制器內高速、實時的被執行,但在PC平臺上,仍需要完成諸如實時顯示、預處理計算、系統狀態監控等許多。為了保證系統的實時性能,擬采用多線程技術,通過多并行處理的方式,提高系統實時性。

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

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


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 阜宁县| 沭阳县| 昌宁县| 温泉县| 遂平县| 彭阳县| 沙洋县| 保靖县| 海兴县| 赤城县| 突泉县| 天峨县| 滨州市| 明水县| 龙海市| 渭南市| 临桂县| 宜君县| 金坛市| 黔江区| 遵义市| SHOW| 高雄县| 林芝县| 清河县| 会东县| 聂拉木县| 宜兰县| 黔东| 罗江县| 航空| 连江县| 亚东县| 亳州市| 广汉市| 蓬莱市| 红安县| 金昌市| 宜良县| 普宁市| 大庆市|