今天,正運(yùn)動小助手給大家分享一下步進(jìn)控制的光柵尺全閉環(huán)EtherCAT運(yùn)動控制器ZMC432CL-V2的二維螺距補(bǔ)償?shù)墓δ艿尿炞C。
更多關(guān)于ZMC432CL-V2運(yùn)動控制器的詳情點(diǎn)擊→步進(jìn)控制的光柵尺全閉環(huán)解決方案:32軸EtherCAT總線運(yùn)動控制器ZMC432CL-V2 查看。
01
產(chǎn)品簡介
ZMC432CL-V2高性能多軸運(yùn)動控制器是一款兼容EtherCAT總線和脈沖型的獨(dú)立式運(yùn)動控制器,具備高速實時反饋功能,支持脈沖全閉環(huán)控制,能夠?qū)崿F(xiàn)高精度、高響應(yīng)速度的運(yùn)動控制。高精度定位,有效消除機(jī)械傳動誤差,滿足高精密加工場景應(yīng)用要求。
ZMC432CL-V2硬件功能:
豐富的運(yùn)動控制功能:支持直線、圓弧、空間圓弧、螺旋插補(bǔ)等。
硬件接口豐富:支持脈沖軸(帶編碼器反饋)和EtherCAT總線軸,具備24路輸入和12路輸出的通用IO,部分為高速IO,2路模擬量輸出(DA)。
EtherCAT刷新周期最快達(dá)250us,滿足高速通信需求。
支持4通道硬件比較輸出、硬件定時器、運(yùn)動中精準(zhǔn)輸出,適用于多通道視覺飛拍等場合。
支持掉電檢測、掉電存儲,多種程序加密方式,能夠有效防止系統(tǒng)故障,保護(hù)項目工程文件數(shù)據(jù),并提高系統(tǒng)的可靠性。
通過純國產(chǎn)IDE開發(fā)環(huán)境RTSys進(jìn)行項目開發(fā),可實時仿真、在線跟蹤以及診斷與調(diào)試,簡便易用,支持多種高級上位機(jī)語言聯(lián)合編程進(jìn)行二次開發(fā)。
ZMC432CL-V2產(chǎn)品介紹視頻請點(diǎn)擊→步進(jìn)控制的光柵尺全閉環(huán)解決方案:32軸EtherCAT總線運(yùn)動控制器ZMC432CL-V2
02
硬件接口
03
硬件接線
1.數(shù)字量輸入口IN接線
圖1 輸入口通用接線圖
圖2 輸入口單端編碼器接線圖
2.數(shù)字量輸出口接線
圖3 輸出口通用接線圖
圖4 輸出口單端脈沖軸接線圖
04
控制器開發(fā)
1.PC開發(fā)
支持以下語言進(jìn)行開發(fā),我們所有的開發(fā)語言和所有控制器提供的都是同一套API接口。
2.脫機(jī)開發(fā)
使用自主自研的IDE RTSys進(jìn)行開發(fā),支持Basic、梯形圖開發(fā)。
05
二維螺距補(bǔ)償應(yīng)用場景
06
二維螺距補(bǔ)償指令說明
正運(yùn)動二維螺距補(bǔ)償指令使用的注意點(diǎn):
1.必須先設(shè)置ATYPE,然后設(shè)置補(bǔ)償;修改ATYPE時,必須先關(guān)閉補(bǔ)償!
2.設(shè)置補(bǔ)償時,軸要位于IDLE的停止?fàn)顟B(tài)!
3.開始補(bǔ)償點(diǎn)的坐標(biāo)填寫的是軸的MPOS坐標(biāo)!
4.帶編碼器反饋的軸類型,不同位置補(bǔ)多少個脈沖,是根據(jù)編碼器位置確定脈沖補(bǔ)償?shù)膫數(shù)的,所以一定要保證編碼器的反饋是正確的!
5.機(jī)臺斷使能前,需先關(guān)掉二維螺距補(bǔ)償功能,否則如果斷使能的情況下機(jī)臺有移動,會造成dpos跟mpos的數(shù)據(jù)對不上。
6.如下圖假設(shè)開始補(bǔ)償點(diǎn)是坐標(biāo)系的原點(diǎn),補(bǔ)償間距分別是【DisX,DisY】補(bǔ)償?shù)狞c(diǎn)是【4*4】的話,螺距補(bǔ)償表存儲的點(diǎn)位數(shù)據(jù)就是以下【點(diǎn)1】到【點(diǎn)16】的位置下的補(bǔ)償數(shù)據(jù)。
07
二維螺距算法通過Basic編程快速驗證效果
假設(shè)工況1:X軸和Y軸的絲桿螺距正常,但X軸和Y軸安裝不垂直,假設(shè)安裝夾角是135度。
步驟一:
規(guī)劃開始補(bǔ)償點(diǎn),補(bǔ)償間距,補(bǔ)償?shù)男袛?shù)和列數(shù)。
'初始化二維螺距補(bǔ)償?shù)南嚓P(guān)參數(shù)TableId = 1000
'補(bǔ)償數(shù)據(jù)的Table起始點(diǎn)StartMposX = 0
'X軸開始補(bǔ)償?shù)奈恢肧tartMposY = 0
'Y軸開始補(bǔ)償?shù)奈恢肈isX = 0.5
'X軸方向補(bǔ)償?shù)拈g距DisY = 0.5
'Y軸方向補(bǔ)償?shù)拈g距ColNumX = 50
'X軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)RowlNumY = 50
'Y軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)
步驟二:
根據(jù)該工況的測試環(huán)境,計算各個補(bǔ)償點(diǎn)的X方向和Y方向的改補(bǔ)償?shù)拿}沖數(shù),并更新到TABLE。
'更新該工況下二維補(bǔ)償表的TABLE數(shù)據(jù)
FOR i=0 to RowlNumY-1
'先按行填寫該行的每一列的數(shù)據(jù)
FOR j=0 to ColNumX-1
'【工況一:XY軸螺距正常,但X軸和Y軸安裝不垂直,假設(shè)安裝夾角是135度】
'一定是先運(yùn)動到補(bǔ)償點(diǎn)位位置然后通過其他定位方式(如視覺)實際定位出來的差值
IF i=0 and j=0 THEN
Angle=135 'X軸和Y軸的安裝夾角
ENDIF
LOCAL ActPosX,ActPosY '實際位置
'計算實際位置
ActPosX = 1 + (COS(Angle*PI/180))
ActPosY = (SIN(Angle*PI/180))
'計算各個補(bǔ)償點(diǎn)需要補(bǔ)償?shù)腦和Y方向的脈沖數(shù)
Table(TableId+2*(i*ColNumX+j)) = DisX*(1+i)*(1- ActPosX) * UNITS(AxisX)
Table(TableId+2*(i*ColNumX+j)+1) = DisY*(1+i)*(1- ActPosY) * UNITS(AxisY)
NEXT
NEXT
步驟三:
調(diào)用二維螺距補(bǔ)償指令啟用二維螺距補(bǔ)償功能。
'開始2D螺距補(bǔ)償
WAIT IDLE
PITCH2SET(1,StartMposX ,StartMposY,,DisX,DisY,ColNumX,RowlNumY,TableId)
步驟四:
發(fā)送運(yùn)動指令,根據(jù)實際的編碼器反饋來驗證控制器實際上發(fā)的脈沖數(shù)是否正確。
'開始運(yùn)動
MoveTest(1,1.1,RunMode)
MoveTest(2,1.1,RunMode)
MoveTest(2,2.1,RunMode)
步驟五:
驗證效果。(PS:x軸和Y軸的脈沖當(dāng)量均設(shè)置的是100000)
根據(jù)以上數(shù)據(jù)啟用二維螺距補(bǔ)償功能后,我們可以計算出運(yùn)動到點(diǎn)【1,1,1】時,X軸和Y軸理論上補(bǔ)償?shù)拿}沖數(shù)分別是109999.9999個脈沖和45563.49186個脈沖,根據(jù)實際編碼器的反饋值發(fā)現(xiàn)X軸和Y軸實際補(bǔ)償?shù)拿}沖數(shù)分別是109999個脈沖和45563個脈沖,因為脈沖個數(shù)是整數(shù),所以二維螺距補(bǔ)償功能正常。
假設(shè)工況2:XY軸的螺距均有異常需要補(bǔ)償,但X軸和Y軸安裝是垂直的。
假設(shè)X軸的激光干涉儀數(shù)據(jù)如下:
'運(yùn)動到1mm處,激光干涉儀打出來實際是0.9mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.1*units
'運(yùn)動到2mm處,激光干涉儀打出來實際是1.8mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.2*units
'運(yùn)動到3mm處,激光干涉儀打出來實際是2.7mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.3*units
'Y軸絲桿工況和X軸絲桿工況類似
步驟一:
規(guī)劃起始補(bǔ)償點(diǎn),補(bǔ)償間距,補(bǔ)償?shù)男袛?shù)和列數(shù)。
'初始化二維螺距補(bǔ)償?shù)南嚓P(guān)參數(shù)
TableId = 1000 '補(bǔ)償數(shù)據(jù)的Table起始點(diǎn)
StartMposX = 0 'X軸開始補(bǔ)償?shù)奈恢?StartMposY = 0 'Y軸開始補(bǔ)償?shù)奈恢?DisX = 0.5 'X軸方向補(bǔ)償?shù)拈g距
DisY = 0.5 'Y軸方向補(bǔ)償?shù)拈g距
ColNumX = 50 'X軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)
RowlNumY = 50 'Y軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)
步驟二:
根據(jù)該工況的測試環(huán)境,計算各個補(bǔ)償點(diǎn)的X方向和Y方向的改補(bǔ)償?shù)拿}沖數(shù),并更新到TABLE。
'假設(shè)X軸的激光干涉儀數(shù)據(jù)如下:
'運(yùn)動到1mm處,激光干涉儀實際是0.9mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.1*units
'運(yùn)動到2mm處,激光干涉儀實際是1.8mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.2*units
'運(yùn)動到3mm處,激光干涉儀實際是2.7mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.3*units
'Y軸絲桿工況和X軸絲桿工況類似
'更新該工況下二維補(bǔ)償表的TABLE數(shù)據(jù)
FOR i=0 to RowlNumY-1
'先按行填寫該行的每一列的數(shù)據(jù)
FOR j=0 to ColNumX-1
'【實際測試發(fā)現(xiàn)運(yùn)動到1mm處補(bǔ)償?shù)拿}沖數(shù)不是0.1*units,是因為算法發(fā)現(xiàn)發(fā)0.1*units實際跑到不是0.1mm,發(fā)0.1111*units才跑0.1mm】
Table(TableId+2*(i*ColNumX+j)) = DisX*(j+1)*0.1*UNITS(AxisX)
Table(TableId+2*(i*ColNumX+j)+1) = DisY*(i+1)*0.1*UNITS(AxisY)
NEXT
NEXT
步驟三:
調(diào)用二維螺距補(bǔ)償指令啟用二維螺距補(bǔ)償功能。
'開始2D螺距補(bǔ)償
WAIT IDLE
PITCH2SET(1,StartMposX ,StartMposY,,DisX,DisY,ColNumX,RowlNumY,TableId)
步驟四:
發(fā)送運(yùn)動指令,根據(jù)實際的編碼器反饋來驗證控制器實際上發(fā)的脈沖數(shù)是否正確。
'開始運(yùn)動
MoveTest(1,1,RunMode)
MoveTest(2,1,RunMode)
MoveTest(2,2,RunMode)
步驟五:
驗證效果。 (PS:x軸和Y軸的脈沖當(dāng)量均設(shè)置的是100000)
根據(jù)以上數(shù)據(jù)啟用二維螺距補(bǔ)償功能后,我們可以計算出運(yùn)動到點(diǎn)【1,1】時,X軸和Y軸理論上補(bǔ)償?shù)拿}沖數(shù)分別是11111.11108個脈沖和11111.11108個脈沖,根據(jù)實際編碼器的反饋值發(fā)現(xiàn)X軸和Y軸實際補(bǔ)償?shù)拿}沖數(shù)分別是11110個脈沖和11110個脈沖,這里理論補(bǔ)償值和實際補(bǔ)償值誤差在1個脈沖我們認(rèn)為二維螺距補(bǔ)償功能是正常的。
假設(shè)工況3:X軸和Y軸的絲桿螺距均有異常需要補(bǔ)償,且X軸和Y軸的安裝夾角是135度。
假設(shè)X軸的激光干涉儀數(shù)據(jù)如下:
'運(yùn)動到1mm處,激光干涉儀 打出來 實際是0.9mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.1*units
'運(yùn)動到2mm處,激光干涉儀 打出來 實際是1.8mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.2*units
'運(yùn)動到3mm處,激光干涉儀 打出來 實際是2.7mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.3*units
'Y軸 絲桿 工況和X軸 絲桿工況 類似
步驟一:
規(guī)劃起始補(bǔ)償點(diǎn),補(bǔ)償間距,補(bǔ)償?shù)男袛?shù)和列數(shù)。
'初始化二維螺距補(bǔ)償?shù)南嚓P(guān)參數(shù)
TableId = 1000 '補(bǔ)償數(shù)據(jù)的Table起始點(diǎn)
StartMposX = 0 'X軸開始補(bǔ)償?shù)奈恢?StartMposY = 0 'Y軸開始補(bǔ)償?shù)奈恢?DisX = 0.5 'X軸方向補(bǔ)償?shù)拈g距
DisY = 0.5 'Y軸方向補(bǔ)償?shù)拈g距
ColNumX = 50 'X軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)
RowlNumY = 50 'Y軸方向補(bǔ)償?shù)狞c(diǎn)數(shù)
步驟二:
根據(jù)該工況的測試環(huán)境,計算各個補(bǔ)償點(diǎn)的X方向和Y方向的改補(bǔ)償?shù)拿}沖數(shù),并更新到TABLE。
'假設(shè)X軸的激光干涉儀數(shù)據(jù)如下:
'運(yùn)動到1mm處,激光干涉儀實際是0.9mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.1*units
'運(yùn)動到2mm處,激光干涉儀實際是1.8mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.2*units'運(yùn)動到3mm處,激光干涉儀實際是2.7mm處,所以需要補(bǔ)償?shù)拿}沖 = 0.3*units
'Y軸工況和X軸工況類似
'更新該工況下二維補(bǔ)償表的TABLE數(shù)據(jù)
FOR i=0 to RowlNumY-1
'先按行填寫該行的每一列的數(shù)據(jù)
FOR j=0 to ColNumX-1
'【工況三:XY軸螺距異常,XY的夾角是135度】
'X軸螺距有問題,實際是10000個脈沖跑0.5mm
'Y軸螺距也有問題,實際是10000個脈沖跑0.9mm
IF i=0 and j=0 THEN
Angle=135'XY軸的安裝夾角
ENDIF
LOCAL ActPosX,ActPosY '實際位置
'X軸補(bǔ)償數(shù)據(jù)
ActPosX = 0.5*(j+1)+ (i+1)*0.9*(COS(Angle*PI/180))
Table(TableId+2*(i*ColNumX+j)) = DisX*((1+j)-ActPosX)*UNITS(AxisX)
'Y軸補(bǔ)償數(shù)據(jù)
ActPosY = 0.9*(SIN(Angle*PI/180))
Table(TableId+2*(i*ColNumX+j)+1) = DisY*(1+i)*(1- ActPosY)*UNITS(AxisY)
NEXT
NEXT
步驟三:
調(diào)用二維螺距補(bǔ)償指令啟用二維螺距補(bǔ)償功能。
'開始2D螺距補(bǔ)償
WAIT IDLE
PITCH2SET(1,StartMposX ,StartMposY,DisX,DisY,ColNumX,RowlNumY,TableId)
步驟四:
發(fā)送運(yùn)動指令,根據(jù)實際的編碼器反饋來驗證控制器實際上發(fā)的脈沖數(shù)是否正確。
'開始運(yùn)動
MoveTest(1,1,RunMode)
MoveTest(2,1,RunMode)
MoveTest(2,2,RunMode)
步驟五:
驗證效果。 (PS:x軸和Y軸的脈沖當(dāng)量均設(shè)置的是100000)
根據(jù)以上數(shù)據(jù)啟用二維螺距補(bǔ)償功能后,運(yùn)動到點(diǎn)【1,1】時,根據(jù)實際發(fā)的脈沖數(shù)推算出實際運(yùn)動的位置是【0.99999,0.99999】和【1,1】的脈沖誤差也是在一個脈沖以內(nèi),所以二維螺距補(bǔ)償功能正常。
MoveTest函數(shù)的實現(xiàn):
GLOBAL SUB MoveTest(Pos1,Pos2,RunMode)
MOVEABS(Pos1,Pos2)
DELAY(1500)
?"運(yùn)動前編碼器數(shù)據(jù)",TempVarX,TempVarY
?"運(yùn)動后坐標(biāo):【"+TOSTR(Pos1,4,1)+","+TOSTR(Pos2,4,1)+"】,當(dāng)前XY軸的ENCODER:",ENCODER(AxisX),ENCODER(AxisY)
?"X軸實際補(bǔ)償值",ENCODER(AxisX)-TempVarX-DPOS(AxisX)*UNITS(AxisX)
?"Y軸實際補(bǔ)償值",ENCODER(AxisY)-TempVarY-DPOS(AxisY)*UNITS(AxisY)
IF RunMode=0 THEN '工況1
?"X軸理論補(bǔ)償值",-POS2*(COS(Angle*pi/180)/SIN(Angle*pi/180))*UNITS(AxisX),'"和實際有差值,可能是脈沖當(dāng)量的問題"
?"Y軸理論補(bǔ)償值",POS2*(1/(SIN(Angle*pi/180)) -1)*UNITS(AxisY),'"和實際有差值,可能是脈沖當(dāng)量的問題"
ELSEIF RunMode=1 THEN '工況2
?"X軸理論補(bǔ)償值",POS1*0.1/0.9*UNITS(AxisX),'"和實際有差值,可能是脈沖當(dāng)量的問題"
?"Y軸理論補(bǔ)償值",POS2*0.1/0.9*UNITS(AxisY),'"和實際有差值,可能是脈沖當(dāng)量的問題"
ELSEIF RunMode=2 THEN '工況3
?"X軸理論停止位:",((ENCODER(AxisX)-TempVarX)*0.5 +(ENCODER(AxisY)-TempVarY)*0.9*COS(Angle*pi/180))/UNITS(AxisX)
?"Y軸理論停止位:",((ENCODER(AxisY)-TempVarY)*0.9*SIN(Angle*pi/180))/UNITS(AxisX)
ENDIF
ENDSUB
08
二維螺距補(bǔ)償功能現(xiàn)場實戰(zhàn)
客戶有一個激光切割機(jī)的機(jī)臺需要使用二維螺距補(bǔ)償指令來解決機(jī)臺在不同位置受力不同機(jī)臺形變不同導(dǎo)致的精度丟失問題。
步驟一:
以軸的MPOS坐標(biāo)【0,0】作為二維補(bǔ)償?shù)拈_始補(bǔ)償?shù)奈恢谩?/strong>
步驟二:
以軸的MPOS坐標(biāo)【40,40】作為第一個圓的圓心,然后以陣列的方式通過激光在板子是畫出4行4列的16個圓,陣列X軸方向間距為40mm,Y軸方向間距為40mm。
步驟三:
通過視覺找出這16個圓的圓心,并把坐標(biāo)填入到TABLE寄存器待處理。
startposx=0 '開始補(bǔ)償點(diǎn)X坐標(biāo)
startposy=0 '開始補(bǔ)償點(diǎn)Y坐標(biāo)
disonex=40 'X軸的補(bǔ)償點(diǎn)間距
disoney=40 'Y軸的補(bǔ)償點(diǎn)間距
maxpointx=4 'X軸方向補(bǔ)償點(diǎn)列數(shù)
maxpointy=4 'Y軸方向補(bǔ)償點(diǎn)行數(shù)
tableindex=1000 '存儲補(bǔ)償點(diǎn)數(shù)據(jù)的TABLE起始地址
步驟四:
通過視覺找出這16個圓的圓心,并把坐標(biāo)填入到TABLE寄存器待處理。
步驟五:
計算各個補(bǔ)償點(diǎn)的X和Y方向的脈沖補(bǔ)償值=(理論位置-實際位置)*Units。
DIM i,j '
更新二維螺距補(bǔ)償表
For i=0 to maxpointy-1
For j=0 to maxpointx-1
TABLE(tableindex+2*(j+i*maxpointx)) = UNITS(0)*((40+40*j) - TABLE(tableindex+2*(j+i*maxpointx)))
TABLE(tableindex+2*(j+i*maxpointx)+1) = UNITS(1)*((40+40*i) - TABLE(tableindex+2*(j+i*maxpointx)+1))
NEXT
NEXT
步驟六:
調(diào)用二維螺距補(bǔ)償指令啟用二維螺距補(bǔ)償功能。
'啟用二維螺距補(bǔ)償
PITCH2SET(enable,startposx,startposy,disonex,disoney,maxpointx,maxpointy,tableindex)
步驟七:
發(fā)送運(yùn)動指令,讀取編碼器的原始值驗證二維螺距補(bǔ)償是否正常。
'開始運(yùn)動檢測是否補(bǔ)償成功
MOVEABS(40,40)
WAIT IDLE
DELAY(500)
?"當(dāng)前坐標(biāo):",MPOS(0),MPOS(1)
?"編碼器原始值:",MPOS_ORI(0),MPOS_ORI(1)
?"補(bǔ)償值:",PITCH2_DIST(0),PITCH2_DIST(1)
MOVEABS(80,80)
WAIT IDLE
DELAY(1000)
?"當(dāng)前坐標(biāo):",MPOS(0),MPOS(1)
?"編碼器原始值:",MPOS_ORI(0),MPOS_ORI(1)
?"補(bǔ)償值:",PITCH2_DIST(0),PITCH2_DIST(1)
MOVEABS(120,120)
WAIT IDLE
DELAY(1000)
?"當(dāng)前坐標(biāo):",MPOS(0),MPOS(1)
?"編碼器原始值:",MPOS_ORI(0),MPOS_ORI(1)
?"補(bǔ)償值:",PITCH2_DIST(0),PITCH2_DIST(1)
步驟八:
測試的實際效果。
完整代碼獲取地址
▼
本次,正運(yùn)動技術(shù)步進(jìn)控制的光柵尺全閉環(huán)EtherCAT運(yùn)動控制器ZMC432CL-V2快速入門:二維螺距補(bǔ)償(上),就分享到這里。
更多精彩內(nèi)容請關(guān)注“正運(yùn)動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師:400-089-8936。
正運(yùn)動技術(shù)專注于運(yùn)動控制技術(shù)研究和通用運(yùn)動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運(yùn)動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動控制核心技術(shù)和實時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動控制卡_運(yùn)動控制器_EtherCAT運(yùn)動控制卡_EtherCAT控制器_運(yùn)動控制系統(tǒng)_視覺控制器__運(yùn)動控制PLC_運(yùn)動控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動控制卡等等。