ZMC406硬件介紹
ZMC406是正運動推出的一款多軸高性能 EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運行的場合。

ZMC406支持6軸運動控制,最多可擴展至32軸,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。
ZMC406支持PLC、Basic、HMI組態三種編程方式。PC上位機API編程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。

ZMC406支持6軸運動控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和12路輸出口,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。
(1)不使用插槽,穩定性更好;
(2)可以選用MINI電腦或ARM工控電腦,降低整體成本;
(3)控制器直接做接線板使用,節省空間;
(4) 控制器上可以并行運行程序,與PC只需要簡單交互,降低PC軟件的復雜性等優勢。
ZMC控制器通過RTSys開發環境來調試,RTSys是一個方便的編程、編譯和調試環境。RTSys可以通過串口、以太網、PCI和LOCAL與控制器建立連接。應用程序可以使用VC,VB,VS,C++Builder,C#等軟件來開發。調試時可以把RTSys軟件同時連接到控制器,程序運行時需要動態庫zmotion.dll。
Delta機械手支持3-4軸,關節軸1+關節軸2+關節軸3+[末端旋轉軸4]。后綴帶R的控制器支持Delta機械手功能,例如ZMC406R。
ZMC406R可以采用脫機的方式將編輯好的程序下載到控制器上,可利用觸摸屏示教的方式編輯想要運動的軌跡。也可以用PC API函數調用方式或者實時發送指令操作,在PC上位機C#,C++,Labview,Python等語言來開發Delta機械手的應用。

??? 機械手相關概念
1、關節軸與虛擬軸
(1)關節軸: 是指實際機械結構中的旋轉關節,在程序中一般顯示旋轉角度(某些結構也是平移軸)。由于電機與旋轉關節會存在減速比,所以設置脈沖當量UNITS(電機走1mm或者1°需要的脈沖數)時要按照實際關節旋轉一圈來設置,同時TABLE中填寫結構參數時也要按照旋轉關節中心計算,而不是按照電機軸中心計算。
(2)虛擬軸: 不是實際存在的,抽象為世界坐標系的6個自由度,依次為X、Y、Z、RX、RY、RZ。可以理解為直角坐標系的三個直線軸和三個旋轉軸,用來確定機械手末端工作點的加工軌跡與坐標。
2、正解運動與逆解運動
(1)正解運動: 通 過操作關節坐標,再根據機械結構參數可以計算出末端位置在直角坐標系的空間位置,這個過程稱為正解運動。此時操作的是實際關節軸,虛擬軸自動計算坐標。此時只能操作關節軸運動,正解模式一般用于手動 調整關節位置或上電點位回零。
(2)逆解運動: 給定一個直角坐標系中的空間位置,反推出各關節軸坐標,這個過程稱為逆解運動。此時操作的是虛擬軸,實際關節軸自動解算坐標并運動。 控制器使用CONNFRAME指令建立逆解模式,此指令作用在關節軸上,此時只能操作虛擬軸,對虛擬軸發送運動指令,可以在笛卡爾坐標系中做直線,圓弧,空間圓弧等運動,關節軸在CONNFRAME的作用下會自動運動到逆解后的位置。
??? 機械手使用操作步驟
1、確認電機轉向是否正確。
3個關節軸向下旋轉時為正向。末端旋轉軸逆時針旋轉為正向(俯視)。 連接上機械手仿真工具,通過Rtsys軟件菜單欄的【工具】-【手動運動】, 以較小的速度分別操作3個關節軸移動,觀察各個關節軸下桿移動過程中是否趨向末端工作點,若是則說明電機轉向是正確的。

2、TABLE寄存器(控制器上電后自動生成)依次存入機械手結構參數。
建立機械手連接時,需要將機械結構參數按照如下次序依次填寫到TABLE數組中。Delta機械手FRAME12模型機械結構參數說明如下。


