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