无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
中華工控網首頁
  P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
  電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
控制卡應用編程技巧幾招(2)
深圳市雷賽智能控制股份有限公司
收藏本文     查看收藏
三、插補和聯動函數
當程序員決定需要幾軸進行插補時,盡量選擇最大插補軸數,如在雕銑系統時,有時會用到兩軸插補,有時會進行三軸插補,在這個基礎上,為簡化編程,我的理論只使用三軸插補,當需要進行兩軸插補或聯動時,根據相對或絕對的坐標關系,將不運動軸填入0偏移或絕對位置即可。
以下為XYZ三軸聯動和插補的函數,由nFlagM_INP位決定是否進行插補:

void MoveXYZ( double fX, double fY, double fZ, const tag_SPEED &speed,
int nFlag = M_ABS )
{
short axisArray[]={ XCH, YCH, ZCH };

if( nFlag & M_INP == M_INP )
{//
插補
long distArray[]={ M2P(XCH, fX), M2P(YCH,fY), M2P(ZCH,fZ) };
long nStart, nSpeed;//
計算新的矢量速度,參見DMC1000矢量速度的計算
(
矢量速度計算在此略去)

( nFlag & M_ABS == M_ABS ) ?
d1000_start_ta_line( 3, axisArray, nStart, nSpeed, speed,accel )://
絕對
d1000_start_t_line(3, axisArray, nStart, nSpeed, accel );//
相對
}
else
{//
聯動
double fpos[]={ fX, fY, fZ};
for( int I(0); I<3; I++)//
發三次單軸移動命令
Move( axisArray[I], fpos[I], speed, nFlag );
}
}
在我給出的DMC3000控制卡類完整源代碼一文中,有其更完善的版本。通過以下的函數封裝,將插補和聯動,絕對位置,相對位置等等都很好的整合在一起,用戶在使用起來具體更準確的目標。

四、 驅動軸狀態、位置讀取和設定
對于驅動軸的狀態,分為兩種:1、指脈沖輸出狀態;2、指專用輸入信號電平狀態
檢測脈沖輸出是否完成,可以寫成如下函數,假設軟件總共只用到XYZ三軸:

int IsRunning( int nAxis = -1 )//
默認為-1是有目的的
{
if( nAxis != -1 )
return d1000_check_done( nAxis ) == 0 ;
//
nAxis == -1時,檢測三個軸是否有一個在運行,這種檢測在加工時常用
return d1000_check_done( XCH ) == 0 ||
d1000_check_done( YCH ) == 0 ||
d1000_check_done( ZCH ) == 0;
}

當用戶等待YCH脈沖發完,則用一個循環檢測即可:
while( g_DmcCard.IsRuning( YCH ) ) ::DoEvents();

別忘了,IsRuningCctrlCard的成員函數,而DoEvents函數在DMC1000不能響應系統消息的文章中有詳細實現和功能描述。
在實際加工時,作插補時,常需要等待上次所有運動結束才開始新的運動。故有如下表現:

