Download
epcio series 2004 08 12 n.
Skip this Video
Loading SlideShow in 5 Seconds..
EPCIO Series 運動控制卡 訓練課程講義 周明孝 工研院機械所 2004.08.12 PowerPoint Presentation
Download Presentation
EPCIO Series 運動控制卡 訓練課程講義 周明孝 工研院機械所 2004.08.12

EPCIO Series 運動控制卡 訓練課程講義 周明孝 工研院機械所 2004.08.12

540 Views Download Presentation
Download Presentation

EPCIO Series 運動控制卡 訓練課程講義 周明孝 工研院機械所 2004.08.12

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. EPCIO Series 運動控制卡訓練課程講義周明孝工研院機械所2004.08.12

  2. 運動控制系統設計- 使用EPCIO Series 運動控制函式庫 主講人 : 周明孝機械所精密機械與控制技術組Tel : 03-5915768Email : KatteChou@itri.org.tw93年08月12日

  3. Agenda • 運動控制函式庫介紹 • 運動控制系統設計

  4. 運動控制函式庫功能模組 • 系統功能 • 座標系統 • 原點復歸 • 直線、圓弧、圓運動 • 點對點運動 • JOG 運動 • 定位控制 • 進階軌跡規劃 • 運動狀態檢視

  5. 運動控制函式庫功能模組 (continued) • 過行程保護 • 近端輸出入接點控制 • 編碼器控制 • 計時器與 WATCH DOG 控制 • REMOTE I/O 控制 • D/A CONVERTER 控制 • A/D CONVERTER 控制

  6. 運動控制函式庫操作特性 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

  7. 運動控制函式庫操作特性 (continued) • 使用者必須設計運動命令的呼叫順序 MCC_LineX(100); MCC_SetServoOn(1); MCC_LineX(150); 預期動作 100 150 0 Servo On 實際動作 100 150 0 Servo On

  8. Interpolation Time Interpolation Point 插值時間 (Interpolation Time)- 非閉迴路控制取樣時間間隔 直線運動命令 圓周運動命令 Interpolation Time

  9. 運動控制函式庫操作特性(continued) Cycle Interrupt Signal Time Interpolation Time 單一循環所需執行時間(包含Interpreter從 Command Queue讀取運動命令與計算下一個 插值點的位置所需的時間)

  10. 系統穩定運作條件 • 單一循環所需執行時間必須小於使用者設定的 Interpolation Time • 作業系統所造成的延遲必須小於 64 x (Interpolation Time) • 使用MCC_GetCurPulseStockCount()評估單一循環所需執行時間是否足夠

  11. 啟動與結束運動控制函式庫 • 啟動運動控制函式庫步驟 • Step 1 設定機構參數 • Step 2 設定編碼器參數 • Step 3 設定原點復歸參數 • Step 4 設定群組 (Group) 參數 • Step 5 設定系統參數 • Step 6 呼叫初始化函式

  12. 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 機構參數描述實際機台架構

  13. 機構參數內容 typedef struct _SYS_MAC_PARAM { } SYS_MAC_PARAM; 機台結構 馬達驅動器設定

  14. 機構參數內容 (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;

  15. 機構參數設定 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); 機構參數各軸獨立 軸編號

  16. 編碼器參數內容 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 訊號是否反向或相互置換 設定編碼器的回授倍率

  17. 編碼器參數設定 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); 編碼器參數各軸獨立 軸編號

  18. 原點復歸參數內容 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) 原點復歸速度設定值 邏輯原點位置偏移量

  19. 原點復歸範例

  20. 原點復歸參數設定 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); 原點復歸參數各軸獨立 軸編號

  21. 運動控制函式使用範例 • MCC_LineX(100, 1); • MCC_SetServoOn(1); Group 編號 (針對運動控制軸) 軸編號 (針對硬體輸出軸)

  22. 群組定義 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

  23. 群組定義 (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;

  24. 群組參數設定 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); 最後必須呼叫此函式 完成設定

  25. 同動軸與非同動軸定義 • 同動軸 • 屬於相同 Group 的運動軸互為同動軸,同時進行向量運動。 • 非同動軸 • 不屬於相同Group的運動軸互為非同動軸,各軸具有獨立的向量運動, 互不影響。

  26. 群組規劃應用實例 (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

  27. 系統參數 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

  28. 系統參數設定與啟動運動控制系統 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. 要使用的運動 控制卡張數 插值時間

  29. 結束運動控制系統 • 需結束運動控制系統或停止使用運動控制函式庫時,切記必須呼叫 MCC_CloseSystem()

  30. 系統運作狀態基本設定 • 要使系統正常運作尚需設定下列系統狀態 • 設定最大進給速度上限(必要) • 設定座標型式 : 絕對型式或增量型式 • 設定座標單位 : mm 或 inch • 輸出 Servo On 訊號 (如使用 V Command 命令可能為必要)

  31. 系統運作狀態基本設定(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()

  32. 原點復歸 • MCCL提供14種原點復歸模式 (wMode = 3 ~ 16) • wMode = 3 • wMode = 4

  33. 原點復歸 (continued) • wMode = 5 • wMode = 6

  34. 原點復歸 (continued) • wMode = 7 • wMode = 8

  35. 原點復歸 (continued) • wMode = 9 • wMode = 10

  36. 原點復歸 (continued) • wMode = 11 • wMode = 12

  37. 原點復歸 (continued) • wMode = 13 • wMode = 14

  38. 原點復歸 (continued) • wMode = 15 • wMode = 16

  39. 使用原點復歸函式 • 開始原點復歸動作可呼叫MCC_Home() MCC_Home( int nXOrder, int nYOrder, int nZOrder, int nUOrder, int nVOrder, int nWOrder, WORD wCardIndex ) 定義各軸原點復歸的順序, 範圍由 0 ~ 5 (可重複), 若該 軸不進行復歸動作, 則需將 此項參數設定為 255(0xFF)

  40. 使用原點復歸函式 (continued) • 原點復歸順序的意義 • 如何停止原點復歸動作 • 使用 MCC_AbortGoHome() • 如何得知是否已完成原點復歸動作 • 使用 MCC_GetGoHomeStatus() 傳回值若為 1 表示已完成原 點復歸動作

  41. 使用者自訂原點 • 使用 MCC_DefineOrigin() • 使用 MCC_DefinePosHere() 的時機

  42. 直線、圓弧、圓運動 • 直線、圓弧、圓運動(統稱為一般運動)為各軸相依的向量運動,各軸同時運動與停止。 • 直線、圓弧、圓使用同一組速度、加速度、速度強制設定函式。 • 進行直線、圓弧、圓運動前須先給定進給速度。

  43. 進行直線、圓弧、圓運動時的輔助軸運動 (六軸為同動軸) MCC_Line(double dfX0, double dfX1, double dfX2, double dfX3, double dfX4, double dfX5) MCC_ArcXYUVW() 後三軸 U、V 、W 仍進 行直線運動 後三軸 U、V 、W 表示獨立的運動軸, 行進速度由實際行程與前三軸行程的 比值來決定

  44. 直線、圓弧、圓運動加、減速步數 行進過程與插值時間的關係

  45. 直線、圓弧、圓運動加、減速時間(continued) • 運動控制函式庫使用加、減速時間來設定一般運動、點對點運動與原點復歸運動的加、減速度值。 • 加速段與減速段的加、減速度值可分開設定 • 運動控制函式庫提供設定每一個插值時間所能送出 Pulse 量與 Pulse 增量的上限。 可參考 MCC_SetMaxPulseSpeed()與 MCC_SetMaxPulseAcc()的使用說明

  46. 直線、圓弧、圓運動加、減速時間設定 表示加速時間為 400 ms MCC_SetAccTime(400); MCC_SetDecTime(200); MCC_SetFeedSpeed(20); MCC_LineX(30); 表示減速時間為 200 ms 表示加速度為 20 / 0.4 = 50 mm/sec

  47. 直接設定加、減速度值 • 以設定加速度為例 int SetSpeed(double dfAccel, double dfSpeed) { double dfAccTime = dfSpeed / dfAccel; MCC_SetAccTime(dfAccTime); MCC_SetFeedSPeed(dfSpeed); } 獲得加速時間 SetSpeed(50, 20); MCC_LineX(20);

  48. 運動控制函式庫提供兩種加、減速度模式 T 型加、減速模式 S 型加、減速模式 直線、圓弧、圓運動加、減速模式

  49. 直線、圓弧、圓運動加、減速模式(continued) • 加速段與減速段的加、減速度模式可分開設定 • MCC_SetAccType(char cAccType) • MCC_SetDecType(char cDecType) cAccType 與 cDecType 表示設定模式 : ‘S’ : S 型 ‘T’ : T 型

  50. 點對點運動 • 點對點運動為各軸獨立的向量運動,各軸依照各自的行程與速度運動。 • 點對點運動具有特定的速度、加速度、速度強制設定函式,例如加速度時間的設定需呼叫 MCC_SetPtPAccTime(); • 使用點對點運動函式前需先設定點對點運動速度比例。