韩国精品一区二区三区无码视频,国产午夜福利视频在线观看,永久黄网站色视频免费无下载,色婷婷av一区二区三区浪潮

【請登錄】【免費注冊】

首頁新聞技術產品供應二手培訓展會物流維修求購招商招標招聘企業

技術

搜索
技術文章機械知識技術技巧論文試題維修知識招投標知識
您的位置:盤古機械網>技術文章>技術技巧>詳情

多線程技術在實現數控系統的實時響應中的應用

時間:2009-12-07瀏覽:316次收藏
關鍵字:
    如何完成多任務的實時控制,是開發數控系統必須解決的關鍵問題。本文介紹了多線程技術的基本概念,分析了C++ builder環境下多線程技術的應用方法,通過開發實例給出了多線程技術在實現數控系統的實時響應中的應用。

1 引言

  實時性是數控系統一項重要的性能指標。

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

  本開發平臺采用IPC+運動控制器模式的開放式數控系統,主要的運動控制由固高公司的GT400-SV通用運動控制器完成。它提供C語言函數庫GT400sv.lib和Windows動態連接庫GT400.dll,能夠實現復雜的控制功能。數控系統的開發是將這些控制函數與自己控制系統所需的數據處理、界面顯示、用戶接口等應用程序模塊集成在一起,建造符合特定應用要求的控制系統。

2 進程與線程以及多線程技術

  Windows操作系統既支持多進程,又支持多線程。一個進程就是應用程序的一個實例,一次執行過程也就是調入內存準備執行的程序,包括當前執行的應用程序的執行代碼和程序執行相關的一些環境信息。每個進程擁有整臺計算機的資源,無須知道其他進程在計算機中的信息。通常每個進程至少有一個線程在執行所屬地址空間中的代碼,該線程稱為主線程,如果該主線程運行結束,系統將自動清除進程及其他地址空間。

  線程是進程內部執行的路徑,是操作系統分配CPU時間的基本實體,是程序運行的最小單位。每個進程都由主線程開始進行應用程序的執行。線程由一個堆棧、CPU寄存器的狀態和系統調用列表中的一個入口組成。每個進程可以包含一個以上的線程,這些線程可以同時獨立地執行進程地址空間中的代碼,共享進程中的所有資源。

  Windows系統分配處理器時間的最小單位是線程,系統不停地在各個線程之間切換。在PC機中,同一時間只有一個線程在運行。通常系統為每個線程劃分的時間片很小(ms級別),這樣快速系統的實時性就有了保障。

  要實現多線程編程,可建立輔助線程(worker Thread)和用戶界面線程(User Interface Thread)。輔助線程主要用來執行數控程序、坐標顯示、動態仿真和數據預處理;用戶界面線程用來處理用戶的輸入,響應用戶產生的事件和消息。

3 數控系統實時性分析

  3.1 線程的實時性

  數控系統需要完成的任務有很多,這些任務中,優先級的要求級別不一樣。據此,可以利用Windows系統的多任務、搶占式的特點和多線程技術將各個任務分給不同的線程,并賦予各個線程不同的優先級,當高優先級的線程執行時,即實時性要求高的任務需要執行時,可以自動地終止其他線程的工作轉而執行這一線程。通過這一方法,可以實現數控系統所要求的實時性。

  3.2 輔助線程創建

  本開發系統中所創建的輔助線程可大致劃分如下:

  (1)坐標顯示線程
  在手動脈沖面板、電動控制面板和增量控制面板中,可實時顯示X、Y、Z三個運動軸的坐標。這樣可使操作人員直觀看到三軸的實際坐標。實時性要求較低,所以使用最低優先級:Lowest Normal。

  (2)圖形顯示線程
  圖像顯示線程用于在動態仿真面板中執行圖形繪制的指令。通過圖形顯示,操作者可以在動態仿真的同時,對人機界面進行操作。這一線程實時性要求較低,等級為:Blow Normal。

  (3)IO狀態控制線程
  此線程用于檢測由系統輸入的各個離散量,以及從數控程序得到的指令來輸出機床各離散量的狀態。此線程優先級比前兩線程高,等級為:Normal。

  (4)數據預處理線程
  數據預處理線程主要負責完成編碼形式轉換、刀具長度補償、刀具半徑補償和公英制轉換等運動控制數據預處理函數的執行。等級為:Normal。

  (5)運動控制線程
  此線程主要用于運動控制器執行數控代碼函數的運行。負責向緩沖器輸入運動控制命令,清空緩沖器和打開關閉緩沖器等操作。等級稍高:Above Normal。

  (6)緊急控制線程
  此線程處理一些需要機床立即做出反應的時間,如機床的急停等。優先級最高,等級為:Highest。

  本系統中所創建的輔助線程可大致劃分如下表所示。

