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

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

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

西門子PID控制算法-FB塊封裝

工控論壇 ? 來源:工控論壇 ? 2024-12-30 11:01 ? 次閱讀

西門子PID控制算法-FB(功能塊)封裝主要應(yīng)用于工業(yè)自動(dòng)化和過程控制系統(tǒng)中,用于實(shí)現(xiàn)閉環(huán)控制。具體來說,它廣泛應(yīng)用于需要維持某一設(shè)定值的過程變量,如溫度、壓力、流量、速度等的精確控制。

01主要應(yīng)用場合

制造業(yè):在制造過程中,許多參數(shù)如溫度、濕度、壓力等都需要被嚴(yán)格控制以確保產(chǎn)品質(zhì)量。例如,在食品加工、化工生產(chǎn)、制藥等行業(yè)中,PID控制可以用來保持反應(yīng)釜內(nèi)的溫度穩(wěn)定。能源管理:在電力、燃?xì)獾饶茉垂?yīng)系統(tǒng)中,通過PID控制可以有效地調(diào)節(jié)發(fā)電機(jī)組的輸出功率或供氣系統(tǒng)的壓力,以響應(yīng)需求變化并減少能源浪費(fèi)。暖通空調(diào)(HVAC):樓宇自動(dòng)化的溫控系統(tǒng)中,PID控制器能夠根據(jù)室內(nèi)溫度傳感器反饋的信息調(diào)整加熱器或冷卻器的工作狀態(tài),從而達(dá)到節(jié)能的目的。水處理:污水處理廠利用PID控制來監(jiān)控和調(diào)整各種水質(zhì)參數(shù),如pH值、溶解氧濃度等,確保排放標(biāo)準(zhǔn)達(dá)標(biāo)。機(jī)器人技術(shù):在機(jī)械臂的位置控制或者移動(dòng)機(jī)器人的速度控制上,PID控制同樣扮演著重要角色。

02意義

高精度:相較于開環(huán)控制系統(tǒng),PID控制能夠更準(zhǔn)確地跟蹤設(shè)定點(diǎn),減少誤差。

增強(qiáng)穩(wěn)定性:通過對(duì)比例、積分、微分三個(gè)參數(shù)的適當(dāng)調(diào)整,可以使控制系統(tǒng)更加穩(wěn)定,避免過調(diào)或震蕩現(xiàn)象。

適應(yīng)性強(qiáng):即使面對(duì)負(fù)載變動(dòng)或外部干擾,良好的PID調(diào)節(jié)也能保證系統(tǒng)快速恢復(fù)到期望的工作狀態(tài)。

簡化編程與維護(hù):使用預(yù)封裝的功能塊進(jìn)行開發(fā),可以大大縮短編程時(shí)間,并且由于其模塊化特性,便于后期維護(hù)和調(diào)試。

綜上所述,西門子提供的PID控制算法-FB塊封裝為工程師提供了一種高效、可靠的方法來構(gòu)建復(fù)雜的自動(dòng)化控制系統(tǒng),對(duì)于提升生產(chǎn)效率和產(chǎn)品質(zhì)量有著重要意義。

03FB塊

56be69ac-c2c1-11ef-9310-92fbcf53809c.png

56d3360c-c2c1-11ef-9310-92fbcf53809c.png

56dbe716-c2c1-11ef-9310-92fbcf53809c.png

56ee26a6-c2c1-11ef-9310-92fbcf53809c.png

