固高運動控制卡的相關知識點

承接使用QT(C++)編程的各類固高運動控制項目,有意者可私聊。

# GTS運動控制器-二維位置比較輸出擴展功能

指令 6  GT_2DCompareSetPrm

指令原型 short GT_2DCompareSetPrm(short chn,T2DComparePrm *pPrm);
指令說明 設置二維位置比較輸出參數
指令類型 立即指令,調用後立即生效。
指令參數 該指令共有 2 個參數,參數的詳細信息如下。
chn 通道號 0: HSIO0,通道號 1: HSIO1
pPrm

typedefstruct
{
short encx; //X比較軸選擇取值範圍, 4軸卡則爲[1,4], 8軸卡則爲[1,8]
short ency; //Y比較軸選擇取值範圍, 4軸卡則爲[1,4], 8軸卡則爲[1,8]
short source; //比較源0:規劃, 1:編碼器
short outputType; //輸出方式0:脈衝, 1:電平
short startLevel; //起始電平方式0:位置比較輸出引腳電平復位 1:位置比較輸出引腳電平取反

short time; //脈衝方式的脈衝寬度us

short maxerr; //比較位置到位的最大允許誤差,取值範圍[0,512),單位: pulse

short threshold; //該參數設置爲0

}  T2DComparePrm;

source=0 時,比較源爲規劃器,配置控制器時, “encoder”選型的“脈衝計數源”必須
設置爲“內部脈衝計數器”; source=1 時, “脈衝計數源必須設置爲“編碼器”。否則會
報參數錯誤。

請參照指令返回值列表。
相關指令
指令示例 例程 2 設置位置比較輸出數據

高速輸入輸出接口

運動控制器有 2 個二維位置比較模塊,可用於將編碼器位置或內部脈衝計數器位置與設定位置比較, 2 個二維位置比較模塊可以掛接不用的比較源(編碼器或脈衝計數器)。
編碼器位置內部脈衝計數器位置到達設定位置時,在高速 IO(HSIO)口輸出脈衝或反轉電平。

通過 GT_2DCompareData 指令以數組方式向控制器傳遞比較數據,這些比較數據爲相對位置
即相對於調用 GT_2DCompareStart 時控制器位置的偏移量。支持非單調方向數據輸入,但用戶需保
證位置數組中的數據在運動過程中均能達到觸發位置,否則系統將處於等待觸發狀態。用戶也可以
設置爲一維比較方式,這時比較模塊只比較 Y 比較軸上的位置數據。

啓動位置比較以後,當外部編碼器或者內部脈衝計數器到達設定的比較位置時,若選擇定寬脈
衝方式輸出,立即從設置的輸出接口輸出一個脈衝,脈衝寬度可以設置爲 1~32767us;若選擇電平方
式輸出,立即從設置的輸出接口反轉電平。當所有比較位置都觸發以後,位置比較結束。按電平方
式輸出時,可以設置比較輸出的起始電平,但脈衝方式不能設置輸出的初始電平。

 

每一種方式都包含正向和負向兩種方法,正向指規劃位置爲正數的方向,負方向指規劃位置爲負數的方向,例如“限位+Home 回原點”即包括了“正限位+Home 回原點”和“負限位+Home 回原點”;每一種回原點方式,都可以通過設置偏移量使得最終電機停止的位置離原點位置有一個偏移量;每種回原點方式可能由於設定的搜索距離、電機意外停止等因素而找不到原點,大部分異常情況都可以通過查看回原點狀態來進行辨識。此外, SmartHome 功能支持各軸單獨回原點,互不影響,即可以實現多軸同時回原點。

指令 5  GT_2DComparePulse

指令原型 short GT_2DComparePulse(short chn,shortlevel,shortoutputType,short time);
指令說明 二維位置比較輸出單次輸出。
指令類型 立即指令,調用後立即生效。
指令參數 該指令共有 4 個參數,參數的詳細信息如下。
chn 通道號 0: HSIO0,通道號 1: HSIO1
level 位置比較輸出電平方式時起始電平(當 outputType=0 時, level 應該爲 1)
level=0,位置比較輸出引腳電平復位(恢復到初始化後的電平狀態)
level=1,位置比較輸出引腳電平取反(與初始化後的電平狀態相反)
outputType 輸出類型 0:脈衝方式, 1:電平方式
time 脈衝方式時的脈衝時間,單位: us
指令返回值 請參照指令返回值列表。
相關指令
指令示例 例程 1 輸出指定電平或脈衝

