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