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