指令 4  GT_2DCompareMode

指令原型 short GT_2DCompareMode(short chn,short mode);
指令說明 設置二維位置比較輸出模式
指令類型 立即指令,調用後立即生效。
指令參數 該指令共有 2 個參數,參數的詳細信息如下。
chn 通道號 0: HSIO0,通道號 1: HSIO1
mode 位置比較模式
COMPARE2D_MODE_1D 表示一維比較模式
COMPARE2D_MODE_2D 表示二維比較模式
指令返回值 請參照指令返回值列表。
相關指令
指令示例 例程 1 輸出指定電平或脈衝

1. 開環(脈衝)控制模式
(1) 打開運動控制器, GT_Open
(2) 復位運動控制器, GT_Reset。復位後默認的控制模式爲“脈衝+方向”的脈衝控制方式。若不
是採用“脈衝+方向”的控制方式,則可調用 GT_StepPulse 修改;當需要還原爲“脈衝+方向”
的控制方式時,則可調用 GT_StepDir 指令;
(3) 檢查相關軸驅動器報警信號有沒有連接。(一般若採用步進電機,可能沒有驅動器報警信
號),若沒有連接,則應該調用 GT_AlarmOff 指令,使驅動器報警無效,默認是有效的;
(4) 檢查相關軸的限位開關,若沒有連接,則需要通過調用 GT_LmtsOff,使限位無效,默認是
有效的;若有連接,則要檢查觸發電平是否設置正確,可通過 GT_LmtSns 指令修改;
(5) 在確認前面兩步操作之後,調用 GT_ClrSts,更新設置的狀態;
(6) 調用 GT_AxisOn,使能驅動器,這樣相應的電機便能工作了;
(7) 使軸運動,運動後,若出現編碼器位置和規劃位置方向不一致,則可通過調用 GT_EncSns
改變編碼器的計數方向。
 

GT_ClrSts 清除驅動器報警標誌、 跟隨誤差越限標誌、 限位觸發標誌
1. 只有當驅動器沒有報警時才能清除軸狀態字的報警標誌
2. 只有當跟隨誤差正常以後,才能清除跟隨誤差越限標誌
3. 只有當離開限位開關,或者規劃位置在軟限位行程以內時才能
清除軸狀態字的限位觸發標誌


 

若控制器剛復位完,軸 1 狀態如圖 4-12 所示;若將“4.3.3”設置寫入了控制器,使報警無效,並點擊“伺服使能”,軸 1 狀態如圖 4-13 所示。(注:可以同時啓動 4 個軸狀態顯示對話框。對話框的“軸號”下拉列表可以選擇控制軸號,選擇後,對話框的標題將顯示對應信息)。

緊急停止信號數字量輸入選擇:選擇緊急停止信號的數字量輸入的來源,運動控制器支持
將任何數字量輸入信號配置爲緊急停止信號,增加用戶進行硬件接線的自由性。該項的第
一個下拉列表選擇數字量輸入的類型,默認爲沒有緊急停止信號;第二個下拉列表選擇
字量輸入的編號
,在第二個下拉列表中如果選擇“none”,則表示該 axis 沒有緊急停止信號。
緊急停止信號數字量輸入選擇可以通過指令 GT_SetStopIo 設置。
 

GT_GetPrfPos

指令原型 short GT_GetPrfPos(short profile, double *pValue, short count=1, unsigned long
*pClock=NULL)
指令說明 讀取規劃位置。
指令類型 立即指令,調用後立即生效。    
指令參數 該指令共有 4 個參數,參數的詳細信息如下。
profile 起始規劃軸號,正整數。
pValue 規劃位置。單位: pulse。
count 讀取的軸數,默認爲 1, 正整數。
pClock 讀取控制器時鐘,默認值爲: NULL,即不用讀取控制器時鐘。
指令返回值 請參照指令返回值列表。
相關指令 無。
指令示例 例程 5-1 獲取軸 1 的軸狀態、運動模式、位置、速度和加速度


 

 

GT_GetSts

