本文來源于:施家邦 工控邦
3.功能塊的接口變量如圖所示
創(chuàng)建的【overflow_compensate】功能塊的接口變量,如圖5所示。
圖5 功能塊的接口變量
4.LXM28S多圈位置溢出功能塊的ST程序編寫
雙擊打開【overflow_compensate】的FB功能塊編寫程序,功能塊的編程思路就是程序不僅記錄正常運(yùn)行的每次溢出,再利用一個(gè)掉電保存的persistent變量記錄位置溢出的次數(shù),在上電時(shí)判斷斷電后電機(jī)是否發(fā)生移動(dòng)并導(dǎo)致了新的溢出,將兩者的變化量加到一起得到總的溢出次數(shù),并按總的溢出次數(shù)做對(duì)應(yīng)補(bǔ)償,然后給伺服軸加上使能后,判斷軸處于停止位置后再使用MC_Setpostion功能塊完成位置補(bǔ)償。LXM28S多圈位置溢出功能塊的ST程序和注釋如圖6所示。
圖6 LXM28S多圈位置溢出功能塊的ST程序和注釋
溢出圈數(shù)的補(bǔ)償值有一定的周期性,讀者也可以把每圈的補(bǔ)償計(jì)算出來,在軸配置參數(shù)和模數(shù)值不變的前提下,使用Case語句來補(bǔ)償也是可以的。
功能塊編寫完成后要進(jìn)行編譯和糾錯(cuò),然后在程序中調(diào)用即可。
5.功能塊的管腳定義
▼ 功能塊的輸入管腳如表1所示。
表1 功能塊的輸入管腳
管腳名稱 |
管腳變量 類型 |
說明 |
i_ifAxis |
DAL.IF_DeviceAccess |
28S的伺服軸 |
i_diDrivePosition |
DINT |
28S反饋給M262的位置 |
i_iP5_82 |
INT |
多圈編碼器的圈數(shù)P5-82參數(shù)值 |
i_xP5_82_OK |
BOOL |
讀取圈數(shù)有效 |
i_diGearIn |
UDINT |
設(shè)置成軸配置的GearIn參數(shù) |
i_diGearOut |
UDINT |
設(shè)置成軸配置的GearOut參數(shù) |
i_lrPositionResolution |
LREAL |
設(shè)置成軸配置的PositionResolution參數(shù) |
i_LrModulo |
LREAL |
設(shè)置成模數(shù)值 |
i_xDirection |
BOOL |
此處必須設(shè)成true,讀者必須確認(rèn)工作方向是位置遞增方向 |
i_xPowerEnable |
BOOL |
伺服使能輸入信號(hào),使能后自動(dòng)完成位置補(bǔ)償 |
i_xHomeDoneFlag |
BOOL |
使用P8-44鍵盤回原點(diǎn),完成后將此標(biāo)志位為真 |
▼ 功能塊的輸入輸出管腳,如表2所示。
表2 功能塊的輸入輸出管腳
管腳名稱 |
管腳變量 類型 |
說明 |
IO_diLastPostion_Persist |
DINT |
用于記憶斷電前的28S反饋位置,斷電保持變量 |
IO_iLastP5_82_Persist |
INT |
用于記憶斷電前的圈數(shù),斷電保持變量 |
IO_diOverflowTurn_Persist |
INT |
用于記憶溢出次數(shù),斷電保持變量 |
▼ 功能塊的輸出管腳,如表3所示。
表3 功能塊的輸出管腳
管腳名稱 |
管腳變量 類型 |
說明 |
q_xSercosCommunicationState_OK: |
BOOL |
Sercos狀態(tài)為4時(shí)為真,否則為假 |
q_diPowerOff_EnocoderCounter: |
UDINT |
斷電時(shí)的編碼器圈數(shù) |
q_diPowerUp_EnocoderCounter: |
UDINT |
上電時(shí)的編碼器圈數(shù) |
q_xPowerEnabled: |
BOOL |
28伺服的使能參數(shù) |
q_xRestored: |
BOOL |
位置補(bǔ)償完成標(biāo)志位 |
6.測試平臺(tái)軟件版本
1. LMCM262和28S的固件版本
在實(shí)驗(yàn)室中ESME軟件采用的版本是2.01,28S的固件測試為版本2.78.3。
2. SoMove調(diào)試軟件和DTM版本
使用SoMove軟件2.8.4+V1.6.12版本的DTM文件進(jìn)行了【overflow_compensate】的FB功能塊的調(diào)試。
3. Lexiumstudio 調(diào)試軟件版本
使用lexium studio V1.15.0,主要用于檢查伺服驅(qū)動(dòng)器和電機(jī)。
7.調(diào)試和參數(shù)設(shè)置
(1) TM262在線做初始值復(fù)位或做Reset Persistent Variables時(shí),需要對(duì)所有采用功能塊的軸重新尋原點(diǎn),或者使用其它方式復(fù)位溢出圈數(shù)值等變量。
(2) 28S的位置、速度、同步運(yùn)動(dòng)時(shí),注意速度給定值不要超過P1-55的最大速度值,筆者對(duì)此進(jìn)行了極限實(shí)驗(yàn),設(shè)置速度給定值超過了P1-55的最大速度值,實(shí)驗(yàn)結(jié)果是28S停機(jī)時(shí)會(huì)失控,斷開伺服使能才能停止電機(jī),同時(shí),功能塊存儲(chǔ)的位置也會(huì)失效。
(3) 在張江研發(fā)實(shí)驗(yàn)室,我對(duì)不同固件版本也進(jìn)行了相對(duì)實(shí)驗(yàn),其中,固件版本2.78.3的28S,多圈編碼器設(shè)置原點(diǎn)操作流程與之前的版本不同,需要將參數(shù)P8-44設(shè)3然后再設(shè)2,而之前的版本僅需把P8-44設(shè)2即可。
(4) 建議讀者在程序中采用非周期讀取參數(shù)功能塊來讀取P5-82的參數(shù)值,此參數(shù)雖然并不參與控制,但可以直觀的看出是否錯(cuò)誤的設(shè)置了P5-79=1,因?yàn)檫@個(gè)參數(shù)可以讓多圈電機(jī)按單圈電機(jī)進(jìn)行工作,讀者在使用我創(chuàng)建的這個(gè)【overflow_compensate】的FB功能塊時(shí)是不能設(shè)置P5-79=1的,否則會(huì)導(dǎo)致驅(qū)動(dòng)器的位置不能保存,應(yīng)予以重視。
往期回顧