技術(shù)頻道

      基于高級(jí)語言的精確位置控制在塑料機(jī)械行業(yè)中的應(yīng)用

        在塑料機(jī)械行業(yè)中,運(yùn)動(dòng)機(jī)構(gòu)的控制往往由液壓驅(qū)動(dòng)來實(shí)現(xiàn),比如注塑機(jī)的開合模位置,注射位置,全自動(dòng)中空吹塑機(jī)的移模位置等等。

        這些運(yùn)動(dòng)機(jī)構(gòu)的位置準(zhǔn)確性對(duì)于機(jī)器的整體性能和制品精度都有較大影響,比如,注塑機(jī)開模位置的準(zhǔn)確度,有利于機(jī)械手進(jìn)入取出成品,注射終的位置也會(huì)影響到注射量和成品的重復(fù)精度。

        為了提高位置精度,比較有效的做法是提高執(zhí)行機(jī)構(gòu)的響應(yīng)和精確度,使用高精度的比例閥或伺服閥。MOOG,REXROTH,意大利的ATOS,都有相應(yīng)的液壓驅(qū)動(dòng)產(chǎn)品。

        然而,作為機(jī)器的中央控制單元 – 塑料機(jī)械的控制系統(tǒng),軟件內(nèi)的傳統(tǒng)做法是:檢測電子尺的位置反饋,判斷動(dòng)作處于第幾個(gè)階段,決定輸出相應(yīng)的流量和壓力,或者是否要結(jié)束動(dòng)作。

        這種做法的缺點(diǎn)是,比如,控制系統(tǒng)檢測到模板位置已經(jīng)達(dá)到了設(shè)定的開模終的位置,然后流量和壓力才開始按照設(shè)定斜坡減速,再加上閥的響應(yīng)延時(shí),等到模板停穩(wěn)之后,實(shí)際位置已經(jīng)遠(yuǎn)遠(yuǎn)超過了設(shè)定值。

        圖1是普通注塑機(jī)控制系統(tǒng)控制開模位置的效果示意圖,可以看到,就算使用高響應(yīng)比例方向閥,過沖仍不可避免,而當(dāng)執(zhí)行機(jī)構(gòu)的響應(yīng)特性較差時(shí),情況就更加糟糕。

        GEFRAN(杰佛倫)是來自意大利的傳感器和自動(dòng)化領(lǐng)域的先導(dǎo)者,有著三十多年的塑料機(jī)械行業(yè)經(jīng)驗(yàn)。對(duì)于這樣的控制場合,GEFRAN控制系統(tǒng)采用面向?qū)ο蟮母呒?jí)語言編程,軟件內(nèi)部集成了豐富的功能庫,這些功能庫,能分析運(yùn)動(dòng)過程的速度,斜坡,和點(diǎn)到點(diǎn)的位置,做出特殊算法處理。


      圖 2

        以圖2 曲線為例,V1,V2,V3為三段恒定速度,Q1,Q2為兩點(diǎn)位置值,要實(shí)現(xiàn)這樣的點(diǎn)到點(diǎn)位置曲線,必須要考慮中間的加減速過程。圖例中為:先實(shí)現(xiàn)一段上升斜坡,然后再實(shí)現(xiàn)兩段下降斜坡。對(duì)于塑料機(jī)械來說,上升斜坡采用基于時(shí)間的類型就能滿足要求:(速度變化△V) * 程序運(yùn)行周期時(shí)間T_PLC / 加速時(shí)間T = 每隔一個(gè)程序運(yùn)行周期需要增加的速度輸出變化。這樣的基于時(shí)間的加速斜坡算法很輕易就能實(shí)現(xiàn),而對(duì)于下降斜坡,要準(zhǔn)確的停在Q1位置,必須提前一定位置就進(jìn)行減速,這個(gè)提前位置系數(shù),取決于執(zhí)行機(jī)構(gòu)的響應(yīng)速度,執(zhí)行機(jī)構(gòu)響應(yīng)越快,這個(gè)值就可以設(shè)得越小,否則必須增大提前位置系數(shù),從而延長運(yùn)動(dòng)過程的執(zhí)行時(shí)間。

        程序?qū)崿F(xiàn)這樣的減速過程,至少有三種不同的算法可能性,讓我們分析各自優(yōu)劣性。

        第一種,基于時(shí)間

        if (STOP_POSITION[i] == TIME_BASED){

        if( Realpos > startPos) {

        if (StartDecreaseOut[i] > TimeRampValue [i]) {

        StartDecreaseOut [i] = StartDecreaseOut [i] – TimeRampValue[i];

        }else{

        StartDecreaseOut [i] = 0;

        }

        OutPutTemp = StartDecreaseOut [i];

        }else{

        StartDecreaseOut [i] = Real_Output;

        }

        return(OutPutTemp);

        }

        這種算法和加速斜坡類似,但存在一個(gè)致命缺點(diǎn):由于起始下降的速度未定,就算機(jī)器出廠前設(shè)好了參數(shù),最終用戶更換模具,或者改變開模速度曲線,都需要重新尋找最佳的斜坡起始點(diǎn),因此,不能拿來用做控制。

        第二種,基于位置斜坡

        如圖所示,一旦提前點(diǎn)值確定,基于位置的斜率就可以確定下來了,因此不管開始準(zhǔn)備下降時(shí)流量設(shè)定是多少,斜率總是一定的,而真正開始執(zhí)行斜坡的位置,卻是不一定的,跟流量有關(guān)系,斜率確定如下:

        if (STOP_POSITION == POSITION_RAMP_BASED){

        Position_Ramp = AdvancePoint * Real_Output / Maxout;

        If (Realpos > startPos) {

        OutTemp = Maxoutabs * (EndPos - RealPos) / Position_Ramp;

        if (Real_Output <= OutTemp) OutPutTemp = Real_Output;

        }

        return(OutPutTemp);

        }

        注釋(

        STOP_POSITION:斜坡方式選項(xiàng)

        POSITION_RAMP_BASED:基于位置斜坡方式

        AdvancePoint:提前開始降速的位置

        Position_Ramp:斜坡比例

        Realpos :電子尺的當(dāng)前實(shí)際位置

        startPos:開始執(zhí)行斜坡降速的電子尺位置

        OutTemp:中間變量,流量

        Real_Output:實(shí)際輸出流量

        )

        第三種,基于位置斜坡和數(shù)組陣列排點(diǎn)法

        第三種算法是在第二種的基礎(chǔ)上加以改進(jìn)和優(yōu)化

        在第二種控制方法中沒有解決開始執(zhí)行斜坡的位置確定問題,這可以借助數(shù)組陣列排點(diǎn)法解決。比如預(yù)先定義一個(gè)32點(diǎn)的數(shù)組,表內(nèi)的數(shù)值決定了最終運(yùn)動(dòng)曲線的形狀,如果我們把每一個(gè)點(diǎn)在坐標(biāo)軸上列出來,就可以很清晰的看到它是一條線形的直線,上凸弧線,下凹弧線,或者是S型的曲線。比如16位的輸出最大點(diǎn)值32767,可以將其劃分成32段,

        EXTERN int TAB_POS [33]

        = { 0, 3913, 6330, 8242, 9882, 11331, 12651, 13875, 15012, 16076, 17092,

        18060, 18981, 19869, 20717, 21541, 22341, 23110, 23862, 24598, 25310, 25998,

        26679, 27343, 27991, 28631, 29247, 29863, 30463, 31056, 31632, 32200, 32767

        }

        程序內(nèi)可以用簡單的FOR循環(huán)語句,實(shí)時(shí)獲取預(yù)先定義好的斜坡曲線形狀,計(jì)算分段位置值,然后根據(jù)實(shí)際位置值,修正速度輸出。

        if (STOP_POSITION == POSITION_RAMP_ARRAY__BASED){

        For (int j = 0; j <= 32; j++) {

        TableTemp[j] = TAB_POS[j];

        }

        DeltaStop = EndPos – RealPos;

        Temp1 = AdvancePoint / 32;

        if (DeltaStop > AdvancePoint) {

        stepg = 31;

        restg = Temp1;

        } else {

        stepg = DeltaStop * 32 / AdvancePoint;

        restg = AdvancePoint / 32 * stepg;

        restg = DeltaStop - restg;

        }

        Temp2 = TableTemp [stepg+1] - TableTemp [stepg];

        OutPutTemp = restg * Temp2 / Temp1;

        OutPutTemp = OutPutTemp + TableTemp [stepg];

        return(OutPutTemp);

        }

        注釋(

        STOP_POSITION:斜坡方式選項(xiàng)

        POSITION_RAMP_ARRAY__BASED:基于數(shù)組陣列排點(diǎn)的位置斜坡方式

        AdvancePoint:提前開始降速的位置

        TableTemp:獲取預(yù)定義數(shù)組的本地變量

        TAB_POS:預(yù)先定義好的數(shù)組陣列

        Temp1:中間變量,將提前位置按陣列數(shù)等分

        Temp2:中間變量,將位置值映射成流量值

        RealPos:電子尺的當(dāng)前實(shí)際位置

        EndPos:最終開模位置

        DeltaStop:剩余需要走完多少位置值

        stepg:當(dāng)前采樣點(diǎn)模板位置處于第幾步陣列

        restg:剩余采樣點(diǎn)共有幾步陣列

        )

        另外需要考慮的一點(diǎn)是,當(dāng)執(zhí)行程序的控制器的循環(huán)周期時(shí)間過長,陣列細(xì)分過少,或閥門開度不準(zhǔn)確等原因,造成速度下降至零時(shí)停止在了位置設(shè)定值之前,此時(shí)需要有一個(gè)最小速度值,保證在這種情況下,能夠繼續(xù)前進(jìn)至目標(biāo)位置。

        圖3是應(yīng)用了這種位置控制算法后的注塑機(jī)開模效果圖,控制系統(tǒng)的硬件載體是GEFRAN公司的VEDO控制器和GiLogik2分布式遠(yuǎn)程IO,憑借GDnet確定性實(shí)時(shí)以太網(wǎng),輸入輸出信號(hào)能在100us內(nèi)完成一次刷新,從而可以保證PLC程序周期在1ms內(nèi)完成一個(gè)循環(huán),配合以上所述的位置算法和高精確度的執(zhí)行機(jī)構(gòu),可以控制注塑機(jī)開合模,托模,和注射單元的位置誤差在0.1mm范圍之內(nèi)。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 久久99精品一区二区三区| 国产亚洲一区二区三区在线不卡 | 久久毛片一区二区| 亚洲一区在线视频观看| 亚洲AV无码一区二区三区牲色| 亚洲av成人一区二区三区观看在线 | 久久毛片一区二区| 日本在线电影一区二区三区| 一区二区三区在线视频播放| 成人精品一区二区三区不卡免费看| 老熟妇仑乱一区二区视頻| 无码一区二区三区中文字幕| 无码毛片一区二区三区中文字幕| 国产高清不卡一区二区| 无码一区二区三区AV免费| 无码人妻精品一区二区蜜桃AV| 国内国外日产一区二区| 精品无码国产一区二区三区51安| 亚洲国产成人久久一区WWW| 在线播放国产一区二区三区 | 色欲AV无码一区二区三区| 国产在线一区二区三区| 午夜视频一区二区| 性色AV一区二区三区| 韩国精品一区二区三区无码视频| 成人区人妻精品一区二区不卡视频| 亚洲福利电影一区二区?| 国产精品成人国产乱一区| 在线欧美精品一区二区三区 | 亚洲高清日韩精品第一区| 精品视频一区在线观看| 中文字幕日韩一区| 中文字幕在线播放一区| 午夜视频在线观看一区| 久久久无码一区二区三区| 久久影院亚洲一区| 后入内射国产一区二区| 成人精品一区二区户外勾搭野战 | 人妖在线精品一区二区三区| 视频一区二区三区人妻系列| 少妇无码一区二区三区免费|