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

伺服軸的屏蔽方法

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

基于HPM6750的三軸伺服運(yùn)動(dòng)控制方案
LTspice:將多個(gè)模型實(shí)例組合成一個(gè)符號

評論