‘從TableNum編號開始依次機械手結構參數上間距半徑、下間距半徑、上桿長度、下桿長度、第一個關節軸旋轉一圈的脈沖數、第二個關節軸旋轉一圈的脈沖數、第三個關節軸旋轉一圈的脈沖數、末端與下面中心點的X偏移、末端與下面中心點的Y偏移、末端與下面中心點的Z偏移、第四個關節軸旋轉一圈的脈沖數到Table中。
TABLE(TableNum,Top_R,Under_R,Top_L,Under_L,OneCirPules_J1,OneCirPules_J2,OneCirPules_J3,Offset_X,Offset_Y,Offset_Z,OneCirPules_J4)
3、設置關節軸參數及虛擬軸參數。
各軸的軸類型和脈沖當量(units)要設置正確,設置為電機走1°需要的脈沖數。虛擬軸的units跟實際發送脈沖數無關,用于設置運動精度,虛擬軸的1mm的脈沖數一般建議設置為1000,表示精度為小數點后3位。
'關節軸設置
BASE(Axis_JList(0),Axis_JList(1),Axis_JList(2),Axis_JList(3))
'脈沖軸類型設置為1。若是總線軸類型,可設置為65
ATYPE = 1,1,1,1
UNITS = UnitsJList(0),UnitsJList(1),UnitsJList(2),UnitsJList(3)
'設置關節軸速度、加速度(一般設置為速度的10倍)、減速度(一般設置為速度的10倍)
SPEED = SpeedJList(0),SpeedJList(1),SpeedJList(2),SpeedJList(3)
ACCEL = ADSpeedJList(0),ADSpeedJList(1),ADSpeedJList(2),ADSpeedJList(3)
DECEL = ADSpeedJList(0),ADSpeedJList(1),ADSpeedJList(2),ADSpeedJList(3)
'S曲線
SRAMP = SrampJ(0),SrampJ(1),SrampJ(2),SrampJ(3)
'虛擬軸設置
BASE(Axis_VList(0),Axis_VList(1),Axis_VList(2))
'虛擬軸軸類型設置為0
ATYPE = 0,0,0
'虛擬軸脈沖當量設置為1000--表示精度為小數點后3位
UNITS = 1000,1000,1000
'設置虛擬軸速度、加速度(一般設置為速度的10倍)、減速度(一般設置為速度的10倍)
SPEED = SpeedVList(0),SpeedVList(1),SpeedVList(2)
ACCEL = AccelV(0),AccelV(1),AccelV(2)
DECEL = DecelV(0),DecelV(1),DecelV(2)
'S曲線
SRAMP = SrampV(0),SrampV(1),SrampV(2)
4、移動各關節軸到規定的零點位置。
機械手算法建立時,需要有個零點位置作為參考。當Delta機械手 各關節軸的連桿 L1都處于水平位置時,認為是關節零點位置。實際現場機械手機臺 一般有定位銷,沒有定位銷的話可以通過水平儀把連桿L1調整至水平。

5、根據需求建立正解或逆解控制機械手。
??? 機械手指令說明
不同的機械手模型參數是有差異的,可通過“正運動機械手指令手冊說明”(文章末尾掃碼查看),查閱對應的機械手模型參數進行確認選擇。
本文以Delta的FRAME12模型(有末端旋轉軸,使用關節軸操作旋轉軸)為例介紹,機械手正解與逆解的指令說明如下。