IF #COM_RST THEN //PID初始化 #sIanteilAlt := #I_ITLVAL; #LMN := 0.0; #QLMN_HLM := FALSE; #QLMN_LLM := FALSE; #LMN_P := 0.0; #LMN_I := 0.0; #LMN_D := 0.0; #LMN_PER := W#16#0; #PV := 0.0; #ER := 0.0; #sInvAlt := 0.0; #sRestlnt := 0.0; #sRestDif := 0.0; #sRueck := 0.0; #sLmn := 0.0; #sbArwHLmOn := FALSE; #sbArwLLmOn := FALSE; ELSE #rCYcle := DINT_TO_REAL(TIME_TO_DINT(#CYCLE)) / 1000.0; //采樣時(shí)間轉(zhuǎn)換為浮點(diǎn)數(shù)值 #Istwert:=DINT_TO_REAL(INT_TO_DINT(WORD_TO_INT(#PV_PER)))*0.003616898; #Istwert := #Istwert * #PV_FAC + #PV_OFF; //外設(shè)輸入轉(zhuǎn)換為浮點(diǎn)數(shù)值 IF NOT #PVPER_ON THEN //過程變量選擇 #Istwert := #PV_IN; END_IF; #PV := #Istwert; #ErKp := #SP_INT - #PV; //計(jì)算偏差 IF #ErKp<-#DEADB_W THEN ? ? ? ? #ER := #ErKp + #DEADB_W; ? ? ELSIF #ErKp>#DEADB_W THEN #ER := #ErKp - #DEADB_W; ELSE #ER := 0.0; END_IF; #ErKp := #ER * #GAIN;//偏差比例增益 #rTi := DINT_TO_REAL(TIME_TO_DINT(#TI)) / 1000.0; #rTd := DINT_TO_REAL(TIME_TO_DINT(#TD)) / 1000.0; #rTmLag := DINT_TO_REAL(TIME_TO_DINT(#TM_LAG)) / 1000.0; IF #rTi < #rCYcle*0.5 THEN //積分時(shí)間必須>=采樣時(shí)間的0.5倍 #rTi := #rCYcle * 0.5; END_IF; IF #rTd < #rCYcle THEN? //微分時(shí)間必須>=采樣時(shí)間 #rTd := #rCYcle; END_IF; IF #rTmLag<#rCYcle *0.5 THEN? //微分作用延時(shí)時(shí)間必須>=采樣時(shí)間的0.5倍 #rTmLag := #rCYcle * 0.5; END_IF; IF #P_SEL THEN //如果比例作用投入 #Panteil := #ErKp; ELSE #Panteil := 0.0; END_IF; IF #I_SEL THEN //如果積分作用投入 IF #I_ITL_ON THEN //積分初始化 #Ianteil := #I_ITLVAL; #sRestlnt := 0.0; ELSIF #MAN_ON THEN //手動(dòng)值輸入時(shí)的積分量計(jì)算,用于手動(dòng)切換自動(dòng)無擾切換 #Ianteil := #sLmn - #Panteil - #DISV; #sRestlnt := 0.0; ELSE //積分計(jì)算 #Iant := (#rCYcle / #rTi) * (#ErKp + #sInvAlt) * 0.5 + #sRestlnt; IF ((#Iant>0.0 AND #sbArwHLmOn) OR #INT_HOLD) OR (#Iant<0.0 AND #sbArwLLmOn)? THEN ? ? ? ? ? ? ? ? #Iant := 0.0; ? ? ? ? ? ? END_IF; ? ? ? ? ? ? #Ianteil := #sIanteilAlt + #Iant;//當(dāng)前積分值:=上時(shí)刻積分值+本次積分量 ? ? ? ? ? ? #sRestlnt := #sIanteilAlt - #Ianteil + #Iant; ? ? ? ? END_IF; ? ? ELSE ? ? ? ? #Ianteil := 0.0; ? ? ? ? #sRestlnt := 0.0; ? ? END_IF; ? ? #Diff := #ErKp; ? ? IF NOT #MAN_ON AND #D_SEL THEN? ?//如果微分投入作用 ? ? ? ? #Verstaerk := #rTd / (#rCYcle * 0.5 + #rTmLag); ? ? ? ? #Danteil := (#Diff - #sRueck) * #Verstaerk; ? ? ? ? #RueckAlt := #sRueck; ? ? ? ? #RueckDiff := #rCYcle / #rTd * #Danteil + #sRestDif; ? ? ? ? #sRueck := #RueckDiff + #RueckAlt; ? ? ? ? #sRestDif := #RueckAlt - #sRueck + #RueckDiff; //同積分一樣計(jì)算微分誤差量 ? ? ELSE ? ? ? ? #Danteil := 0.0; ? ? ? ? #sRestDif := 0.0; ? ? ? ? #Verstaerk := 0.0; ? ? ? ? #RueckAlt := 0.0; ? ? ? ? #RueckDiff := 0.0; ? ? ? ? #sRueck := 0.0; ? ? END_IF; ? ? IF #MAN_ON THEN? //如果PID手動(dòng)值打開 ? ? ? ? #dLmn := #MAN; ? ? ELSE ? ? ? ? IF NOT #I_ITL_ON AND #I_SEL THEN //干擾量處理 ? ? ? ? ? ? IF #Ianteil> #LMN_HLM-#DISV AND #dLmn > #LMN_HLM AND #dLmn-#LMN_D>#LMN_HLM THEN #rVal := #LMN_HLM - #DISV; #gf := #dLmn - #LMN_HLM; #rVal := #Ianteil - #rVal; IF #rVal >#gf THEN #rVal := #gf; END_IF; #Ianteil := #Ianteil - #rVal; ELSIF #Ianteil<#LMN_LLM-#DISV AND #dLmn <#LMN_LLM AND #dLmn -#LMN_D<#LMN_HLM THEN ? ? ? ? ? ? ? ? #rVal := #LMN_LLM - #DISV; ? ? ? ? ? ? ? ? #gf := #dLmn - #LMN_LLM; ? ? ? ? ? ? ? ? #rVal := #Ianteil - #rVal; ? ? ? ? ? ? ? ? IF #rVal<#gf THEN ? ? ? ? ? ? ? ? ? ? #rVal := #gf; ? ? ? ? ? ? ? ? END_IF; ? ? ? ? ? ? ? ? #Ianteil := #Ianteil - #rVal; ? ? ? ? ? ? END_IF; ? ? ? ? END_IF; ? ? END_IF; ? ? #LMN_P := #Panteil; ? ? #LMN_I := #Ianteil; ? ? #LMN_D := #Danteil; ? ? #sInvAlt := #ErKp; ? ? #sIanteilAlt := #Ianteil; ? ? #sbArwHLmOn := FALSE; ? ? #sbArwLLmOn := FALSE; ? ? IF #dLmn >= #LMN_HLM THEN //如果到達(dá)調(diào)節(jié)量上限 #QLMN_HLM := TRUE; #QLMN_LLM := FALSE; #dLmn := #LMN_HLM; #sbArwHLmOn := TRUE; ELSE #QLMN_HLM := FALSE; IF #dLmn<=#LMN_LLM THEN? ?//如果到達(dá)調(diào)節(jié)量下限 ? ? ? ? ? ? #QLMN_LLM := TRUE; ? ? ? ? ? ? #dLmn := #LMN_LLM; ? ? ? ? ? ? #sbArwLLmOn := TRUE; ? ? ? ? ELSE ? ? ? ? ? ? #QLMN_LLM := FALSE; ? ? ? ? END_IF; ? ? END_IF; ? ? #sLmn := #dLmn; ? ? #dLmn := #dLmn * #LMN_FAC + #LMN_OFF; ? ? #LMN := #dLmn; ? ? #dLmn := #dLmn * 276.48; ? ? IF #dLmn >=32512.0 THEN #dLmn := 32512.0; ELSIF #dLmn <= -32512.0 THEN ? ? ? ? #dLmn := -32512.0; ? ? END_IF; ? ? #LMN_PER := INT_TO_WORD(DINT_TO_INT(REAL_TO_DINT(#dLmn))); ? ?? END_IF;

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

    關(guān)注

    126

    文章

    7933

    瀏覽量

    143048
  • 西門子
    +關(guān)注

    關(guān)注

    94

    文章

    3041

    瀏覽量

    115965
  • PID控制算法
    +關(guān)注

    關(guān)注

    1

    文章

    21

    瀏覽量

    10727

