999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
DMC1000控制卡不能響應系統(tǒng)消息
深圳市雷賽智能控制股份有限公司
收藏本文     查看收藏

  一、問題現(xiàn)象及分析

  問題經(jīng)常通過以下編程表現(xiàn)出來:

  //X發(fā)出脈沖后,等待脈沖發(fā)完后再做其它事情

  d1000_start_t_move( 0, 6400, 3200, 6400, 0.1 );

  while( d1000_check_done(0) == 0 );

  老版本的庫函數(shù)如下:

  d1000_start_tr_move( 0, 6400, 3200, 6400, 0.1 );

  while( d1000_check_done(0) == 0 );

  或者:

  d1000_wait_done( 0 );

  此函數(shù)內(nèi)部實際上包含類似于while( d1000_check_done(0) == 0 );的語句

  以上可以看出,在檢測脈沖是否發(fā)完時,此段代碼的執(zhí)行完全獨占了CPU分配給當前進程的所有時間,

  因而也排擠了其它消息的響應,當然也就不能響應定時器讀取位置,或其它停止操作等.

  二、解決方法

  解決此問題關鍵是讓while循環(huán)時能檢測系統(tǒng)消息,以下分別介紹在VB,VC,CB下的解決措施:

  注:以下編程全以DMC1000最新的驅(qū)動庫函為參考

  1.VB編程

  d1000_start_t_move 0, 6400, 3200, 6400, 0.1

  DO

  DoEvents

  LOOP WHILE (d1000_check_done(0) = 0)

  2.VC編程

  在VC下編程關鍵是要解決類似于VB的DoEvnets函數(shù)

  void DoEvents()

  {

  static MSG msg;

  if( ::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) ){

  ::TranslateMessage( &msg );

  ::DispatchMessage( &msg );

  }

  }

  然后編程如下:

  d1000_start_t_move( 0, 6400, 3200, 6400, 0.1 );

  while( d1000_check_done(0) == 0 )

  ::DoEvents();

  3.CB編程

  同樣也需要完成一個DoEvents函數(shù)的定義:

  void DoEvents()

  {

  Application->ProcessMessages();//VCL給程序帶來極大簡化

  }

  編程如下:

  d1000_start_t_move( 0, 6400, 3200, 6400, 0.1 );

  while( d1000_check_done(0) == 0 )

  ::DoEvents();

  三、技巧提升

  有了自產(chǎn)的DoEvents函數(shù),是否就可以一切OK了呢。試想一個問題,實際加工時,

  通常會有大量的小線段(即短脈沖距離)出現(xiàn),若頻繁的調(diào)用DoEvents勢必帶來新的麻煩,因為加工

  需要連續(xù)的進行,設備的運動之間停頓時間過長,會形成設備的多次啟停,進而易產(chǎn)生振動,造成

  設備的加速磨損,并且速度也快不起來。因此添加一小小技巧(實用又省錢),判斷脈沖距離是否過小

  若過小則不執(zhí)行DoEvents函數(shù),過小量可以根據(jù)自己的需求也定義一個參考量。當然程序的執(zhí)行順序也

  可以優(yōu)化一下,以上面程序為例:

  if( d1000_check_done(0) != 0 ) return;

  d1000_start_t_move( 0, 6400, 3200, 6400, 0.1);

  咋一看沒有什么特別的,但是請看下加工程序的部分簡化代碼,也許會有新的啟示:

  for( int i(0); i

  {

  if( d1000_check_done(0) == 0 )

  {

  if( Len > 2.0 )DoEvents();

  //小于2單位(可以指為毫米,或其它單位)則不執(zhí)行DoEvents函數(shù)

  continue;

  }

  Len = dist[i].Len;

  d1000_start_t_move( 0, dist[i], speed );

  i ++;

  }

  當然,世界上做事情的方法多的是,有高手則愿意動用復雜的多任務編程方法來完成操作,

  最后經(jīng)過努力,事情也可以解決,若有興趣,可參見另一篇《控制卡的多任務編程》,然后自行做

  編程測試。不過本人的理論是,解決事情的方法越簡單越好,據(jù)本人了解,大師之所以為大師,通常

  不是把問題搞得高深莫測,而是通俗易懂。

  四、其它應用

  此方法對所有DMC系列的控制卡的編程都可以運用,還可用在自定義的Arc(圓弧運動)函數(shù)

  上,參見下面?zhèn)未a(Arc的直線擬合算法參見DMC2000的ARC算法):

  for( int i(0); i

  {

  while( IsRunning(X) || IsRunning(Y) )

  {

  if( i%16 == 0 ) DoEvents();//每16再運行一次

  }

  start_line2( newx, newy );

  }


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

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

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