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