1、CONNREFRAME -- 建立正解連接
指令描述: 將虛擬軸的坐標與關節軸的坐標關聯,關節軸運動后,虛擬軸自動走到相應的位置。
指令語法:
CONNREFRAME(frame,tablenum,Axis_J1,Axis_J2,Axis_J3,Axis_J4)
參數說明:
frame :坐標系類型。參考【正運動機械手指令手冊說明】, frame是 12,代表這款機械手模型是4軸Delta且 關節軸操作末端旋轉軸。
Tablenum:存儲機械手結構參數的TABLE起始位置,依次存儲對應模型的機械手結構參數。
Axis_J1: 第1個關節軸軸號
Axis_J2: 第2個關節軸軸號
Axis_J3: 第3個關節軸軸號
Axis_J4: 第4個關節軸軸號
2、CONNFRAME -- 建立逆解連接
指令描述: 將當前關節坐標系的目標位置與虛擬坐標系的位置關聯;關節坐標系的運動最大速度受SPEED參數的限制;當關節軸告警等出錯時,此運動會被CANCEL。
指令語法:
CONNFRAME(frame,tablenum,Axis_Vx,Axis_Vy,Axis_Vz,Axis_J4)
參數說明:
frame :坐標系類型。參考【正運動機械手指令手冊說明】, frame是 12,代表這款機械手模型是4軸Delta且 關節軸操作末端旋轉軸。
Tablenum:存儲機械手結構參數的TABLE起始位置,依次存儲對應模型的機械手結構參數。
Axis_Vx: 第1個虛擬軸軸號
Axis_Vy: 第2個虛擬軸軸號
Axis_Vz: 第3個虛擬軸軸號
Axis_J4: 第4個關節軸軸號
??? Delta機械手模式建立
1、正解建立
以Delta機械手的Frame12模型為例。 先將機械手結構參數從某個Table起始編號依次存儲到Table數組中,然后選擇對應模型的軸列表,使用CONNREFRAME指令建立正解模式。
指令說明可通過Rtsys軟件菜單欄的【常用】-【幫助文檔】-【RTBasic幫助】-【索引】,在查找欄搜索CONNREFRAME即可查看。
'將機械手參數從編號TableNum開始依次存儲到Table數組中
TABLE(TableNum,Top_R,Under_R,Top_L,Under_L,OneCirPules_J1,OneCirPules_J2,OneCirPules_J3,Offset_X,Offset_Y,Offset_Z,OneCirPules_J4)
'選擇軸列表
BASE(Axis_Vx,Axis_Vy,Axis_Vz,Axis_J4)
'建立機械手正解
CONNREFRAME(FrameType,TableNum,Axis_J1,Axis_J2,Axis_J3,Axis_J4)
若機械手正解 建立成功,虛擬軸MTYPE(當前運動類型)將顯示為34,此時只能操作關節軸在關節坐標系中調整機械手姿態, 手動運動可通過RTSys軟件菜單欄的【工具】-【手動運動】,待【手動運動】界面彈出之后選擇關節軸軸編號(本文關節軸以軸0,軸1,軸2,末端旋轉軸軸3為例),然后根據實際需求選擇點動或者寸動。 虛擬軸會自動計算末端工作點位于直角坐標系中的位置。


2、逆解建立
以Delta機械手的Frame12模型為例。 先將機械手結構參數從某個Table起始編號依次存儲到Table數組中,然后選擇對應模型的軸列表,使用CONNFRAME指令建立正解模式。指令說明可通過Rtsys軟件工具欄的【常用】-【幫助文檔】-【RTBasic幫助】-【索引】,在查找欄搜索CONNFRAME查看。
'將機械手參數從編號TableNum開始依次存儲到Table數組中
TABLE(TableNum,Top_R,Under_R,Top_L,Under_L,OneCirPules_J1,OneCirPules_J2,OneCirPules_J3,Offset_X,Offset_Y,Offset_Z,OneCirPules_J4)
'選擇軸列表
BASE(Axis_J1,Axis_J2,Axis_J3,Axis_J4)
'建立機械手逆解
CONNFRAME(FrameType,TableNum,Axis_Vx,Axis_Vy,Axis_Vz,Axis_J4)
若機械手逆解建立成功,關節軸MTYPE(當前運動類型)將顯示為33,【手動運動】界面操作虛擬軸方法同上。此時加工工藝指令只能操作虛擬軸,事先編輯好運動的軌跡在直角坐標系中運動(本文虛擬軸以軸10,軸11,軸12為例),關節軸會自動計算在關節坐標系中如何聯合運動。


??? 程序編輯
RTSys軟件支持Basic,HMI與PLC混合編程,本例程采用Basic結合HMI界面混合編程進行演示。可通過RTSys軟件菜單欄的【HMI】-【工具箱】,選擇控件進行拖拉擺放,設計交互界面。

在本次例程中均先在bas文件中定義全局的SUB子函數,編輯子函數的功能(工程源碼見文章末尾)需求然后使用控件綁定,控件的動作均選擇調用函數。操作流程如下圖。