表 線程的創建及優先級設置

  在Windows操作系統中,多線程的實現需要調用一系列的API函數,如CreateThread、ResumeThread等,比較麻煩且容易出錯。使用新一代RAD開發工具C++ Builder中的TThread類,可以方便地實現多線程的編程,特別是對于系統開發語言是C的Windows系列操作系統,它具有其它編程語言無可比擬的優勢。

  4.1 線程的創建

  在C++ Builder中雖然用TThread對象說明了線程的概念,但是TThread對象本身并不完整,需要在TThread下新建其子類,并重載Execute來使用線程對象。

  在C++ Builder IDE環境下選擇菜單File|New,在New欄中選中Thread Object,按OK,在彈出的對話框中輸入TThread對象子類的名字CoordinateDisplyThread,自動創建了一個 CoordinateDisply的TThread子類。同時在編輯器中創建了一個名為CoordinateDisplyThread單元。

  4.2 線程的實現

  在創建的代碼中Execute()函數就是要在線程中實現的任務的代碼所在處。在原Unit1.cpp代碼中包含了 CoordinateDisplayThread.h文件。使用時,動態創建一個TCoordinateDisplay對象,具體執行的代碼就是 Execute()方法重載的代碼。

  由于Execute()中添加的線程運行時所需要執行的函數調用了VCL組件,而VCL對象不具有線程安全性,它們的特性和方法只能在主線程中訪問,所以用Synchronize()函數將坐標顯示函數進行包裝。而坐標顯示函數需聲明:void_fastcall Function()。

  下面以坐標顯示線程即CoordinateDisplayThread的實現步驟為例,說明線程實現的具體方法。其他線程的實現需根據具體情況,進行修正。

  在CoordinateDisplayThread.cpp文件中的CoordinateDisplayThread::Execute()函數里添加如下語句,實現X、Y、Z坐標顯示函數調用的一致性。

  首先用switch語句判斷單軸運動中的哪一軸的坐標位置發生改變:

4 多線程的實現

 

  做好上述準備工作之后,需要在主單元中的適當的位置添加開始線程和掛起線程的命令。代碼如下所示:

  4.3 關于線程同步

  線程同步在編程技術中非常重要,當一個線程在訪問一個進程對象時,如果另一個線程要改變該對象,可能產生錯誤的結果。在本例開發應用中,利用API函數,可以直接使用臨界或互斥來達到同步的目的。為了提高同步的可靠性和靈活性,同時用到了標志變量和臨界機制。只需在程序中聲明一個 TRTLCriticalSection類型的變量Sect1,并在主線程的構造函數中進行初始化。之后在某個線程中,可以把相應的代碼標記為臨界部分,當在一個線程中調用EnterCriticalSection()并傳遞Sect1時,就設置多個數據成員,以表明臨界部分進入活動狀態。如果另一個線程要調用它自己的臨界部分時,函數EnterCriticalSection()將發現有一個臨界部分正在使用,就讓第二個線程處于休眠狀態,直到第一個線程退出臨界部分為止。

5 結束語

  本文將C++ builder多線程技術應用于開放式數控系統的軟件設計中,有效的解決了線程同步問題,保證了數控軟件系統的實時性要求,取得了較好的運用效果。

熱門文章

業務咨詢:932174181   媒體合作:2279387437    24小時服務熱線:15136468001 盤古機械網 - 全面、科學的機械行業免費發布信息網站 Copyright 2017 PGJXO.COM 豫ICP備12019803號

主站蜘蛛池模板: 日产精品久久久久久久蜜臀| 亚洲欧洲日产国码中文字幕| 中文字幕久精品免费视频| 成年网站未满十八禁视频天堂| 亚洲性夜夜摸人人天天| 在线观看欧美一区二区三区| 一区二区三区乱码在线 | 欧洲| 男人的天堂国产在线视频| 免费无码一区二区三区a片| 亚洲全国最大的人成网站| 美女裸体自慰在线观看| 亚洲无亚洲人成网站77777| 久久人搡人人玩人妻精品首页| 丰满白嫩人妻中出无码| 日韩一卡2卡3卡4卡新区亚洲| 成人区人妻精品一区二区不卡| 狠狠色噜噜狠狠狠狠97俺也去| 国产又色又爽无遮挡免费动态图| 国产成人av一区二区三区无码| 日日噜噜夜夜狠狠久久无码区| 成年女人免费碰碰视频| 中文无码乱人伦中文视频在线v| 成人区人妻精品一区二区三区| 国产亚洲精品久久久999| 欧美在线精彩视频免费播放| 国产 制服丝袜 动漫在线| 国产黑色丝袜在线观看片不卡顿| www国产无套内射com| 无码人妻一区二区三区免费看| 国产无遮挡a片又黄又爽漫画| 狠狠躁夜夜躁人人爽天天69| 丰满的人妻hd高清日本| 曰本一道本久久88不卡| 少妇高潮喷水在线观看| 亚洲精品成人av在线| 亚洲综合色aaa成人无码| 国产初高中生粉嫩无套第一次| 99热这里只有精品免费播放| 亚洲精品无码永久在线观看你懂的| 人妻激情文学| 亚洲av永久中文无码精品综合|