本文來源(yuán)於:施家邦 工(gōng)控邦
07.LMC078伺服(fú)控製係統中(zhōng)的LXM28S多圈位置溢出功能塊
LMC078控製係統與(yǔ)M262PLC係統中的LXM28S多圈位置溢出(chū)功能塊的編程(chéng)思(sī)路有所不(bú)同,采用了兩個(gè)功能塊來實現多圈(quān)編碼器在溢出後進(jìn)行位置補償,第一個是codesys提供的功能塊SMC3_PersistPositionSingleturn,第二個是編製了一個新的功能塊(kuài)FB_OverFlowPositionRetore,這個功能塊用於位(wèi)置恢複前的雙(shuāng)重驗證。
(1)LMC078伺服控製係統中的工作過程
SERCOS通信工作正常後,LMC078將LXM28S伺服編(biān)碼器(qì)位(wèi)置值翻(fān)譯成以浮點數形式的軸的位置值時會出現問題,它不像M262那樣(yàng)翻(fān)譯成一個固定的值,所(suǒ)以,筆者采用了另外的編程思路,新創建的功能塊FB_OverFlowPositionRetore先(xiān)記錄斷電前的伺服(fú)編碼器位置和(hé)LMC078中的軸位置,上電後記錄伺服(fú)LXM28S的伺服位置,得到伺服軸位置的變化量,同時檢查在機(jī)器斷電期間是否(fǒu)發生了新的(de)溢出(chū),將位置變化值和溢(yì)出根據機械參數計算出總的位置補償值,當LXM28S伺服使能後,伺服軸處於靜止的情況下,與SMC3_PersistPositionSingleturn功能塊比較,偏差(chà)值小於一個(gè)很小(xiǎo)的門檻值後,SMC3_PersistPositionSingleturn功能塊的位置補(bǔ)償(cháng)值才被認為是正確的,如果大(dà)於這個門檻值,則輸出報警,這樣(yàng)就保證了上電後LMC078中LXM28的軸位置值與機(jī)械位置保持正確的對應關係。
(2)SMC3_PersistPositionSingleturn功能塊說明
Codesys中對SMC3_PersistPositionSingleturn功能(néng)塊的說明,如圖7所示。
SMC3_PersistPositionSingleturn功能塊的位置補償是在LXM28通信正常後,伺(sì)服軸無使能條件(jiàn)下自動進行補償的,如果補償時電機(jī)軸發(fā)生了移動,會導致位置補償精度降低,甚至(zhì)出現位置錯誤的情況。
圖7 SMC3_PersistPositionSingleturn功能塊(kuài)的說明
(3)SMC3_PersistPositionSingleturn添加過程
在SoMachine軟件中 創建(jiàn)一個POU,在【輸入助(zhù)手】中輸(shū)入SMC3_PersistPositionSingleturn,如圖8所示。
圖(tú)8 創建SMC3_PersistPositionSingleturn功能(néng)塊
Axis管(guǎn)腳輸入(rù)要保(bǎo)持位置的軸名稱,PersistentData管腳輸入在PersistentVars創建的用於(yú)保持軸位置的變量名,bEnable管(guǎn)腳設為true,usiNumberOfAbsoluteBits管腳輸入32,完成後程序如圖(tú)9所示。
圖9 SMC3_PersistPositionSingleturn功能塊
在PersistentVars創建的用於保持軸(zhóu)位置變量名,如圖10所(suǒ)示。
圖10 在PersistentVars創建斷電保持變量
最(zuì)後在Motion task中(zhōng)調用persisPositionAxis的POU,完成編程。
(5)FB_OverFlowPositionRetore的管腳
LMC078伺服控製器中(zhōng),溢出(chū)位置補償功(gōng)能塊FB_OverFlowPositionRetore的管腳定義,如圖(tú)11所示。
圖11 管腳(jiǎo)定義
(6)FB_OverFlowPositionRetore補償量的(de)計算和編程
程序根據正轉和反轉兩種情況,同時考慮溢出,以電(diàn)機的旋轉方(fāng)向一直是正轉為例,沒有溢出(chū)時位置偏差等於當前位置反饋值減去斷電前的位(wèi)置。
如果正向溢出,則用2147483647減去斷電前位置值,再加上當前位置值減去-2147483648,再使用機械參數計算出位置偏差。
如果發生反向溢(yì)出,使用斷電前的位置值減去-2147483648,再加上2147483647減去當前使能(néng)的位置值,調整符號後,再(zài)使用(yòng)機械參數計(jì)算出(chū)位置(zhì)偏差。
當電機的旋轉方向(xiàng)一直是反轉(zhuǎn)時,計算位置偏差值的(de)方法與此類似,不再贅述,FB_OverFlowPositionRetore的程序和注釋(shì),如圖(tú)12所示。
圖12 FB_OverFlowPositionRetore的程序和注釋
使用功能塊補償後,軸位置值在發生溢出後是可以正常保持的,值得注意的是A3軸的模值是120,所以0.00113到119.896跳動是正常的。HMI顯示的上(shàng)電前的軸的位置值,如(rú)圖(tú)13所示。
圖13 上電前的軸的位置值
HMI顯示的上電後的軸(zhóu)的(de)位置值,如圖14所(suǒ)示。
圖14 加入功能塊後斷電前後即使溢出位置依然保持
08.總 結
本文從提出問題、分析(xī)原因、到解決思(sī)路、方(fāng)案論證、計算(suàn)公式、伺服驅動器的調試和參數設置等諸多方麵,詳細說明(míng)了創建客戶專屬的POU功能塊的設計方法、程(chéng)序編製(zhì)和管腳定義。掌握了這兩種LXM28S多圈電機位置溢出補償功能塊的原理之後,大家就可以參照此功能塊的編程(chéng)思路在不同的網絡或平台中進行調用和移(yí)植,例如LMC058的CANMotion和PacDrive3平台。
LXM28S多圈電機位置溢出補償功能塊,在張江研發實驗室經過一(yī)個多月的測試後,又(yòu)在多(duō)個客戶的現場進(jìn)行(háng)了實驗,其中,江蘇常州客戶現場就(jiù)運行了四個多月,證明了這個功能塊的開發是成功而且是十分有效的,讀者可(kě)以將這個FB功能塊程序中的軸配(pèi)置的模值、每圈脈衝數、減速比的分子和分母,通過ifscaling.Scaling的(de)成員變量來(lái)獲取,伺服軸的(de)圈數等信息也可以全部在功能塊內完成,這樣功能塊(kuài)的接口變量就會顯得簡潔。筆者保留(liú)了這些變量是為了方便(biàn)大家跨平台進(jìn)行程序的移植,在倍福+LXM28E的伺(sì)服控製係統中,使用此功能塊的編程思路在東南區的客戶現場進行編程和調試,高效而實用。
往期回顧