无码人妻精品一区二区三区9厂-国产精品人人做人人爽人人添-在线永久免费观看黄网站-国产精品久久久久一区二区三区

首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
中華工控網首頁
  P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
  電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
收藏本文     查看收藏
多線程編程一直是讓鄙人不愿提起的傷心往事。

需要太多的耐心,和足夠的編程基本功及對操作系統的了解。在運動控制編程中,有許多骨灰級編程高手,常對此故作深沉,一般會這樣回答:
呵呵,多線程編程,好哇,不錯…”
要是你再問他自己用不用多線程編程方法去作運動控制軟件,他會這樣說:
是啊,不過,好像用不著吧!

若有幸得到他的耐心指導,則省下許多為多線程付出的痛苦。我何嘗不曾經歷

當然,多線程又不是絕癥,當然有解決方法。故在您真的想動手之前聽聽下面的經驗之談,或許有參考作用。

每一個進程都含有一個主線程,若再開辟一個線程作某些事情,則至少為兩個或兩個以上的線程在作業。
下面引用名家言-----Gevorg Ter-Saakov(呵呵,是老外,我不認識的)。

在多線程環境中存在一個潛在問題:就是創建多線程應用程序時,有一個意外的優化問題,會導致你的程序有不可預期的行為。
如果你定義了一些可以被兩個或兩個以上線程訪問的變量,則必須使用關鍵字volatile。否則,如果一個線程更改了變量,第二個線程不能注意到該變化,因為變量被優化,編譯器可能使用一個CPU寄存器。
一般情況下,在調式模式下不會發生問題,在發行模式下,就可能導致行為不可預期。

根據以上的思想,回過頭來看看控制卡的編程。
一般控制卡的操作都含有一套動態庫,動態庫內部定義的變量對于多線程的訪問就存在上述問題,而絕大部分動態庫在發布版中,都不會加上volatile關鍵字。以下面的形式為例:

void GoToPoistion( long nPulse )//
指定移動絕對位置
{
d3000_start_t_move( XCH, nPulse-d3000_get_command_pos(0), speed );
}

d3000_start_t_move
DMC3000控制卡的相對移動函數
d3000_get_command_pos
DMC3000控制卡讀取指令位置函數。

當脈沖距離發出時,客戶往往需要動態的以圖形方式顯示當前位置,或者直接用文字顯示出來,若此實現在另一個多線程內是這樣的:
char string[0x100];
sprintf( string, “Xposition=%ld”, d3000_get_command_pos(0)) ;

GetDlgItem( IDC_STATIC_MSG )->SetWindowText( string );//
顯示到屏幕上

由此可見,d3000_get_command_pos在兩個線程當中都被調用,它內部則會訪問同一變量。故,在一定速度頻率下,或某一特定環境下,讀取出來的脈沖計數不可預期,顯示出來的圖形或坐標位置也將出錯。

故,本人在《DMC3000控制卡的多任務編程》,對位置的讀取采用較為謹慎的態度。

多線程編程的同步問題也較為復雜,一時難以言盡,大凡以高手的見地,最好以簡單的方式作穩定的事情,有興趣的朋友不妨閱讀一下DoEvents的實現還來得有效率一些。
 

狀 態: 離線

公司簡介
產品目錄

公司名稱: 深圳市雷賽智能控制股份有限公司
聯 系 人: 梁邦敏
電  話: 755-26401178
傳  真:
地  址: 深圳市南山區登良路天安南油工業區2棟3樓
郵  編: 518000
主  頁:
 
該廠商相關技術文摘:
CNC解釋庫調用接口詳述
DMC1000控制卡不能響應系統消息
DMC2000脈沖速度初始化故障
DMC2000運動控制卡常見軟件問題的解決方案
DMC2200驅動程序特殊安裝方法
DMC3000控制卡,與CNC之G代碼的邦定關系
DMC3000控制卡的多任務編程
多類型運動控制卡編程方法探討
發現步進電機定位不準怎么辦
過程控制編程之簡要探討
控制卡應用編程技巧幾招(2)
更多文摘...
立即發送詢問信息在線聯系該技術文摘廠商:
用戶名: 密碼: 免費注冊為中華工控網會員
請留下您的有效聯系方式,以方便我們及時與您聯絡

關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網客服熱線:0755-86369299
版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved