1.37k likes | 1.97k Views
EPCIO Series 運動控制卡 訓練課程講義 周明孝 工研院機械所 2004.08.12. 運動控制系統設計 - 使用 EPCIO Series 運動控制函式庫. 主講人 : 周明孝 機械所精密機械與控制技術組 Tel : 03-5915768 Email : KatteChou@itri.org.tw 93 年08月12日. Agenda. 運動控制函式庫介紹 運動控制系統設計. 運動控制函式庫功能模組. 系統功能 座標系統 原點復歸 直線、圓弧、圓運動 點對點運動 JOG 運動 定位控制 進階軌跡規劃 運動狀態檢視.
E N D
EPCIO Series 運動控制卡訓練課程講義周明孝工研院機械所2004.08.12
運動控制系統設計- 使用EPCIO Series 運動控制函式庫 主講人 : 周明孝機械所精密機械與控制技術組Tel : 03-5915768Email : KatteChou@itri.org.tw93年08月12日
Agenda • 運動控制函式庫介紹 • 運動控制系統設計
運動控制函式庫功能模組 • 系統功能 • 座標系統 • 原點復歸 • 直線、圓弧、圓運動 • 點對點運動 • JOG 運動 • 定位控制 • 進階軌跡規劃 • 運動狀態檢視
運動控制函式庫功能模組 (continued) • 過行程保護 • 近端輸出入接點控制 • 編碼器控制 • 計時器與 WATCH DOG 控制 • REMOTE I/O 控制 • D/A CONVERTER 控制 • A/D CONVERTER 控制
運動控制函式庫操作特性 En-queue De-queue Interpreter MCC_Line() MCC_PtP() MCC_Arc() Fine Movement Command (FMC) Command Queue(10000 Spaces) Software(MCCL) 180 120 80 50 30 Hardware FMC FIFO x 64
運動控制函式庫操作特性 (continued) • 使用者必須設計運動命令的呼叫順序 MCC_LineX(100); MCC_SetServoOn(1); MCC_LineX(150); 預期動作 100 150 0 Servo On 實際動作 100 150 0 Servo On
Interpolation Time Interpolation Point 插值時間 (Interpolation Time)- 非閉迴路控制取樣時間間隔 直線運動命令 圓周運動命令 Interpolation Time
運動控制函式庫操作特性(continued) Cycle Interrupt Signal Time Interpolation Time 單一循環所需執行時間(包含Interpreter從 Command Queue讀取運動命令與計算下一個 插值點的位置所需的時間)
系統穩定運作條件 • 單一循環所需執行時間必須小於使用者設定的 Interpolation Time • 作業系統所造成的延遲必須小於 64 x (Interpolation Time) • 使用MCC_GetCurPulseStockCount()評估單一循環所需執行時間是否足夠
啟動與結束運動控制函式庫 • 啟動運動控制函式庫步驟 • Step 1 設定機構參數 • Step 2 設定編碼器參數 • Step 3 設定原點復歸參數 • Step 4 設定群組 (Group) 參數 • Step 5 設定系統參數 • Step 6 呼叫初始化函式
Zero - + dfPitch Ball Screw Table Gear Box E M N1 N2 dfGearRatio = N1 / N2 dwPPR wRPM dfLowLimit dfHighLimit Limit - Limit + dfLowLimitOffset Home Index Logical Home Home offset dfHighLimitOffset 機構參數描述實際機台架構
機構參數內容 typedef struct _SYS_MAC_PARAM { } SYS_MAC_PARAM; 機台結構 馬達驅動器設定
機構參數內容 (continued) typedef struct _SYS_MAC_PARAM { WORD wPosToEncoderDir; WORD wRPM; DWORD dwPPR; double dfPitch; double dfGearRatio; double dfHighLimit; double dfLowLimit; double dfHighLimitOffset; double dfLowLimitOffset; WORD wPulseMode; WORD wPulseWidth; WORD wCommandMode; WORD wPaddle; WORD wOverTravelUpSensorMode; WORD wOverTravelDownSensorMode; } SYS_MAC_PARAM;
機構參數設定 SYS_MAC_PARAM stAxisConfig; stAxisConfig. wPosToEncoderDir = 0; stAxisConfig.dwPPR = 1000; stAxisConfig.wRPM = 3000; stAxisConfig.dfPitch = 5; stAxisConfig.dfGearRatio = 2; stAxisConfig.dfHighLimit = 1000; stAxisConfig.dfLowLimit = 1000; stAxisConfig.dfHighLimitOffset = 0; stAxisConfig.dfLowLimitOffset = 0; stAxisConfig.wPulseMode = 0; stAxisConfig.wPulsewidth = 100; stAxisConfig.wCommandMode = 0; stAxisConfig.wOverTravelUpSensorMode = 2; stAxisConfig.wOverTravelDownSensorMode = 2; MCC_SetMachParam(&stEPCIOAxisConfig, 0); 機構參數各軸獨立 軸編號
編碼器參數內容 typedef struct _SYS_ENCODER_CONFIG { WORD wType; WORD wAInverse; WORD wBInverse; WORD wCInverse; WORD wABSwap; WORD wInputRate; WORD wPaddle[2]; } _SYS_ENCODER_CONFIG; 設定 Encoder 的模式 0 : AB 1 : CW/CCW 2 : P/D 3 : NO 設定 A、B 、C(Z) Phase 訊號是否反向或相互置換 設定編碼器的回授倍率
編碼器參數設定 SYS_ENCODER_CONFIG stENCConfig; stENCConfig.wType = 0; stENCConfig.wAInverse = 0; stENCConfig.wBInverse = 0; stENCConfig.wCInverse = 0; stENCConfig.wABSwap = 0; stENCConfig.wInputRate = 4; MCC_SetEncoderConfig(&stENCConfig, 0); 編碼器參數各軸獨立 軸編號
原點復歸參數內容 typedef struct _SYS_HOME_CONFIG { WORD wMode; WORD wDirection; WORD wSensorMode; WORD wPaddel0; int nIndexCount; int nPaddel1; double dfAccTime; double dfDecTime; double dfHighSpeed; double dfLowSpeed; double dfOffset; } SYS_HOME_CONFIG; 原點復歸模式 (3~16) 原點復歸運動的起始方向 原點開關(Home Sensor)的配線方式 指定編碼器INDEX訊號編號 加/減速度時間(ms) 原點復歸速度設定值 邏輯原點位置偏移量
原點復歸參數設定 SYS_HOME_CONFIG stHomeConfig; stHomeConfig.wMode = 3; stHomeConfig.wDirection = 1; stHomeConfig.wSensorMode = 0; stHomeConfig.nIndexCount = 0; stHomeConfig.dfAccTime = 300; stHomeConfig.dfDecTime = 300; stHomeConfig.dfHighSpeed = 10; stHomeConfig.dfLowSpeed = 2; stHomeConfig.dfOffset = 0; MCC_SetHomeConfig(&stHomeConfig, 0); 原點復歸參數各軸獨立 軸編號
運動控制函式使用範例 • MCC_LineX(100, 1); • MCC_SetServoOn(1); Group 編號 (針對運動控制軸) 軸編號 (針對硬體輸出軸)
群組定義 X Y Z U V W MCC_Line(10, 20, 30, 40, 50, 60, GROUP0); MCC_Line(30, 40, 50, 10, 20, 30, GROUP1); Group 0 Group 1 U、V 、W 命令忽略 不輸出 X Y Z U V W X Y Z U V W Mapping Channel 0 ~ 2 Channel 3 ~ 5
群組定義 (continued) typedef struct _SYS_GROUP_INFO { int nCardIndex; //實際輸出命令的卡編號 int nChannel[6]; //實際輸出命令的 Channel 編號 } SYS_GROUP_INFO; typedef struct _SYS_GROUP_CONFIG { int nGroupUsed [72]; GROUP_INFO stGroupInfo [72]; } SYS_GROUP_CONFIG;
群組參數設定 SYS_GROUP_CONFIG stGroupConfig; for (int index = 0; index < 72; index++) stGroupConfig. nGroupUsed[index] = -1 stGroupConfig.nGroupUsed[0] = 0; stGroupConfig.stGroupInfo[0].nCardIndex = 0; stGroupConfig.stGroupInfo[0].nChannel[0] = 0; stGroupConfig.stGroupInfo[0].nChannel[1] = 1; stGroupConfig.stGroupInfo[0].nChannel[2] = 2; stGroupConfig.stGroupInfo[0].nChannel[3] = -1; stGroupConfig.stGroupInfo[0].nChannel[4] = -1; stGroupConfig.stGroupInfo[0].nChannel[5] = -1 stGroupConfig.nGroupUsed[1] = 0; stGroupConfig stGroupInfo[1].nCardIndex = 0; stGroupConfig.stGroupInfo[1].nChannel[0] = 3; stGroupConfig.stGroupInfo[1].nChannel[1] = 4; stGroupConfig.stGroupInfo[1].nChannel[2] = 5; stGroupConfig.stGroupInfo[1].nChannel[3] = -1; stGroupConfig.stGroupInfo[1].nChannel[4] = -1; stGroupConfig.stGroupInfo[1].nChannel[5] = -1 MCC_SetGroupConfig(&stGroupConfig); 最後必須呼叫此函式 完成設定
同動軸與非同動軸定義 • 同動軸 • 屬於相同 Group 的運動軸互為同動軸,同時進行向量運動。 • 非同動軸 • 不屬於相同Group的運動軸互為非同動軸,各軸具有獨立的向量運動, 互不影響。
群組規劃應用實例 (30, 30) void main() { … … MCC_Line (30, 30, 0, 0, 0, 0, GROUP0); while (MCC_GetMotionStatus(GROUP0) != 1) Sleep(10); MCC_Line (30, 0, 0, 0, 0, 0, GROUP1); MCC_Line (60, 0, 0, 0, 0, 0, GROUP0); … … } (60, 0) (0, 0) (60, 0) (30, 0) Pos. GROUP0 GROUP1 Time 0 T1 T3
系統參數 typedef struct _SYS_CARD_CONFIG { WORD wCardType; // 運動控制卡類型 WORD wCardAddress; // ISA卡所需的 I/O 位址 WORD wIRQ_No; // ISA卡所需的 IRQ No. WORD wPaddle; } SYS_CARD_CONFIG; 運動控制卡類型 0 : EPCIO-400/405 1 : EPCIO-4000/4005 2 : EPCIO-601/605 3 : EPCIO-6000/6005
系統參數設定與啟動運動控制系統 SYS_CARD_CONFIG stCardConfig; stCardConfig.wCardAddress = 0x240; stCardConfig.wIRQ_No = 5; stCardConfig.wCardType = 2; MCC_Init System(5, &stCardConfig, 1); PCI 卡可任意輸入 I/O 位址與 IRQ No. 要使用的運動 控制卡張數 插值時間
結束運動控制系統 • 需結束運動控制系統或停止使用運動控制函式庫時,切記必須呼叫 MCC_CloseSystem()
系統運作狀態基本設定 • 要使系統正常運作尚需設定下列系統狀態 • 設定最大進給速度上限(必要) • 設定座標型式 : 絕對型式或增量型式 • 設定座標單位 : mm 或 inch • 輸出 Servo On 訊號 (如使用 V Command 命令可能為必要)
系統運作狀態基本設定(continued) 設定最大的進給 速度上限 單位為 mm/sec MCC_SetSysMaxSpeed(1000); MCC_SetAbsolute(0); MCC_SetUnit(_MM_, 0); MCC_SetServoOn(0, 0); 使用絕對座標形式 若要使用增量座標 形式, 可呼叫 MCC_SetIncrease() 設定座標單位為 mm, 若呼叫 MCC_SetUnit(_INCH_, 0), 則設定座標單位為inch 輸出 Servo On 訊號; 停止訊號輸出可呼叫 MCC_SetServoOff()
原點復歸 • MCCL提供14種原點復歸模式 (wMode = 3 ~ 16) • wMode = 3 • wMode = 4
原點復歸 (continued) • wMode = 5 • wMode = 6
原點復歸 (continued) • wMode = 7 • wMode = 8
原點復歸 (continued) • wMode = 9 • wMode = 10
原點復歸 (continued) • wMode = 11 • wMode = 12
原點復歸 (continued) • wMode = 13 • wMode = 14
原點復歸 (continued) • wMode = 15 • wMode = 16
使用原點復歸函式 • 開始原點復歸動作可呼叫MCC_Home() MCC_Home( int nXOrder, int nYOrder, int nZOrder, int nUOrder, int nVOrder, int nWOrder, WORD wCardIndex ) 定義各軸原點復歸的順序, 範圍由 0 ~ 5 (可重複), 若該 軸不進行復歸動作, 則需將 此項參數設定為 255(0xFF)
使用原點復歸函式 (continued) • 原點復歸順序的意義 • 如何停止原點復歸動作 • 使用 MCC_AbortGoHome() • 如何得知是否已完成原點復歸動作 • 使用 MCC_GetGoHomeStatus() 傳回值若為 1 表示已完成原 點復歸動作
使用者自訂原點 • 使用 MCC_DefineOrigin() • 使用 MCC_DefinePosHere() 的時機
直線、圓弧、圓運動 • 直線、圓弧、圓運動(統稱為一般運動)為各軸相依的向量運動,各軸同時運動與停止。 • 直線、圓弧、圓使用同一組速度、加速度、速度強制設定函式。 • 進行直線、圓弧、圓運動前須先給定進給速度。
進行直線、圓弧、圓運動時的輔助軸運動 (六軸為同動軸) MCC_Line(double dfX0, double dfX1, double dfX2, double dfX3, double dfX4, double dfX5) MCC_ArcXYUVW() 後三軸 U、V 、W 仍進 行直線運動 後三軸 U、V 、W 表示獨立的運動軸, 行進速度由實際行程與前三軸行程的 比值來決定
直線、圓弧、圓運動加、減速步數 行進過程與插值時間的關係
直線、圓弧、圓運動加、減速時間(continued) • 運動控制函式庫使用加、減速時間來設定一般運動、點對點運動與原點復歸運動的加、減速度值。 • 加速段與減速段的加、減速度值可分開設定 • 運動控制函式庫提供設定每一個插值時間所能送出 Pulse 量與 Pulse 增量的上限。 可參考 MCC_SetMaxPulseSpeed()與 MCC_SetMaxPulseAcc()的使用說明
直線、圓弧、圓運動加、減速時間設定 表示加速時間為 400 ms MCC_SetAccTime(400); MCC_SetDecTime(200); MCC_SetFeedSpeed(20); MCC_LineX(30); 表示減速時間為 200 ms 表示加速度為 20 / 0.4 = 50 mm/sec
直接設定加、減速度值 • 以設定加速度為例 int SetSpeed(double dfAccel, double dfSpeed) { double dfAccTime = dfSpeed / dfAccel; MCC_SetAccTime(dfAccTime); MCC_SetFeedSPeed(dfSpeed); } 獲得加速時間 SetSpeed(50, 20); MCC_LineX(20);
運動控制函式庫提供兩種加、減速度模式 T 型加、減速模式 S 型加、減速模式 直線、圓弧、圓運動加、減速模式
直線、圓弧、圓運動加、減速模式(continued) • 加速段與減速段的加、減速度模式可分開設定 • MCC_SetAccType(char cAccType) • MCC_SetDecType(char cDecType) cAccType 與 cDecType 表示設定模式 : ‘S’ : S 型 ‘T’ : T 型
點對點運動 • 點對點運動為各軸獨立的向量運動,各軸依照各自的行程與速度運動。 • 點對點運動具有特定的速度、加速度、速度強制設定函式,例如加速度時間的設定需呼叫 MCC_SetPtPAccTime(); • 使用點對點運動函式前需先設定點對點運動速度比例。