for( int I(0),step(0); I
{
DoEvents();
switch( m_nworkStatus ){
case Pause:
continue;
case Continue: m_nWorkStatus = Running;
case Running:
{
switch( step ){
case 0:
if( IsRunning() ) break;//
檢測所有運動結束,否則繼續檢測
MoveXYZ( data[I].x, data[I].y, data[I].z
…… );
Step ++;
Break;
Case 1:
If( IsRunning() ) break;//
同上
I++; //
準備下一段數據,之所以放在此處,是需要考慮在運行過程中,有外部的暫停和繼續操作。
Step = 0;//
準備運行新的數據
Break;
}
} break;
}

以上程序框架,有著非常廣闊的應用前景,非常簡單,可以讓程序員隨意控制,故而它又非常穩定,比起線程的操作,它具體非常透明的可操作性。 此框架在雕刻,焊接,切割等許多場合都將成為經典,當然,若你不曾深入了解它,則不會發現它的可愛之處。

對于專用輸入信號狀態的檢測,幾乎沒有什么特別之處:
int GetStatus( int nAxis )
{
return d1000_get_axis_status( nAxis );
}

位置的讀取和設定,對于DMC1000比較容易,故在此我將寫出DMC3000控制卡的這兩個函數,當然用于DMC1000也是沒問題的。
DMC3000
控制卡的位置分為指令位置和物理位置(編碼器反饋的),所以函數需要有一個小小的選擇,先看看位置獲取函數:

Double GetPosition( int nAxis, BOOL bCmd = true )// bCmd == true
時,讀取指令位置,否則為物理位置
{
long pulse = (bCmd == true ) ?
d3000_get_command_pos( nAxis ):
d3000_get_encoder_pos(nAxis);
return P2M( nAxis, pulse );//
脈沖轉成毫米然后返回
}



位置設定函數多了一點點動作:
double SetPosition( int nAxis, double fMM, BOOL bCmd = true )
{
double pos = GetPosition( nAxis, bCmd );//
先取得原來的位置
( bCmd == true )?
D3000_set_command_pos( nAxis, M2P(nAxis, fMM )):
D3000_set_encoder_pos( nAxis, M2P(nAxis, fMM) );
Return pos;//
返回舊的位置
}
為什么這樣設計?當你用過CPen *pOldPen= pDC->SelectObject( &newPen );時,或者除了復位之外,你真正需要調用這個SetPosition函數時,你會發現這個設計,真是人情味實足。

五、 復位,相對與絕對,
在如今PC機開發控制卡軟件時代,設備上電不復位的幾乎沒有,在此談到復位這個問題確實有必要,實現上,復位動作因不同設備的工藝要求而定,故一般而言,控制卡提供的那個復位函數太過簡單,有點力不從心,所以,本人自己寫了個復位函數,但是代碼寫起來將會占用很大的面版,故有此需要者,可以來電或E_mail索取。
其基本思路是采用兩次找原點,第一次高速找,停止后退出,再次以較低的速度找原點。并且在執行第二次復位時,會在離原點5毫米處減速(第一次執行做不到)。

提供相對和絕對位置的概念是很有必要的,眾所周知,現在控制卡能作到最小單位為1個脈沖,當然,作為數字脈沖,到此已不能再小了,故為了提高精度,通常情況下要提高計算當量,即增加每轉脈沖數,或減少每轉毫米數。
不論怎么,我們將問題放大并明朗化,可以看看以下片段:

for( int I(0); I<10000; I++)//
10000
move( 0.5 );//
走相對0.5個脈沖的距離

結果是:1個脈沖也發不出,造成很大的累積誤差。
若換成絕對方式:
for( int I(0); I<10000; I++)
goto( I*0.5 );

最后的誤差,最大也就是1個脈沖以內。雖然還是有誤差,但總算達到可容忍的程序,再加上適當的復位操作,讓客戶至少不必再擔心這個巨大的累積誤差了。

實質上,在整個軟件設計時最好采用絕對坐標系,即使要處理加工原點或工面起點等這些參數,也要把它換算成絕對位置,唯手動移動設備可以例外。另外,在CNC系統中,除了有循環用到相對坐標系,其余都是用絕對坐標系為上策,實際上,在實現編程算法上,為統一起見,最好將相對的坐標關系全部轉成絕對的坐標關系,這樣也便于外部進行暫停或繼續的處理。

相信,到此為止,若你的設備在加工時有一定的誤差漂移,你會意識到自己應該是不是要檢查一下采用了什么坐標系了吧。


六、 輸出輸入及軟限位
對于通用的I/O操作,沒有什么特別要說明的,只有兩點需要注意的,先給出兩個小函數,以作參考:

int ReadBit( int nIO ); //
讀指定通用輸入口的電平狀態,返回1 0
int WriteBit( int nIO, int nStatus ); //
輸出電平到指定輸出端口

兩點注意:
No.1
對于ReadBit若需要加入抗干擾處理,則寫一個函數:

Int RealInput( int nIO, int nStatus, int di=50 )
{
if( ReadBit( nIO ) != nStatus )
return 0;
while( di -- );//
耗上幾個CPU的周期時間,再讀一次
return ReadBit( nIO ) == nStatus;
}

No.2
增加一個變量及函數擴展一下輸出功能:
Long m_nOutStatus= 0x00000000;
再次改造一下WirteBit
void WriteBit( int nIO, int nStatus )
{
if( nStatus ){
m_nOutStatus |= (1<
}
else{
m_nOutStatus &= (~(1<
}
d1000_out_bit( nIO, nStatus );
}
添加的訪問輸出狀態函數:
int ReadOutbit( int nIO )
{
static int a;
a = 1<<(nIO-1);
a &= m_nOutStatus;
return a!=0;
}

軟限位的思想原本是用于為客戶節省正負限位的光電開關成本而產生的,致使使用軟件限位正常的話,設備每個驅動軸只需要一個原點開關即可。當然,軟限位能正確運作是非常重要的,否則很容易撞壞設備。而其正確運行,就必須依賴正確的復位動作,以找到可靠的機械原點位置。
軟件限位的基本算法非常簡單,特別是在一個絕對坐標系當中。其原理如下:

if( pos < minPos ) pos = minPos;
if( pos > maxPos ) pos = maxPos;

實在沒有必要再詳說下去了。





編程技巧介紹至此算是一個了斷,若在未來的日子里,有更好的想法,我會拿出來給大家參考,請大家一起來支持這件事情,拿出自己的寶貴經驗,算是給數控行業添加強有力的潤滑劑吧。

謝謝。
 

狀 態: 離線

公司簡介
產品目錄

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

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

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
久久精品国产999大香线蕉| 国产高清一区二区| 久久精品亚洲| 男女男精品视频网| 久久尤物视频| 亚洲午夜免费| 91精品国产成人观看| 久久精品国产999大香线蕉| 婷婷综合福利| 日本大胆欧美人术艺术动态| 精品一区在线| 久久免费影院| 国产精品极品| 日韩av中文在线观看| 亚洲欧美日韩视频二区| 亚洲午夜精品久久久久久app| 国产精品一区2区3区| 日本v片在线高清不卡在线观看| 丝袜美腿成人在线| 伊人影院久久| 精品一区在线| 99日韩精品| 亚洲精品123区| 在线国产一区二区| 亚洲婷婷免费| 99国产精品久久久久久久 | 不卡视频在线| 欧美福利专区| 日韩视频久久| 免费视频久久| 中文字幕亚洲影视| 亚洲人成毛片在线播放女女| 在线视频免费在线观看一区二区| 欧美日韩第一| 在线国产精品一区| 欧美日韩xxxx| 国产精品成人a在线观看| 老司机免费视频一区二区| 精品在线网站观看| 国产成人免费| 中文字幕高清在线播放| 国产一区调教| 色婷婷狠狠五月综合天色拍| av在线日韩| 国产色综合网| 国产日韩欧美一区二区三区在线观看| 国产亚洲一卡2卡3卡4卡新区| 国产日韩一区二区三区在线播放| 美女视频一区在线观看| 国产一区2区| 鲁鲁在线中文| 久久成人精品| 久久99久久久精品欧美| 色在线视频观看| 午夜av一区| 国产欧美亚洲精品a| 久久青青视频| 日韩在线a电影| 国产aⅴ精品一区二区四区| 久久三级福利| 91精品国产自产在线丝袜啪| 国产精品久久久久久模特| 精品久久电影| 久久免费大视频| 日本三级亚洲精品| 婷婷综合六月| 日韩高清欧美激情| 国产精品精品| 影音先锋国产精品| 久久一区精品| 亚洲欧美日韩一区在线观看| 国产精品亚洲一区二区在线观看 | 国产欧美91| 婷婷精品视频| 日本在线不卡视频| 麻豆网站免费在线观看| 亚洲综合色婷婷在线观看| 色一区二区三区| 911亚洲精品| 在线视频免费在线观看一区二区| 日本一区二区高清不卡| 日韩一区精品| 99香蕉国产精品偷在线观看 | 日韩天堂在线| 国产日韩欧美在线播放不卡| 国产二区精品| 9999国产精品| 日本va欧美va精品| 亚洲免费婷婷| 视频一区中文| 成人自拍av| 成人在线免费观看91| 91精品美女| 亚洲tv在线| 午夜日韩av| 久久久成人网| 麻豆理论在线观看| 捆绑调教美女网站视频一区| 国产精品一区二区三区美女| 蜜桃一区二区三区在线| 午夜国产欧美理论在线播放| 国产综合色区在线观看| 成人国产精选| 久久精品国产999大香线蕉| 国产丝袜一区| 日韩精品久久久久久久软件91| 国产精品普通话对白| 99久久九九| 免费欧美一区| 亚洲一区二区三区四区五区午夜 | 欧美三级网址| 在线观看精品| 日韩在线不卡| 国产99亚洲| 99视频一区| 喷白浆一区二区| 亚洲开心激情| 欧美久久香蕉| 免费日韩成人| 高清日韩欧美| 色婷婷狠狠五月综合天色拍| 日本精品在线中文字幕| 亚洲91视频| 久久99伊人| 日韩欧美三区| 国产精品17p| 国产精品久久久久久久久久久久久久久| 日韩高清在线一区| 麻豆精品在线播放| 日韩av免费| 99在线|亚洲一区二区| 亚洲欧美在线专区| 国产精品久一| 亚洲午夜视频| 亚洲精品一级二级三级| 美女免费视频一区| 99久久精品费精品国产| 免费在线观看不卡| 国产日韩三级| 欧美日中文字幕| 日本大胆欧美人术艺术动态| 欧美久久一区二区三区| 国产成人调教视频在线观看| 不卡中文字幕| 日韩在线网址| 精品国产第一福利网站| 伊人久久大香线蕉av不卡| 综合亚洲视频| 97精品国产福利一区二区三区| 亚洲国产不卡| 国产精品一线| 国产欧美午夜| 精品91久久久久| 国产精品115| 香蕉久久久久久久av网站| 精品伊人久久| 国产一区二区精品| 国产精品麻豆久久| 蜜桃一区二区三区在线| 日本蜜桃在线观看视频| 日韩一区精品| 日韩成人亚洲| 国产黄色一区| 日韩专区一卡二卡| 深夜视频一区二区| 国产精品中文| 综合一区在线| 日韩视频久久| 亚洲www免费| 久久香蕉精品香蕉| 色婷婷成人网| 99国产精品私拍| 国产精品字幕| 成人国产精选| 欧美日韩一区二区三区不卡视频 | 亚洲在线一区| 中文av在线全新| 国产日韩欧美一区| 亚洲午夜久久| 中文日韩在线| 偷拍精品精品一区二区三区| 久久国产三级精品| 麻豆亚洲精品| 欧美日韩免费观看一区=区三区| 精品国产亚洲日本| 亚洲18在线| 综合激情婷婷| 喷白浆一区二区| 妖精视频成人观看www| 久久一区二区三区喷水| 国产精品一线| 日韩激情啪啪| 亚洲日本国产| 一区二区三区午夜视频| 日韩中文字幕亚洲一区二区va在线| 亚洲欧美综合| 久久一区二区三区喷水| 久久久国产精品一区二区中文| 欧美成人a交片免费看| 精品高清久久|