指令原型 short GT_GetSts(short axis, long *pSts, short count=1, unsigned long *pClock=NULL)
指令說明 讀取軸狀態。
指令類型 立即指令,調用後立即生效。    
指令參數 該指令共有 4 個參數,參數的詳細信息如下。
axis 起始軸號, 正整數
pSts 32 位軸狀態字,詳細定義參見表 5-2 軸狀態定義。
count 讀取的軸數,默認爲 1, 正整數
pClock 讀取控制器時鐘,默認值爲: NULL,即不用讀取控制器時鐘。
指令返回值 請參照指令返回值列表。
相關指令 GT_ClrSts
指令示例 例程 5-1 獲取軸 1 的軸狀態、運動模式、位置、速度和加速度

表 5-2 軸狀態定義

0 保留
1 驅動器報警標誌
控制軸連接的驅動器報警時置 1
2 保留
3 保留
4 跟隨誤差越限標誌
控制軸規劃位置和實際位置的誤差大於設定極限時置 1
5 正限位觸發標誌
正限位開關電平狀態爲限位觸發電平時置 1
規劃位置大於正向軟限位時置 1
6 負限位觸發標誌
負限位開關電平狀態爲限位觸發電平時置 1
規劃位置小於負向軟限位時置 1
7 IO 平滑停止觸發標誌
如果軸設置了平滑停止 IO,當其輸入爲觸發電平時置 1,並自動平滑停止該軸
8 IO 急停觸發標誌
如果軸設置了急停 IO,當其輸入爲觸發電平時置 1,並自動急停該軸
9 電機使能標誌
電機使能時置 1
10 規劃運動標誌
規劃器運動時置 1
11 電機到位標誌
規劃器靜止,規劃位置和實際位置的誤差小於設定誤差帶,並且在誤差帶內保持設定時
間後,置起到位標誌
12~31 保留



 

GT_2DCompareStatus

指令原型 short GT_2DCompareStatus(short chn,short *pStatus,long *pCount,short *pFifo,short
*pFifoCount,short *pBufCount);
指令說明 讀取二維位置比較輸出狀態。
指令類型 立即指令,調用後立即生效。    
指令參數 該指令共有 6 個參數,參數的詳細信息如下。
chn 通道號 0: HSIO0,通道號 1: HSIO1
pStatus 0:正在進行比較輸出 1:比較輸出完成
pCount 位置比較已輸出次數
pFifo 當前空閒 FIFO
pFifoCount 當前空閒 FIFO 剩餘空間
pBufCount FPGA 中 FIFO 剩餘空間, FPGA 的 FIFO 總大小爲 512,啓動位置比較之前,壓入
的數據先進入 FPGA 的 FIFO
指令返回值 請參照指令返回值列表。
相關指令
指令示例


 

 

1. 後文涉及的函數指令說明均爲單卡庫函數指令
2. 單卡庫和多卡庫函數的區別在於多卡庫的函數多了一個“卡號”參數(第一張卡的卡號爲 0)。
3. 如果應用程序需要操作多張卡,仍然可以使用單卡庫提供的函數,但是爲了編程方便,建議直接使用多卡庫,即使是隻操作一張卡也可以使用多卡庫。
4.與本說明書配套發行的 gts.dll 動態鏈接庫包含了擴展 IO 模塊的函數指令,用戶可以直接調用操作擴展 IO 模塊,函數指令的詳細說明請參考擴展 IO 模塊配套《擴展模塊編程手冊》。安裝 GTS 控制卡的驅動後,無需再安裝擴展 IO 模塊驅動,兩個驅動是
一樣的

端子板 CN9、 CN10 和 CN11 接口是通用數字輸入輸出信號(簡稱通用 IO 信號)、原點輸入信號(簡稱 HOME)、限位輸入信號接口(簡稱 LIMIT)。

設置 Smart Home 回原點的參數,該參數爲一結構體,詳細參數定義及說明請參照
結構體 THomePrm
typedef struct
{
short mode;    // 回原點模式
short moveDir; // 設置啓動搜索原點時的運動方向(如果回原點運動包含搜索 Limit 則爲搜索 Limit 的運動方向):-1-負方向, 1-正方向
short indexDir; // 設置搜索 Index 的運動方向: -1-負方向,1-正方向,在限位+Index 回原點模式下 moveDir 與indexDir 應該相異
short edge; // 設置捕獲沿: 0-下降沿, 1-上升沿
short triggerIndex; // 默認與回零軸號一致,不需要設置
short pad1[3]; // 保留,其中 pad1[0]表示捕獲到 Home 後運動到最終位置
(捕獲位置 + homeOffset)所使用的速度, 0 或其它值-
使用 velLow(默認), 1-使用 velHigh。
double velHigh; // 回原點運動的高速速度(單位: pulse/ms)
double velLow; // 回原點運動的低速速度(單位: pulse/ms)
double acc; // 回原點運動的加速度(單位: pulse/ms^2)
double dec; // 回原點運動的減速度(單位: pulse/ms^2)
short smoothTime; // 回原點運動的平滑時間:取值[0,50],單位: ms,
具體含義與 GTS 系列控制器點位運動相似
short pad2[3]; // pad2[1]表示在電機啓動回零時是否檢測機械處於限位或
原點位置, 0 或其它值-不檢測(默認), 1-檢測。如果
不啓用檢測則當機械剛好處於限位或原點位置時將無法
回零;如果啓用檢測則當機械處於限位或原點時電機會先
按照 escapeStep 參數設置的回退距離進行回退,在根據
具體回零模式進行回零,因此如果啓用檢測功能,那麼
escapeStep 的值不能爲 0,否則無法執行回退動作。對
於壓到限位或原點的電平判斷:控制器默認高電平觸發,
即限位或原點處於高電平狀態則控制器認爲當前壓在限
位或原點上面,若用戶的限位開關或原點開關不是此種模
式接法,可以通過控制器配置裏面的 Di 選擇項選擇限位
或原點並設置其的“輸入反轉”爲“取反”。
long homeOffset; // 最終停止的位置相對於原點的偏移量
long searchHomeDistance; // 設定的搜索 Home 的搜索範圍, 0 表示
搜索距離爲 805306368
long searchIndexDistance; // 設定的搜索 Index 的搜索範圍, 0 表示
搜索距離爲 805306368
long escapeStep; // 採用“限位回原點” 方式時,反方向離開

限位的脫離步長
long pad3[2]; // 保留(不需要設置)
} THomePrm;

回原點模式宏定義:
HOME_MODE_LIMIT (10):限位回原點
HOME_MODE_LIMIT_HOME (11):限位+Home回原點
HOME_MODE_LIMIT_INDEX (12):限位+Index回原點
HOME_MODE_LIMIT_HOME_INDEX (13):限位+Home+Index回原點
HOME_MODE_HOME (20): Home回原點
HOME_MODE_HOME_INDEX (22): Home+Index回原點
HOME_MODE_INDEX (30): Index回原點
HOME_MODE_FORCED_HOME (40):強制Home回原點
HOME_MODE_FORCED_HOME_INDEX (41):強制Home+Index回原點

 

限位+Home 回原點:調用回原點指令,電機從所在位置以較高的速度往限位方向運動,如果
碰到限位,則反方向運動並啓動高速硬件捕獲,在設定的搜索範圍內搜索 Home,當觸發 Home
開關後,電機會以較低的速度運動到捕獲的位置處(即 Home 開關)。

Home 回原點:調用回原點指令,電機從所在位置以較高的速度運動並啓動高速硬件捕獲,在
設定的搜索範圍內尋找 Home,當觸發 Home 開關後,電機會以較低的速度運動到捕獲的位置
處。

