DEF BAS (COMMAND :IN, REAL_PAR :IN )為入口函數,通過SWITCH COMMAND分支調用不同的子函數,實現對機器人運動參數、坐標系、I/O 等的控制。核心功能包括:
一、整體結構與核心功能
代碼以DEF BAS (COMMAND :IN, REAL_PAR :IN )為入口函數,通過SWITCH COMMAND分支調用不同的子函數,實現對機器人運動參數、坐標系、I/O 等的控制。核心功能包括:
運動參數初始化(加速度、速度、逼近值等);
工具坐標系(TOOL)和基坐標系(BASE)管理;
PTP(點到點)和 CP(連續路徑)運動參數配置;
輸出信號(OUT)的同步 / 異步控制;
負載數據管理與錯誤處理。
二、核心函數解析
1. 入口函數 BAS
DEF BAS (COMMAND :IN, REAL_PAR :IN )
SWITCH COMMAND
CASE #INITMOV: INITMOV() ; 初始化運動參數
CASE #ACC_CP: ACC_CP(REAL_PAR) ; 設置CP運動加速度
CASE #VEL_PTP: VEL_PTP(REAL_PAR) ; 設置PTP運動速度
...(其他程序)
ENDSWITCH
END
功能:根據輸入的COMMAND(命令)和REAL_PAR(參數)調用對應子函數,實現模塊化控制。
關鍵命令:#INITMOV(初始化)、#ACC_CP(CP 加速度)、#VEL_PTP(PTP 速度)、#TOOL(工具切換)、#BASE(基坐標系切換)等。
2. 運動初始化 INITMOV
DEF INITMOV ()
; PTP/CP運動參數初始化
ACC_PTP (100.0) ; PTP加速度設為默認值的100%
VEL_PTP (100.0) ; PTP速度設為默認值的100%
ACC_CP (100.0) ; CP加速度設為默認值的100%
$VEL.CP=DEF_VEL_CP ; CP速度設為默認值
; 逼近參數(路徑平滑)
$APO.CPTP=DEF_APO_CPTP ; PTP逼近值
$APO.CDIS=DEF_APO_CDIS ; 距離逼近值
; 工具/基坐標系校正初始化
TOOL_CORR=$NULLFRAME ; 工具校正清零
BASE_CORR=$NULLFRAME ; 基坐標系校正清零
; 負載數據初始化(根據負載自適應調整)
IF $ADAP_ACC<>#NONE THEN
$LOAD_A1.M=LOAD_A1_DATA.M ; 軸1負載質量
...
ENDIF
END
功能:初始化機器人運動的核心參數,包括加速度、速度、路徑平滑(逼近)、坐標系校正和負載數據,確保運動初始狀態一致。
關鍵參數:
DEF_ACC_PTP/DEF_VEL_PTP:PTP 運動默認加速度 / 速度;
$APO:逼近參數(減少路徑拐角的沖擊);
$LOAD:負載數據(質量、重心、轉動慣量),影響機器人動態性能。
3. 基坐標系管理 BASE 與 EX_BASE
BASE 函數
DEF BASE (BASE_NO :IN )
IF (BASE_NO<=0) THEN
$BASE=$WORLD ; 激活世界坐標系
ELSE
; 根據校正參數激活指定基坐標系
$BASE=BASE_CORR:BASE_DATA[BASE_NO]:M_BASE_CORR
ENDIF
$ACT_BASE=BASE_NO ; 記錄當前基坐標系編號
END
功能:切換機器人的基坐標系(參考坐標系),支持世界坐標系(BASE_NO=0)或自定義基坐標系(BASE_DATA[BASE_NO])。
校正邏輯:考慮BASE_CORR(基坐標系校正)和M_BASE_CORR(附加校正),用于補償機械誤差或工裝偏移。
EX_BASE 函數
DEF EX_BASE (BASE_NO :IN , MACH_IDX : IN)
$BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE, BASE_DATA[BASE_NO])
END
功能:為外部軸(如軌道、旋轉臺)設置基坐標系,通過EK函數(運動學轉換)關聯外部軸的機器定義(MACHINE_DEF)。
4. 工具坐標系管理 TOOL
DEF TOOL (TOOL_NO :IN )
IF (TOOL_NO<=0) THEN
$TOOL=$NULLFRAME ; 無工具(默認坐標系)
ELSE
; 根據校正參數激活指定工具
$TOOL=TOOL_CORR_W:TOOL_DATA[TOOL_NO]:TOOL_CORR
ENDIF
; 加載工具對應的負載數據
$LOAD.M=LOAD_DATA[TOOL_NO].M ; 工具質量
$LOAD.CM=LOAD_DATA[TOOL_NO].CM ; 重心
END
功能:切換機器人的工具坐標系(TCP,工具中心點),并加載對應工具的負載數據。
關鍵作用:工具坐標系決定了機器人末端的運動參考點,負載數據確保機器人根據工具重量調整動態參數(避免振動或過載)。
5. 運動參數配置(加速度 / 速度)
ACC_CP 與 ACC_PTP
; CP運動加速度設置
DEF ACC_CP (ACC_FACTOR :IN )
IF ACC_FACTOR>100.0 THEN
$ACC.CP=DEF_ACC_CP ; 不超過默認最大值
ELSE
$ACC.CP=DEF_ACC_CP*ACC_FACTOR/100.0 ; 按比例設置
ENDIF
$ACC.ORI1=DEF_ACC_ORI1*ACC_FACTOR/100.0 ; 旋轉加速度
END
; PTP運動加速度設置(類似邏輯,適用于關節運動)
DEF ACC_PTP (ACC_FACTOR :IN )
...
$ACC_AXIS[I]=ACC ; 關節加速度
$ACC_EXTAX[I]=ACC*RedAccExAx[I]/100.0 ; 外部軸加速度(帶限制)
END
功能:分別設置 CP(連續路徑)和 PTP(點到點)運動的加速度,支持按百分比調整,確保不超過機械限制。
VEL_CP 與 VEL_PTP
; CP運動速度設置
DEF VEL_CP (VEL_VALUE :IN )
IF VEL_VALUE>$VEL_MA.CP THEN
$VEL.CP=$VEL_MA.CP ; 不超過最大速度
ELSE
$VEL.CP=VEL_VALUE*DEF_VEL_FACT ; 按比例設置
ENDIF
END
; PTP運動速度設置(類似邏輯)
DEF VEL_PTP (VEL_FACTOR :IN )
...
$VEL_AXIS[I]=VEL ; 關節速度
$VEL_EXTAX[I]=VEL*RedVelExAx[I]/100.0 ; 外部軸速度(帶限制)
END
功能:設置 CP 和 PTP 運動的速度,限制最大值以保證安全。
6. 坐標系與路徑處理 FRAMES
DEF FRAMES ()
; 檢查中斷狀態,恢復中斷配置
IF STOPM_FLAG==TRUE THEN
INTERRUPT ON 3 ; 重新啟用中斷3(停止消息)
ENDIF
; 設置IPO模式(運動插補參考系)
SET_IPO_MODE (FDAT_ACT.IPO_FRAME )
; 處理關節偏移(用于外部軸同步)
IF JOINT_DEVICE_INDEX[FDAT_ACT.BASE_NO] > 0 THEN
$JOINT_OFFSET[AXIS_INDEX] = EO(...) ; 關節偏移補償
ENDIF
; 根據機器類型切換坐標系
SWITCH MECH_TYPE
CASE #ROBOT: LK_BASE(...) ; 機器人協作坐標系
CASE #CONVEYOR: EB_BASE(...) ; 傳送帶坐標系
ENDSWITCH
END
功能:復雜坐標系切換邏輯,支持多機器人協作(LK_BASE)、傳送帶跟蹤(EB_BASE)等場景,處理中斷和關節偏移補償。
7. 輸出信號控制 OUT_SYNC 與 OUT_ASYNC
; 同步輸出(與運動同步觸發)
DEF OUT_SYNC ()
SWITCH ODAT_ACT.OUT_MODE
CASE #TRIGGER_: PULSE ($OUT[ODAT_ACT.OUT_NO], ODAT_ACT.STATE, ODAT_ACT.PULSE_TIME )
ENDSWITCH
END
; 異步輸出(立即執行)
DEF OUT_ASYNC ()
SWITCH ODAT_ACT.OUT_MODE
CASE #CONT_: $OUT[ODAT_ACT.OUT_NO]=ODAT_ACT.STATE ; 持續輸出
ENDSWITCH
END
功能:控制機器人的數字輸出信號,OUT_SYNC 用于與運動同步的信號(如到達位置時觸發夾爪),OUT_ASYNC 用于立即執行的信號(如緊急停止)。
8. 負載模式檢查與更新
; 更新負載模式(確保未定義負載時設為手動模式)
DEF UpdateLoadModes ()
FOR I=1 TO MAX_TOOL
IF (LOAD_MODE[I]==#NONE) AND (LOAD_DATA[I].M <> -1) THEN
LOAD_MODE[I]=#MANUAL
ENDIF
ENDFOR
END
; 檢查負載模式是否與操作模式沖突(如T1模式下的負載限制)
DEF CheckLoadModes ()
IF $MODE_OP <> #T1 THEN
; 檢測到T1模式下的負載配置,提示錯誤
MsgQuit ("LddPerformedInT1", "BasisTech", MsgPar[],35,MsgOpt)
ENDIF
END
功能:確保負載配置與機器人操作模式(如 T1 手動模式、自動模式)匹配,避免因負載不匹配導致的運動故障。
三、關鍵技術概念
PTP vs CP 運動:PTP(Point-to-Point):機器人以最短路徑從起點到終點,關節獨立運動,適用于快速定位(如搬運)。
CP(Continuous Path):機器人沿連續路徑運動,路徑平滑,適用于焊接、涂膠等高精度任務。
坐標系管理:基坐標系(BASE):機器人運動的參考系(如工作臺、地面),可自定義多個基坐標系適應不同工裝。
工具坐標系(TOOL):以工具末端為原點的坐標系,確保機器人精確控制工具位置(如焊槍、夾爪)。
負載數據(LOAD_DATA):包括工具的質量、重心、轉動慣量,機器人根據負載調整加速度和 jerk(加加速度),避免振動或電機過載。
逼近參數():控制路徑拐角的平滑程度,減少機械沖擊(如APO.CDIS` 為距離逼近,拐角處提前減速)。
中斷與錯誤處理:通過INTERRUPT處理緊急停止,ON_ERROR_PROCEED和ERR_CLEAR處理參數錯誤,確保系統穩定性。
四、總結
該BAS功能是 KUKA 機器人的 “基礎控制中樞”,通過標準化的接口封裝了運動參數配置、坐標系管理、負載控制等核心功能。上層應用程序只需調用BAS函數并傳入命令,即可實現復雜的機器人運動控制,無需重復編寫底層邏輯。