0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用PLC怎么畫圓?介紹一種畫圓的方法

1X4o_GKB1508 ? 來源:未知 ? 作者:李倩 ? 2018-09-20 17:25 ? 次閱讀

PLC怎么畫圓?相信很多朋友都思考過這個問題,PLC200 smart并沒有開發(fā)這個功能,需要自己寫程序?qū)崿F(xiàn),本文和喜歡工控和開發(fā)的朋友們交流一下這個有趣的問題,筆者在調(diào)試成功的基礎(chǔ)上附上視頻和程序介紹一種畫圓的方法,此方法通用性強,可以根據(jù)這個原理方法繪制其它不同的曲線。

以上圖的拋物線y=x^2為例分析,我們知道一個方向上走勻速,一個方向上以恒定的加速度運動,軌跡就是拋物線。同樣我們可以想到,X軸勻速運動,Y軸變速運動,運動軌跡就會走出曲線。勻速運動時用路程除以時間就可以得到速度,而變速度就需要從微分的角度來計算,即:

我們假定X軸方向上走2mm/s的勻速,即:

有了前面的分析,我們可以試試分析這個以50mm為半徑的圓形:

可以看到(-50,50)區(qū)間內(nèi)每一個X對應(yīng)兩個Y值,兩個Y值一正一負且絕對值相等,對應(yīng)位置的導數(shù)值也是一正一負且絕對值相等,那么當X軸方向上以2mm/s的速度向右運動,要得到這個圓弧的軌跡,在任意一個X位置對應(yīng)的Y的速度是:

這里都取了X方向的速度為2mm/s,是一個比較慢的速度,再根據(jù)Vy的公式(編寫入中斷程序進行運算),可以編寫程序繪制圓形了,只需要注意在在繪制途中X方向和Y方向改變的位置要做一些處理,下面用程序與注釋來說明整段程序的過程。(下圖是程序建立坐標原點即參考點后實際走出來的軌跡)

首先畫圓形需要的是一個兩軸控制臺(包括步進電機和畫圖的平臺等),兩個驅(qū)動器,一臺200PLC,筆者視頻里用的是一個三軸的平臺,驅(qū)動器細分調(diào)至3200,寫程序之前使用運動向?qū)ВO(shè)置兩個軸,測量系統(tǒng)選擇工程單位,方便我們計算,也更直觀,細分3200,我的步進電機每轉(zhuǎn)一圈前進5mm,如下圖所示:

方向控制選項如下圖,X軸選擇單相2輸出,因為畫圓過程中X方向上有正有負;Y軸選擇單相1輸出,因為Y軸運動靠的是點動RUN控制,筆者在調(diào)試過程中發(fā)現(xiàn)使用單相2輸出時,使用點動的Director或者Q0.7來控制方向會有時候不受控制,這是因為手動子程序里包含了方向控制導致程序沖突,所以這里Y軸使用單相1輸出,調(diào)試結(jié)果很穩(wěn)定。其余對電機速度,JOG選項進行一些常規(guī)設(shè)置即可。(筆者嘗試了為實現(xiàn)Y軸變速運動,使用組態(tài)中的相對運動和絕對運動子程序,為其提供變速度且實時改變終點位置,結(jié)果是Y軸沒有動作,因此用相對和絕對不能控制一個速度和位置的數(shù)值實時變化的運動,因此最后選擇了點動來實現(xiàn)這個變速的功能)

然后開始寫主程序:

這是筆者原創(chuàng)的程序,200smart并沒有開發(fā)相應(yīng)的功能,三菱plc有圓弧插補功能,筆者沒有接觸過三菱plc,通過查閱PLC圓弧插補的資料和原理,對兩種方法進行了對比:圓弧插補功能的原理是將圓分解成N段折線來畫,其誤差在某范圍內(nèi)可控,而以上介紹的方法從純數(shù)學的角度來講是相當完美的,但是也有缺點,它的完美程度取決于中斷運算的時間和X方向上的速度,如果運算時間設(shè)計較長,Y軸加速情況下會丟步較多,減速情況下會過沖較多,運算時間短對CPU要求較高,X方向速度過快會導致丟步較多,另外由于是浮點數(shù)運算,每一步本身就存在極少量丟步。

盡管有這么多理論上的缺陷,但是由于10ms運算間隙時間極短且X軸方向上走的較慢,實際走的圓非常的光滑接近完美的圓。

大家看完此文應(yīng)該可以完成很多曲線的編程畫自己想畫的圖形了,但是根據(jù)函數(shù)的復雜性和求導的難度使得編程有難易程度的區(qū)別,可以挑戰(zhàn)一下試試畫一個愛心,如下圖。該程序我會在下一篇文章寫給大家供參考。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5004

    文章

    13054

    瀏覽量

    461004

