日韩国产精品欧美一区二区,免费高清a毛片,日本a视频在线观看,欧美成人高清性色生活

SIEMENS江西省南昌市西門子變頻器、驅(qū)動、PLC(授權(quán))一級代理商——西門子華中總代理

西門子總代理: PLC
西門子一級代: 驅(qū)動
西門子代理商: 伺服電機
單價: 面議
發(fā)貨期限: 自買家付款之日起 天內(nèi)發(fā)貨
所在地: 廣東 惠州
有效期至: 長期有效
發(fā)布時間: 2024-03-13 10:34
最后更新: 2024-03-13 10:34
瀏覽次數(shù): 136
采購咨詢:
請賣家聯(lián)系我
發(fā)布企業(yè)資料
詳細說明

博途S7-1500SCL實現(xiàn)斜坡線性平滑算法程序


01


斜坡線性平滑算法仿真

圖片

02

斜坡線性平滑在工程中應(yīng)用

線性平滑功能關(guān)主要有兩大作用:

1、對設(shè)置值目標值進行平滑,在收放卷以及一些同步控制中,閉環(huán)有可能會在PLC里面做閉環(huán)控制,所以速度指令通常是由PLC給出,變頻器、驅(qū)動器這些執(zhí)行機構(gòu)加減速時間設(shè)置的會非常短,因為要滿足一些同步性跟隨控制的需要,這時候如果去點動一個外部設(shè)備,直接設(shè)定一個目標值,如果沒有一個線性平滑的功能,設(shè)備都會有一個明顯的一個沖擊,所以這時候一般會引入一個線性平滑功能,對于設(shè)定值,它實現(xiàn)一個斜坡加減速的功能,

2、另外一個功能就是在PID的優(yōu)化算法里面實現(xiàn)對于給定值PID的目標值的一個平滑給定。比如設(shè)定給定的一個溫度,我們從30°升到100°C,通常我們?nèi)绻苯釉O(shè)置的話,會有一個很明顯的階躍。對于這樣的一個階躍信號后面的閉環(huán)控制系統(tǒng)PID,它的響應(yīng)是比較困難,所以這時候我們通常會對給定值進行一個平滑,比如說那些線速度設(shè)定,張力設(shè)定,對于這些需要控制的這個目標量,通常都會有一個平滑過渡的過程,一個階躍信號給過去后面的閉環(huán)控制系統(tǒng)很難及時響應(yīng),會給系統(tǒng)造成一定的沖擊,所以這時候會引入這樣的一個線性平滑功能塊,介紹完線性平滑功能塊的作用之后,我們看一下這樣一個功能塊它的算法原理是如何實現(xiàn)的。


03

斜坡線性平滑算法原理
算法公式:

圖片

MaValue:最大速度。
MinValue:最小速度
SmoothTime:線性平滑總時間
h:計算步長,PLC的循環(huán)中斷時間

圖片


算法原理,這里我們結(jié)合著PLC代碼部分進行講解。我們這里已經(jīng)編寫好了一個線性平滑功能塊,這里我們在定時中斷OB30里面進行調(diào)用,這里的定時中斷的中斷時間是10ms,每10ms里面去調(diào)用一個這樣的一個平滑函數(shù)功能塊,直接監(jiān)控觀察一下這樣的一個功能塊?,F(xiàn)在它的目標值是30,如果要去修改它的這樣的一個速度,比如讓他轉(zhuǎn)到60r/min,大家可以看得到我的這個目標值雖然階躍發(fā)生變化了,但是我的輸出平滑值它是慢慢爬升到這個階段的,它有一個爬升的這樣的一個過程。


圖片

我們在將速度降低,可以看到我們在觸摸屏或者上位機上去給進這樣的一個速度指令,但是實際上速度指令并不是馬上降到的設(shè)定值,而是一個斜坡有一個加速減速的過程,所以這里的線性平滑功能快主要是為了完成對于我們的目標值的一個線性平滑。

圖片


平滑時間是自己可設(shè)的,這里的工程量的最小值是0,最大值是200,然后總的平滑時間是50,實現(xiàn)這樣的一個平滑時間一個設(shè)定,對于變頻器里面,通常大家知道0~50Hz對應(yīng)的你的加速時間,有的時候會設(shè)置成15秒,20秒,其實是一個道理,就是這里的算法是在PLC里面去實現(xiàn)這樣的一個過程,因為有的時候我們的這樣的一個閉環(huán)控制,同步控制是在PLC這邊去做的,所以這樣的平滑必須由我們這個PLC上位控制器去給出這樣的一個平滑指令。


接下來看一下編程里面是如何進行實現(xiàn)的。這里將縱坐標最小值、最大值設(shè)定成0-200,橫坐標平滑總時間設(shè)置成50秒,這里面還有一個求解步長,就是所謂的這個定時中斷的時間,如果我們設(shè)置是10ms,那10ms,50秒里面被劃分了多少份呢?我們首先利用這樣的一個平滑總時間除以一個計算步長,當(dāng)然這里的單位是毫秒,總時間單位是秒,秒我們要轉(zhuǎn)成毫秒,毫秒之后再除以這樣的一個步長,就總共我們被分割了這么多份,從這個最小值到最大值被分割這么多份,需要計算出我們的單步增量,這里的增量它是一個既是代表遞增也是代表遞減的,所以它是一個變化量。首先要計算出這樣的一個變化量,這個變化量計算出來之后,這樣的一個平滑輸出,就利用這樣的一個公式就可以算出來我們的平滑數(shù)值,值等于我們的這個初始值,就是這里的平滑值,再加上單步遞增量,再乘以一個系數(shù)。為什么要有個系數(shù)呢?就是因為我們有可能是遞增的也有可能是遞減,這要根據(jù)這個目標值和我們的平滑輸出值這個大小關(guān)系,可以看一下,這邊這時候平滑輸出值已經(jīng)是10了,那如果這時候我要讓它變?yōu)樽優(yōu)?,那是不是必須得遞減,所以這里是根據(jù)這樣的一個輸出平滑值和我們的這個目標值的大小來判斷到底是遞減還是遞增的,可以看到我們現(xiàn)在就是一個遞減的過程,那我們?nèi)绻麑⑽覀兊倪@個設(shè)定值設(shè)置的大于我們的這個平滑輸出值,比如說我們設(shè)置成40,可以看到我們現(xiàn)在的輸出它就是一個平滑遞增的這樣的一個過程。

04

SCL程序?qū)崿F(xiàn)


圖片

符號表:

圖片


代碼:

圖片




























REGION 單步變化量    #deltaValue := (#maxValue - #minValue) / DINT_TO_REAL(#smoothTime * 1000 / #h);END_REGION
REGION 計算偏差juedui值    #SetSmSUB := #SetValue - #sm_out_1;    IF #SetSmSUB < 0.0 THEN        #SetSmSUB := #SetSmSUB * -1;    END_IF;END_REGION
REGION 計算平滑輸出值sm_out    IF #SetSmSUB > #deltaValue THEN        IF #SetValue > #sm_out_1 THEN            #factor := 1.0;        ELSIF #SetValue = #sm_out_1 THEN            #factor := 0.0;        ELSIF #SetValue < #sm_out_1 THEN            #factor := -1.0;        END_IF;        #sm_out_1 := #sm_out_1 + #factor * #deltaValue;    ELSE        #sm_out_1 := #SetValue;    END_IF;    #sm_out := #sm_out_1;END_REGION


相關(guān)一級代理商產(chǎn)品
相關(guān)一級代理商產(chǎn)品
相關(guān)產(chǎn)品