int main(int argc, char* argv[])
{
short sRtn;
short gAxis = 1;
THomeStatus tHomeSts;
sRtn = GT_Open();
sRtn = GT_Reset();
sRtn = GT_AlarmOff(gAxis);
sRtn = GT_LmtsOn(gAxis); //如果沒有接限位開關則需要把限位取消
sRtn = GT_LmtSns(3); //限位爲低電平觸發(按實際情況設置)
sRtn = GT_EncSns(1); //編碼器方向設置(按實際編碼器設置,保證規劃位置與實際
位置方向一致)
sRtn = GT_ClrSts(gAxis);
sRtn = GT_ZeroPos(gAxis);
sRtn = GT_AxisOn(gAxis); //必須使能軸
//設置 Smart Home 回原點參數
THomePrm tHomePrm;
sRtn = GT_GetHomePrm(1,&tHomePrm);
tHomePrm.mode = 20;
tHomePrm.moveDir = 1;
tHomePrm.indexDir = 1;
tHomePrm.edge = 0;
tHomePrm.velHigh = 5;
tHomePrm.velLow = 1;
tHomePrm.acc = 0.1;
tHomePrm.dec = 0.1;
tHomePrm.searchHomeDistance = 200000;
tHomePrm.searchIndexDistance = 30000;
tHomePrm.escapeStep = 1000;
sRtn = GT_GoHome(1,&tHomePrm); //啓動 Smart Home 回原點
do
{
sRtn = GT_GetHomeStatus(1,&tHomeSts); //獲取回原點狀態
} while(tHomeSts.run); //等待搜索原點停止
例程 3-1 檢測 GT 指令是否正常執行
例程 4-1 修改編碼器計數方向
例程 4-2 修改限位開關觸發電平
例程 4-3 設置第 1 軸爲脈衝控制“脈衝+方向”方式
例程 4-4 設置第 1 軸爲閉環控制方式
例程 5-1 獲取軸 1 的軸狀態、運動模式、位置、速度和加速度
例程 6-1 點位運動
例程 6-2 Jog 運動
例程 6-3 PT 靜態 FIFO
例程 6-4 PT 動態 FIFO
例程 6-5 電子齒輪跟隨
例程 6-6 飛剪中的 follow 模式應用
例程 6-7 Follow 單 FIFO 模式
例程 6-8 Follow 雙 FIFO 切換
例程 6-9 建立座標系
例程 6-10 直線插補例程
例程 6-11 圓弧插補例程
例程 6-12 插補 FIFO 管理
例程 6-13 前瞻預處理例程
例程 6-14 刀向跟隨功能 GT_BufMove()
例程 6-15 刀向跟隨功能 GT_BufGear()
例程 6-16 刀向跟隨功能——實際工件加工
例程 6-17 PVT 描述方式
例程 6-18 Complete 描述方式
例程 6-19 Percent 描述方式
例程 6-20 Continuous 描述方式
例程 7-1 訪問數字 IO
例程 7-2 讀取 8 個軸編碼器和輔助編碼器位置值
例程 7-3 訪問 DAC
例程 7-4 訪問 ADC
例程 8-1 Home/Index 捕獲
例程 8-2 Home 回原點
例程 8-3 Home+Index 回原點
例程 8-4 探針捕獲
例程 8-5 HSIO 捕獲用法示例
例程 8-6 重複捕獲使用說明
例程 9-1 軟限位使用
例程 10-1 運動程序單線程累加求和
例程 10-2 運動程序多線程累加求和
例程 11-1 讀取運動控制器版本號
例程 11-2 電機到位檢測功能
例程 11-3 自動回原點
例程 11-4 位置比較輸出指令詳細的用法

例程代碼
gitee

例程 4 二維位置比較的一維模式
由於二維位置比較模塊對壓入的數據沒有單調性要求,其一維模式也同樣對比較數據沒有單調
性要求。

short rtn;
T2DComparePrm prm;
rtn =GT_2DCompareMode(0,COMPARE2D_MODE_1D); //使用二維位置比較的 1 維模式
prm.encx = 1; //1 維模式時,這個值沒有用,但是必須是一個非 0 值
prm.ency = 1; //以 1 軸作爲比較源
prm.maxerr = 3; //最大誤差 pulse
prm.outputType = 0; //輸出脈衝
prm.source = 0; //內部脈衝計數器
prm.startLevel = 0; //設置初始電平
prm.threshold = 0; //最優點計算閾值,用戶無需關心,取 0
prm.time = 500; //脈衝寬度 us
rtn =GT_2DCompareSetPrm(0,&prm);二維位置比較輸出

rtn =GT_2DCompareMode(1,COMPARE2D_MODE_1D); //使用二維位置比較的 1 維模式
T2DCompareData databuf[5];
databuf[0].px = 0;
databuf[0].py = 10000;
databuf[0].px = 0;
databuf[0].py = 20000;
rtn =GT_2DCompareData(0,2,databuf,0); //設置比較數據,只需設置 y 的數據, x 的數據取 0
rtn =GT_2DCompareStart(0);


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章