來源:博途之友;作者:張浩杰
階段“優(yōu)秀工程師之路
編者說:一次博途之友的群交流時,我問大家:軸控應(yīng)用庫,大家用的多嗎?工程師作者說:最近剛剛使用上,很方便。使用官方的庫,二次封裝成多重背景數(shù)據(jù)塊,一個循環(huán)完成所有軸的實例化調(diào)用。
馬上請他分享一下應(yīng)用經(jīng)驗。
在最近的項目中,我遇到了多軸協(xié)同控制的需求。由于現(xiàn)場工藝要求,單機設(shè)備可能需要根據(jù)實際情況動態(tài)增減軸數(shù)量。如果采用逐個調(diào)用獨立指令的方式,不僅后期調(diào)試會變得異常繁瑣,而且若不符合PLCopen規(guī)范,還容易導(dǎo)致軸控異常報警,故障排查將十分困難——這種方案顯然不具備可行性。
雖然考慮過自行封裝軸控功能塊,但考慮到需要投入大量時間進行驗證測試,短期內(nèi)難以保證穩(wěn)定性,這個想法只能暫時擱置。
經(jīng)過一番調(diào)研,我欣喜地發(fā)現(xiàn)了官方提供的標(biāo)準(zhǔn)化軸控庫解決方案。官方庫文件幾乎涵蓋了軸控的所有常見應(yīng)用場景,主要提供兩種類型的控制庫:LAxisCtrl_PosAxis和LAxisCtrl_DBAnyBased。通過查閱技術(shù)手冊發(fā)現(xiàn),這兩種庫在接口類型和資源占用方面存在明顯差異,后者對系統(tǒng)資源的消耗更大。有了官方認(rèn)證的標(biāo)準(zhǔn)化軸控庫,不僅完全符合PLCopen規(guī)范,還免去了自行開發(fā)的諸多風(fēng)險,這讓我對軸控封裝成標(biāo)準(zhǔn)化充滿信心!
按照常規(guī)思路,本打算創(chuàng)建一個FB功能塊,直接調(diào)用官方庫中的"LAxisCtrl_PosAxis"模塊。要么將其定義為數(shù)組類型,要么自定義包含軸控接口的數(shù)據(jù)結(jié)構(gòu)再進行數(shù)組化(就像處理氣缸實例化那樣簡單直接)。標(biāo)準(zhǔn)化和模塊化是提升開發(fā)效率和維護便利性的關(guān)鍵。以氣缸控制為例,引入"最大氣缸數(shù)"這一全局常量,實現(xiàn)了氣缸實例化的標(biāo)準(zhǔn)化管理。當(dāng)設(shè)備配置變更需要調(diào)整氣缸數(shù)量時,僅需修改該常量值即可自動適配所有相關(guān)控制邏輯,這種設(shè)計理念極大地簡化了系統(tǒng)配置和維護工作。
所有氣缸實例化
主程序調(diào)用
然而,實際情況比預(yù)期要復(fù)雜許多,經(jīng)過多次試驗驗證,系統(tǒng)在輸入接口管腳處存在以下關(guān)鍵限制:
1、不支持對TO_PositioningAxis類型的數(shù)組引用,僅允許單個TO_PositioningAxis數(shù)據(jù)類型;
2、靜態(tài)參數(shù)引用功能缺失;
3、無法直接對官方提供的控制庫進行數(shù)組化引用。
如果不能循環(huán)引用的話,達不到我的標(biāo)準(zhǔn)化需求,那么做這個塊的意義就不大了。于是我又測試一個LAxisCtrl_DBAnyBased的庫,結(jié)果還是一樣不支持。但發(fā)現(xiàn)了一種新的數(shù)據(jù)類型DB_ANY,一查原來是萬能的數(shù)據(jù)類型。那么能不能指向TO_PositioningAxis呢?答案是可以的,但是不能直接使用,需要轉(zhuǎn)換一下。
經(jīng)過測驗發(fā)現(xiàn)"LAxisCtrl_PosAxis"庫只能創(chuàng)建為靜態(tài)參數(shù),那么新思路:先封裝一個單軸帶參數(shù)引腳的FB塊>>再創(chuàng)建一個FB軸實例塊對其單軸FB塊循環(huán)調(diào)用>>最后主程序調(diào)用FB軸實例塊。
基礎(chǔ)層:封裝單軸控制FB塊,集成所有運動控制、狀態(tài)監(jiān)控和參數(shù)配置功能
管理層:開發(fā)軸管理FB塊,通過循環(huán)調(diào)用機制管理多個單軸實例,提供統(tǒng)一接口
應(yīng)用層:主程序只需調(diào)用管理塊,通過修改’gi_AxisMAXNo’常量即可調(diào)整軸數(shù)
一、基礎(chǔ)層:單軸FB塊的封裝
二、管理層:FB軸實例化
三、應(yīng)用層:
1、Main調(diào)用
2、軸限位
值得注意的是,若是想開放軟限位值,只能通過Axis DB塊下PositionLimits_SW結(jié)構(gòu)體實現(xiàn)。
-
模塊
+關(guān)注
關(guān)注
7文章
2787瀏覽量
50180 -
運動控制
+關(guān)注
關(guān)注
4文章
653瀏覽量
33507 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
26500
原文標(biāo)題:一個FOR循環(huán)完成多個伺服軸的實例化方法
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【FPGA設(shè)計實例】用FPGA實現(xiàn)R/C伺服控制
通過拖曳的方法改變一個已經(jīng)初始化X軸位置的游標(biāo)的位置
多軸伺服控制同步精密運動
LabVIEW一個程序中放置多個多個While循環(huán),其中的一個循環(huán)執(zhí)行緩慢
如何使用動態(tài)事件停止多個while循環(huán)
使用ODDR轉(zhuǎn)發(fā)多個時鐘是否必須實例化幾個ODDR?
請問如何在Vivado項目中實例化hdl系統(tǒng)生成器輸出的多個實例》
FANUC伺服軸的屏蔽

伺服軸的屏蔽方法

一種自動生成循環(huán)摘要的方法
如何使用一個PLC控制兩個或多個伺服電機同步運行

基于HPM6750的三軸伺服運動控制方案
LTspice:將多個模型實例組合成一個符號

評論