倍福TwinCAT(貝福Beckhoff)應用教程13.1 TwinCAT控制松下伺服 NC高級


本節主要演示了使用自定義函數實現電機的運動(梯形曲線和S曲線都有實現),這里的JOG+和JOG-,針對單個關節實現了PTP的運動(跟貝福的MoveAbsolute功能塊實現效果一致),在此沒有介紹運動控制算法的具體原理,不理解的可以網上搜索梯形曲線和S曲線的文章,並不只是非標自動化需要用到控制電機的PTP運動,比如升降機,電梯,或者凡是需要勻滑啟停的電機控制,都逃不過要用到這方面的知識,讀者也可以自己測試5次或者7次等其他自定義加速曲線,每一種運動給出的位置,速度,加速度都會有不同的效果。

 

上一節我們提到了使用簡單的Y=X+V*t的方式控制軸JOG正反轉,並且位置曲線是折線(因為速度從0直接下一個周期就是目標速度,速度沒有一個平滑過渡,導致位置也是不平滑的)。這里我們除了可以監控位置,還可以監控速度和加速度。可以發現給出的位置,速度都比較光滑,沒有銳利的過渡(加速度是三角形,如果設置為不同的A,V,J參數,也可能是梯形,但是不管怎樣,這樣的運動效果是比較穩定可靠的)

 

為了讓函數更加簡單和通用,JOG運動可以認為是多軸聯動的一種特殊情況。比如AB兩軸,A_1和B_1是他們的起始位置,A_2和B_2是他們的結束位置,如果A_2=A_1+99999(一個很大的值),B_2=B_1,那就成了針對A軸的正向JOG運動,而如果A_2不等於A_1,B_2也不等於B_1,那么就是最一般的多軸的聯動(可以參考機器人學導論,整個流程大致是計算最大關節差值,根據給定的速度,加速度,加加速度對每個軸均一化,然后在每個周期都給出針對每個軸的方程位置),因此在本程序的最后也給出了兩點PTP運動的實現(標記A點,走到A點,標記B點,走到B點以及AB兩點的循環運動),當然也可以人為的填寫一個要走的目標位置,然后走(MOVEJHMI)。

 

JOG按鈕按下的時候切換到一個狀態,松開的時候再切換到另一個狀態。由於沒有使用貝福的運動功能塊,停止的時候也不再使用貝福的Halt命令。而是采集當前的位置,速度,並以指定的加速度平滑的減速到0(讀者可以自己嘗試把減速度改大改小,看滑出去的距離,也可以取消這種平滑過渡,直接下個周期不給位置,看立即停下來的效果。尤其是當正在進行運動的時候,TWINCAT每個周期都會計算出來下一個周期的位置,速度,加速度,當切換狀態的時候,不給位置或者給的位置和當前位置差異太大,都會造成機器的震動,停止不平滑對機器是有損傷的,不斷測試狀態切換的時候給位置的效果可以加深對運動控制和TWINCAT實時性的理解)

 

比上一節有所改進,除了標記零點,還實現了位置和速度的軟限位(標記零點的數據文件是Bias.txt,限位的數據文件是Limit.txt,都在C盤根目錄下,這些文件打開是亂碼,但是實際上保存的確實是要保存的數據)。當位置或者速度超差的時候(一般軟限位會做在硬限位前面一點,如果碰到硬限位開關再停止,萬一速度太大撞過去也剎不住,還是會有損害)。需要注意的是,雖然我在控制的是直線模組,但是我還是可以認為每個軸指定的是角度(跟機器人一樣看,我要限制的位置比如是-30弧度到50弧度,那么就是對應幾百幾千度,也可能對應了幾百mm,只是一個限制值而已沒有必要太精確,但是這樣卻可以統一單位,我控制兩軸模組到某個目標點,也是發給他每個關節的弧度值,顯示在HMI上是角度值)

 

此外還有很多其他額外的小功能可以研究,例如使用一個按鈕對所有電機全部上下使能(上使能之后等一會就執行ExtFeed Enable),例如運動的暫停和繼續,急停和解除急停。總而言是,進行到這里整個代碼量已經比較大了,也比較容易構建成一個完整的兩軸運動的項目,如果要繼續擴充三軸或者更多軸,也是比較方便的。當然這里還沒有涉及到運動學和動力學算法,比如沒法控制機器畫直線畫圓,這些將在下一節繼續講,有了這部分的基礎后續的算法就會比較好做(至少我們無須擔心算法的錯誤導致電機飛車,因為有位置和速度的保護)

 

 

更多教學視頻和資料下載,歡迎關注以下信息:

我的優酷空間:

http://i.youku.com/acetaohai123

 

我的在線論壇:

http://csrobot.gz01.bdysite.com/

 

問題交流:

QQ:910358960

郵箱:acetaohai123@163.com

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM