本文(wen)來源(yuan)于:施家邦(bang) 工控(kong)邦(bang)
3.功能塊的接口變量如圖所示
創建的【overflow_compensate】功能塊的接口變量(liang),如圖5所示。
圖5 功能塊的(de)接口變(bian)量
4.LXM28S多圈位置溢出功能塊的ST程序編寫
雙擊(ji)打開【overflow_compensate】的(de)(de)FB功(gong)能塊(kuai)(kuai)編寫程序,功(gong)能塊(kuai)(kuai)的(de)(de)編程思路就是程序不僅記錄正常運行的(de)(de)每次溢(yi)出(chu)(chu),再利用一(yi)個掉電(dian)(dian)保存的(de)(de)persistent變量記錄位(wei)置(zhi)溢(yi)出(chu)(chu)的(de)(de)次數(shu),在上(shang)電(dian)(dian)時判斷(duan)(duan)斷(duan)(duan)電(dian)(dian)后(hou)電(dian)(dian)機(ji)是否發(fa)生移(yi)動(dong)并導致了新的(de)(de)溢(yi)出(chu)(chu),將兩者的(de)(de)變化量加到一(yi)起得到總的(de)(de)溢(yi)出(chu)(chu)次數(shu),并按總的(de)(de)溢(yi)出(chu)(chu)次數(shu)做對應補(bu)償,然(ran)后(hou)給伺(si)服軸加上(shang)使(shi)能后(hou),判斷(duan)(duan)軸處于停止位(wei)置(zhi)后(hou)再使(shi)用MC_Setpostion功(gong)能塊(kuai)(kuai)完成位(wei)置(zhi)補(bu)償。LXM28S多(duo)圈位(wei)置(zhi)溢(yi)出(chu)(chu)功(gong)能塊(kuai)(kuai)的(de)(de)ST程序和注釋如圖6所(suo)示(shi)。
圖6 LXM28S多圈位置溢出功能塊的ST程序和注釋
溢出(chu)圈數(shu)的(de)補(bu)償值(zhi)有一定(ding)的(de)周期性,讀者也(ye)可(ke)以把每圈的(de)補(bu)償計算出(chu)來,在軸配置參數(shu)和模數(shu)值(zhi)不(bu)變的(de)前提下(xia),使(shi)用Case語句來補(bu)償也(ye)是(shi)可(ke)以的(de)。
功能塊編寫完成后要進行編譯和(he)糾錯,然后在程序(xu)中調用即可。
5.功能塊的管腳定義
▼ 功能(neng)塊(kuai)的輸(shu)入管腳如表1所示。
表1 功能塊的(de)輸入管(guan)腳
管腳名稱 |
管腳變量 類型 |
說明 |
i_ifAxis |
DAL.IF_DeviceAccess |
28S的伺服(fu)軸(zhou) |
i_diDrivePosition |
DINT |
28S反饋給M262的位置 |
i_iP5_82 |
INT |
多圈編碼器(qi)的圈數P5-82參數值 |
i_xP5_82_OK |
BOOL |
讀取(qu)圈數有效 |
i_diGearIn |
UDINT |
設置成(cheng)軸配置的GearIn參數 |
i_diGearOut |
UDINT |
設(she)置(zhi)成軸配置(zhi)的GearOut參數 |
i_lrPositionResolution |
LREAL |
設置成軸配(pei)置的PositionResolution參數 |
i_LrModulo |
LREAL |
設置成模數值 |
i_xDirection |
BOOL |
此處必須(xu)設成true,讀者必須(xu)確認工作方(fang)向是(shi)位置遞增方(fang)向 |
i_xPowerEnable |
BOOL |
伺服使能(neng)輸入信號,使能(neng)后自動完成位置補償 |
i_xHomeDoneFlag |
BOOL |
使用(yong)P8-44鍵盤回原點(dian),完成(cheng)后將此標志位為真 |
▼ 功能(neng)塊的(de)輸(shu)入(ru)輸(shu)出管腳,如(ru)表(biao)2所示。
表2 功(gong)能(neng)塊的(de)輸(shu)入輸(shu)出管(guan)腳(jiao)
管腳名稱 |
管腳變量 類型 |
說明 |
IO_diLastPostion_Persist |
DINT |
用于記憶斷(duan)電前的28S反(fan)饋位置,斷(duan)電保持變(bian)量 |
IO_iLastP5_82_Persist |
INT |
用于記(ji)憶斷電前的圈(quan)數,斷電保持變(bian)量 |
IO_diOverflowTurn_Persist |
INT |
用(yong)于(yu)記憶(yi)溢出次數,斷電保持變量 |
▼ 功(gong)能(neng)塊的輸出(chu)管腳,如表3所示。
表3 功能塊的輸出(chu)管(guan)腳(jiao)
管腳名稱 |
管腳變量 類型 |
說明 |
q_xSercosCommunicationState_OK: |
BOOL |
Sercos狀態為4時(shi)為真,否則為假 |
q_diPowerOff_EnocoderCounter: |
UDINT |
斷電(dian)時的編碼器圈數 |
q_diPowerUp_EnocoderCounter: |
UDINT |
上電時的編碼器圈數 |
q_xPowerEnabled: |
BOOL |
28伺服的使能參數 |
q_xRestored: |
BOOL |
位置補償完(wan)成標志(zhi)位 |
6.測試平臺軟件版本
1. LMCM262和28S的固件版本
在實驗(yan)室(shi)中(zhong)ESME軟(ruan)件采用的版本(ben)(ben)是2.01,28S的固件測試為(wei)版本(ben)(ben)2.78.3。
2. SoMove調試軟件和DTM版本
使用SoMove軟件(jian)2.8.4+V1.6.12版(ban)本的DTM文(wen)件(jian)進行了(le)【overflow_compensate】的FB功(gong)能塊的調試。
3. Lexiumstudio 調試軟件版本
使(shi)用(yong)(yong)lexium studio V1.15.0,主(zhu)要用(yong)(yong)于檢查(cha)伺服驅動器和(he)電機(ji)。
7.調試和參數設置
(1) TM262在線做初始值(zhi)復位或(huo)(huo)做Reset Persistent Variables時,需(xu)要對所(suo)有采用功能塊的軸重新尋原點,或(huo)(huo)者使(shi)用其它方式(shi)復位溢出圈數值(zhi)等變量(liang)。
(2) 28S的(de)(de)位(wei)(wei)置、速(su)度(du)、同步運動時(shi)(shi),注意速(su)度(du)給定(ding)值不要超過(guo)P1-55的(de)(de)最大速(su)度(du)值,筆者(zhe)對此進行了極限(xian)實驗(yan),設置速(su)度(du)給定(ding)值超過(guo)了P1-55的(de)(de)最大速(su)度(du)值,實驗(yan)結果是28S停機時(shi)(shi)會失控,斷開(kai)伺服使能(neng)(neng)才能(neng)(neng)停止(zhi)電機,同時(shi)(shi),功能(neng)(neng)塊存儲的(de)(de)位(wei)(wei)置也會失效。
(3) 在張江研(yan)發實驗室,我對不同固件(jian)版本(ben)也進行了相(xiang)對實驗,其中,固件(jian)版本(ben)2.78.3的28S,多圈編碼器設(she)置原點操作流程(cheng)與之(zhi)前的版本(ben)不同,需(xu)要將(jiang)參數P8-44設(she)3然后再設(she)2,而(er)之(zhi)前的版本(ben)僅需(xu)把P8-44設(she)2即可。
(4) 建議(yi)讀(du)者(zhe)在程序(xu)中采用非周期讀(du)取參(can)數(shu)功能(neng)塊來(lai)讀(du)取P5-82的(de)參(can)數(shu)值,此參(can)數(shu)雖(sui)然并不參(can)與控制,但可以直觀(guan)的(de)看出是(shi)否錯誤的(de)設置(zhi)了P5-79=1,因為(wei)這個參(can)數(shu)可以讓多圈(quan)電(dian)機按單圈(quan)電(dian)機進行工作(zuo),讀(du)者(zhe)在使用我創建的(de)這個【overflow_compensate】的(de)FB功能(neng)塊時是(shi)不能(neng)設置(zhi)P5-79=1的(de),否則會(hui)導致驅動(dong)器的(de)位置(zhi)不能(neng)保存(cun),應予以重視。
往期回顧