原文標(biāo)題:西門子PID控制算法-FB塊封裝

文章出處:【微信號(hào):gkongbbs,微信公眾號(hào):工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門子PTO運(yùn)動(dòng)控制教程

    西門子PLC運(yùn)動(dòng)控制的3種控制方式。
    發(fā)表于 04-11 09:45 ?4840次閱讀

    西門子PLC編程中FB和FC的區(qū)別

    西門子PLC編程時(shí),可以用到功能FB和功能FC(FB、FC都是組織)資料上說FB與FC都可
    發(fā)表于 06-20 10:54 ?1.6w次閱讀

    西門子PLC教程之PID編程資料

    西門子PLC關(guān)于PID編程資料
    發(fā)表于 12-20 10:30 ?77次下載

    西門子PLC的結(jié)構(gòu)和編輯的教程詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是西門子PLC的結(jié)構(gòu)和編輯的教程詳細(xì)說明
    發(fā)表于 03-19 14:52 ?21次下載
    <b class='flag-5'>西門子</b>PLC的<b class='flag-5'>塊</b>結(jié)構(gòu)和<b class='flag-5'>塊</b>編輯的教程詳細(xì)說明

    如何用一個(gè)FB在使用西門子1200PLC時(shí)候?qū)崿F(xiàn)堆棧功能

    1.在使用西門子1200PLC時(shí)候需要堆棧功能,實(shí)現(xiàn)數(shù)據(jù)的先進(jìn)先出后進(jìn)后出功能,于是自己用SCL語言開發(fā)了一個(gè)FB來實(shí)現(xiàn)該功能。 2.該具有入棧,出棧,清空堆棧,顯示當(dāng)前堆??倲?shù),
    的頭像 發(fā)表于 09-22 17:31 ?9407次閱讀
    如何用一個(gè)<b class='flag-5'>FB</b><b class='flag-5'>塊</b>在使用<b class='flag-5'>西門子</b>1200PLC時(shí)候?qū)崿F(xiàn)堆棧功能

    西門子PLC的功能和功能

    本文檔的主要內(nèi)容詳細(xì)介紹的是西門子PLC的功能和功能。
    發(fā)表于 11-09 17:49 ?64次下載
    <b class='flag-5'>西門子</b>PLC的功能和功能<b class='flag-5'>塊</b>

    西門子S7-300實(shí)現(xiàn)PID控制

    西門子S7-300實(shí)現(xiàn)PID控制說明。
    發(fā)表于 04-22 11:21 ?30次下載

    西門子PLC FB41中PID功能說明和調(diào)整方法

    西門子PLC FB41中PID功能說明和調(diào)整方法說明。
    發(fā)表于 04-22 11:48 ?13次下載

    西門子SCL語言編程系列-寫立方根FB

    由于西門子PLC本身并沒有帶求立方根的指令,我們用SCL來寫一個(gè)求立方根的FB
    的頭像 發(fā)表于 02-06 15:17 ?1960次閱讀
    <b class='flag-5'>西門子</b>SCL語言編程系列-寫立方根<b class='flag-5'>FB</b><b class='flag-5'>塊</b>

    西門子PLC S7-200 SMART PID控制功能分享

    S7-200 SMART采用了新型的設(shè)計(jì)方法,信號(hào)板可以擴(kuò)展通訊接口,數(shù)字量接口,模擬量接口,并且能合理的分配空間。西門子PLC S7-200 SMART具有PID控制功能,為用戶在自動(dòng)化驅(qū)動(dòng)
    的頭像 發(fā)表于 04-06 14:46 ?9732次閱讀

    PLC編程中OB、FC、FB、DB的使用原則

    西門子新加中包含組織(OB)、函數(shù)FB)、函數(shù)(FC)、數(shù)據(jù)(DB)
    發(fā)表于 05-24 15:01 ?1.6w次閱讀
    PLC編程中OB<b class='flag-5'>塊</b>、FC<b class='flag-5'>塊</b>、<b class='flag-5'>FB</b><b class='flag-5'>塊</b>、DB<b class='flag-5'>塊</b>的使用原則

    西門子S7-300(CPU315)做整流系統(tǒng)的PID控制

    電子發(fā)燒友網(wǎng)站提供《西門子S7-300(CPU315)做整流系統(tǒng)的PID控制.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 09:43 ?0次下載

    西門子PLC中OB的功能詳解

    西門子PLC(Programmable Logic Controller)作為工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備,其內(nèi)部功能強(qiáng)大、應(yīng)用廣泛。在西門子PLC中,OB(Organization Block,組織
    的頭像 發(fā)表于 06-15 11:27 ?4831次閱讀

    西門子增量式PID算法帶積分分離

    西門子增量式帶積分分離PID控制器是一種改進(jìn)的PID控制算法,它結(jié)合了增量式
    的頭像 發(fā)表于 12-07 09:34 ?256次閱讀
    <b class='flag-5'>西門子</b>增量式<b class='flag-5'>PID</b><b class='flag-5'>算法</b>帶積分分離

    西門子流量累計(jì)FB介紹

    西門子流量累計(jì)FB(Function Block)是一種專門為處理和計(jì)算流量數(shù)據(jù)而設(shè)計(jì)的功能,它通常在博途(TIA Portal)軟件中被創(chuàng)建和使用。該功能
    的頭像 發(fā)表于 12-19 10:28 ?196次閱讀
    <b class='flag-5'>西門子</b>流量累計(jì)<b class='flag-5'>FB</b><b class='flag-5'>塊</b>介紹