??? 應用例程
1、需求描述
Delta機械手逆解建立時以零點位置為參考,確定一個安全高度。基本動作為機械手上升到安全高度去固定的取料點上方,然后下降打開Op口通過真空吸的方式去取料,延時抬升到安全高度然后運動到固定的2*2碼盤位置,下降到碼盤位置關閉Op進行放料,然后抬升依次循環直到將碼盤放滿后停止。
2、加工代碼
'啟動標志位置1
StartFlag = 1
LOCAL SafeHigh,i
'安全高度
SafeHigh = DPOS(Axis_VList(2))-25
'行,列
LOCAL Row,Col
'固定的取料點位置
LOCAL SrcBorrow_X,SrcBorrow_Y,SrcBorrow_Z
SrcBorrow_X = 5
SrcBorrow_Y = 5
SrcBorrow_Z = SafeHigh-20
'選擇虛擬軸
BASE(Axis_VList(0),Axis_VList(1),Axis_VList(2))
'設置加工的速度、加速度、減速度
SPEED = SpeedVList(0)
ACCEL = AccelV(0)
DECEL = DecelV(0)
'打開連續插補
MERGE = ON
'每次啟動臨時總數清零
TmpSum = 0
'運動到零點位置參考的安全高度
MOVEABS(0,0,SafeHigh)
FOR Col=1 TO 2
FOR Row=1 TO 2
'運動到取料點上方
MOVEABS(SrcBorrow_X,SrcBorrow_Y,SafeHigh)
'下降到取料點
MOVEABS(SrcBorrow_X,SrcBorrow_Y,SrcBorrow_Z)
'打開Op口吸附取料
MOVE_OP(8,ON)
'延時
MOVE_DELAY(300)
'上升到安全高度
MOVEABS(SrcBorrow_X,SrcBorrow_Y,SafeHigh)
'運動到碼盤放料點上方位置
MOVEABS(-5*Row,5*Col,SafeHigh)
'下降到碼盤放料點位置
MOVEABS(-5*Row,5*Col,SrcBorrow_Z)
'關閉Op口進行放料
MOVE_OP(8,OFF)
'延時
MOVE_DELAY(300)
'上升到安全高度
MOVEABS(-5*Row,5*Col,SafeHigh)
'臨時總數自增
TmpSum = TmpSum+1
NEXT
NEXT
'等待所有軸停止
WAIT UNTIL IDLE(Axis_VList(0)) AND IDLE(Axis_VList(1)) AND IDLE(Axis_VList(2))
DELAY(10)
RAPIDSTOP(2)
DELAY(10)
'啟動標志位置0
StartFlag = 0
??? 調試分析
1、將程序下載到控制器運行,先后點擊RTSys軟件菜單欄的【工具】-【插件】-【XPLC SCREEN】。

2、 待交互界面彈出后,在主界面機械手模式選擇”機械手正解” 。

3、 建立正解連接之后,打開正運動機械手仿真軟件ZRobotView,點擊“連接”彈出”連接控制器”窗口,然后選擇連接控制器的方式(仿真工具支持串口和網口連接)。這里以網口連接為例,在IP欄選擇控制器的IP然后進行連接。

4、連接成功后,仿真工具上方會顯示當前機械手類別,程序中存入Table中的機械手結構參數仿真工具也可以查看,且構建出相應參數的機械手模型。

5、切換到 RTSys編程軟件,先后點擊菜單欄的【常用】-【示波器】。待示波器窗口彈出后選擇XYZ模式,從三維空間觀察動作演示效果。數據源選擇DPOS(規劃位置),數據源編號選擇虛擬軸軸號。示波器參數確認后,先后點擊【停止】-【啟動】-【手動觸發】。

6、 切換到交互界面,在主界面機械手模式選擇”機械手逆解”,建立 逆解模式。然后點擊“啟動”,進行需求工藝的加工流程。

7、切換到RTSys軟件的示波器界面觀察加工效果,Delta機械手每次來回取放料過程,始終保持在安全高度下進行升降,這樣確保在實際加工的平穩性。

教學視頻。
完整代碼獲取地址
▼

本次,正運動技術EtherCAT運動控制器Delta機械手應用 ,就分享到這里。
更多精彩內容請關注“ 正運動小助手 ”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。
本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。
正運動技術專注于運動控制技術研究和通用運動控制軟硬件產品的研發,是國家級高新技術企業。正運動技術匯集了來自華為、中興等公司的優秀人才,在堅持自主創新的同時,積極聯合各大高校協同運動控制基礎技術的研究,是國內工控領域發展最快的企業之一,也是國內少有、完整掌握運動控制核心技術和實時工控軟件平臺技術的企業。主要業務有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等等。

|