用PLC怎么畫圓?相信很多朋友都思考過這個問題,PLC200 smart并沒有開發這個功能,需要自己寫程序實現,本文和喜歡工控和開發的朋友們交流一下這個有趣的問題,筆者在調試成功的基礎上附上視頻和程序介紹一種畫圓的方法,此方法通用性強,可以根據這個原理方法繪制其它不同的曲線。
以上圖的拋物線y=x^2為例分析,我們知道一個方向上走勻速,一個方向上以恒定的加速度運動,軌跡就是拋物線。同樣我們可以想到,X軸勻速運動,Y軸變速運動,運動軌跡就會走出曲線。勻速運動時用路程除以時間就可以得到速度,而變速度就需要從微分的角度來計算,即:
我們假定X軸方向上走2mm/s的勻速,即:
有了前面的分析,我們可以試試分析這個以50mm為半徑的圓形:
可以看到(-50,50)區間內每一個X對應兩個Y值,兩個Y值一正一負且絕對值相等,對應位置的導數值也是一正一負且絕對值相等,那么當X軸方向上以2mm/s的速度向右運動,要得到這個圓弧的軌跡,在任意一個X位置對應的Y的速度是:
這里都取了X方向的速度為2mm/s,是一個比較慢的速度,再根據Vy的公式(編寫入中斷程序進行運算),可以編寫程序繪制圓形了,只需要注意在在繪制途中X方向和Y方向改變的位置要做一些處理,下面用程序與注釋來說明整段程序的過程。(下圖是程序建立坐標原點即參考點后實際走出來的軌跡)
首先畫圓形需要的是一個兩軸控制臺(包括步進電機和畫圖的平臺等),兩個驅動器,一臺200PLC,筆者視頻里用的是一個三軸的平臺,驅動器細分調至3200,寫程序之前使用運動向導,設置兩個軸,測量系統選擇工程單位,方便我們計算,也更直觀,細分3200,我的步進電機每轉一圈前進5mm,如下圖所示:
方向控制選項如下圖,X軸選擇單相2輸出,因為畫圓過程中X方向上有正有負;Y軸選擇單相1輸出,因為Y軸運動靠的是點動RUN控制,筆者在調試過程中發現使用單相2輸出時,使用點動的Director或者Q0.7來控制方向會有時候不受控制,這是因為手動子程序里包含了方向控制導致程序沖突,所以這里Y軸使用單相1輸出,調試結果很穩定。其余對電機速度,JOG選項進行一些常規設置即可。(筆者嘗試了為實現Y軸變速運動,使用組態中的相對運動和絕對運動子程序,為其提供變速度且實時改變終點位置,結果是Y軸沒有動作,因此用相對和絕對不能控制一個速度和位置的數值實時變化的運動,因此最后選擇了點動來實現這個變速的功能)
然后開始寫主程序:
這是筆者原創的程序,200smart并沒有開發相應的功能,三菱plc有圓弧插補功能,筆者沒有接觸過三菱plc,通過查閱PLC圓弧插補的資料和原理,對兩種方法進行了對比:圓弧插補功能的原理是將圓分解成N段折線來畫,其誤差在某范圍內可控,而以上介紹的方法從純數學的角度來講是相當完美的,但是也有缺點,它的完美程度取決于中斷運算的時間和X方向上的速度,如果運算時間設計較長,Y軸加速情況下會丟步較多,減速情況下會過沖較多,運算時間短對CPU要求較高,X方向速度過快會導致丟步較多,另外由于是浮點數運算,每一步本身就存在極少量丟步。
盡管有這么多理論上的缺陷,但是由于10ms運算間隙時間極短且X軸方向上走的較慢,實際走的圓非常的光滑接近完美的圓。
大家看完此文應該可以完成很多曲線的編程畫自己想畫的圖形了,但是根據函數的復雜性和求導的難度使得編程有難易程度的區別,可以挑戰一下試試畫一個愛心,如下圖。該程序我會在下一篇文章寫給大家供參考。
-
plc
+關注
關注
5013文章
13323瀏覽量
464026
原文標題:PLC畫圓很難嘛?其實,只要有方法,這都是浮云!
文章出處:【微信號:GKB1508,微信公眾號:工控幫】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論