原文標題:PLC畫圓很難嘛?其實,只要有方法,這都是浮云!

文章出處:【微信號:GKB1508,微信公眾號:工控幫】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于畫圓的算法

    在tft上畫圓。。的是Bresenham算法??墒钱嫵龅膱A失真嚴重,請問要怎么才能畫出比較圓的圓?Bresenham算法代碼如下void CirclePoint(uint16 x,uint16 y
    發(fā)表于 11-14 22:18

    畫線畫圓程序

    在12864的液晶屏上畫線畫圓都需要12864中讀出某個地址的數(shù)據(jù),然后在寫進去。我現(xiàn)在有塊迷你型的12864,他本身不帶任何芯片。那我應(yīng)該如何編寫這種畫圓畫線的函數(shù)?
    發(fā)表于 03-05 15:56

    LABVIEW 圖片上自動畫圓

    LABVIEW 在圖片上自動按圓直徑畫圓。
    發(fā)表于 02-18 19:26

    請問怎么在圖像中畫圓?

    在labview中用IMAQ打開圖像后,怎么在圖像中畫圓?而且是圓心加半徑的方法。我draw circle by radius函數(shù)時,連不上圖像。比如在這個圖像中
    發(fā)表于 04-19 16:55

    新手求問機器視覺中用ROI和Overlay畫圓的優(yōu)缺點

    本人最近在做畢業(yè)設(shè)計,做的是機器視覺的東西,其中需要畫圓來表示位置,還要求可以改變圓的大小和通過鼠標拖動來移動圓的位置。想求教大神們ROI畫圓Overlay
    發(fā)表于 05-05 17:51

    XY圖畫圓的分度線

    請問怎么labview的xy圖畫圓的分度線呢,大概要畫八條
    發(fā)表于 03-31 15:53

    畫圓怎么修改

    STM32程序里帶的畫圓都是半正畫半反畫過來的LCD_DrawPoint(x0+b,y0+a); //4LCD_DrawPoint(x0+a,y0+b); //6 這樣子的:那如何把4改過來也
    發(fā)表于 05-20 22:00

    在TFT上畫圓的算法是什么?

    以上是我自己編的畫圓的程序,其中x , y 表示畫圓的圓心。r 圓的半徑。。。?LCD_WritePoint() 為畫點函數(shù)。請問為什么運行程序后怎么變成了整個屏幕的刷屏了?請問原子哥你的
    發(fā)表于 03-25 03:27

    CAD制圖初學入門之CAD畫圓方法

    `使用CAD繪圖軟件的過程中,圓和弧是比較常見的,但是對于很多CAD制圖初學入門者來說,由于對CAD制圖方法不夠了解,所以不知道如何繪制圓或者圓弧,下面我們就來介紹下已知圓心畫圓的C
    發(fā)表于 01-13 10:23

    cad制圖初學入門畫圓之CAD畫圓方法

    使用CAD繪圖軟件的過程中,圓和弧是比較常見的,但是對于很多CAD制圖初學入門者來說,由于對CAD制圖方法不夠了解,所以不知道如何繪制圓或者圓弧,下面我們就來介紹下已知端點畫圓的CA
    發(fā)表于 01-14 17:05

    如何學circle畫圓

    問題描述:學circle畫圓形。程序源碼:#includevoid main(){int driver,mode,i;float j=1,k=1;driver=VGA;mode=VGAHI
    發(fā)表于 07-14 07:27

    如何用circle畫圓形?

    如何用circle畫圓形?
    發(fā)表于 10-14 07:24

    中心點畫圓和Bresenham畫圓,哪種算法速度更快?

    中心點畫圓和Bresenham畫圓,哪種算法速度更快?
    發(fā)表于 10-28 08:04

    Bresenham直線算法與畫圓算法

    Bresenham直線算法與畫圓算法。Bresenham直線算法是用來描繪由兩點所決定的直線的算法,它會算出條線段在 n 維光柵上最接近的點。這個算法只會用到較為快速的整數(shù)加法、減法和位元移位,常用于繪制電腦畫面中的直線。是計算機圖形學中最先發(fā)展出來的算法。
    發(fā)表于 11-30 18:00 ?6次下載

    【STM32】STM32 OLED打點劃線畫圓 OLED電子羅盤 程序

    【STM32】STM32 OLED打點劃線畫圓 OLED電子羅盤 程序
    發(fā)表于 12-08 12:21 ?47次下載
    【STM32】STM32 OLED打點劃線<b class='flag-5'>畫圓</b> OLED電子羅盤 程序