亚洲+欧美+日韩+综合aⅴ,日本添下边视频全过程,四虎永久在线精品免费AV,肥白大屁股BBWBBWHD

銅馬實(shí)業(yè)[kklgs.com.cn]提供電力安裝、電力運(yùn)維、電力設(shè)計(jì)、電力施工、元器件采購等全方位服務(wù)!
186 8073 6169

銅馬提供24小時(shí)優(yōu)質(zhì)電力咨詢服務(wù)

動(dòng)態(tài)新聞 news
您現(xiàn)在的位置:首頁 > 動(dòng)態(tài)新聞 > 電力百科 > 用PLC實(shí)現(xiàn)流量累加算法講解
重慶電力安裝公司

用PLC實(shí)現(xiàn)流量累加算法講解

發(fā)布時(shí)間:2019/06/19 電力百科 標(biāo)簽:PLC流量累加瀏覽次數(shù):4083

在使用s7-1200PLC編寫程序的時(shí)候,如果項(xiàng)目上需要用到流量累積功能,但是本款PLC并沒有自帶流量累積功能塊。這時(shí),就需要我們組態(tài)工程師自己編寫一個(gè)具有流量累積功能程序,或者將該程序封裝為FB塊或者FC塊。本文以封裝FB塊為例。

第一步:在程序塊目錄下單擊添加新塊,彈出添加新塊對話框,選中FB函數(shù)塊,在名稱欄填上需要命名的名字,如:Totalizer,選擇編程需要用的編程語言,本文以SCL語言講解,F(xiàn)B塊的編號可以通過手動(dòng)或自動(dòng)生成,然后單擊確認(rèn),如下圖所示

第二步:打開新建功能塊,并建立臨時(shí)變量,如下圖所示

第三步:程序編寫,如下圖所示:

程序編寫完成后,進(jìn)行編譯,編譯沒有錯(cuò)誤時(shí),在FC(FC2,FLOWACCUM)中調(diào)用該FB塊,最后在OB30中斷塊中調(diào)用該FB塊。

第四步:在FC中調(diào)用名字為“Totalizer”的FB塊,并對輸入輸出參數(shù)賦值,如下圖所示

再在OB30中調(diào)用功能塊,OB30中斷塊是循環(huán)中斷塊,循環(huán)時(shí)間為100ms,如下圖所示

雙擊循環(huán)中斷OB30中斷塊,在中斷塊中調(diào)用FC2(FLOWACCUM)功能塊,如下圖所示

程序解讀:

變量定義:

變量名:Reset,數(shù)據(jù)類型:Bool,作用:累積清零

變量名:Accum,數(shù)據(jù)類型:Real,作用:存儲(chǔ)累積值

變量名:Total,數(shù)據(jù)類型:Real,作用:存放累計(jì)值

變量名:Intervall,數(shù)據(jù)類型:TIME,作用:流量單位中的時(shí)間,如m3/h,則:變量為1h=3600s,變量單位:秒

變量名:Intervall_DInt,數(shù)據(jù)類型:Dint,作用:存儲(chǔ)Intervall轉(zhuǎn)換為Dint數(shù)據(jù)類型后的值

變量名:Intervall_Real,數(shù)據(jù)類型:Real,作用:存儲(chǔ)Intervall_DInt轉(zhuǎn)換為Real數(shù)據(jù)類型后的值

變量名:Cycle,數(shù)據(jù)類型:TIME,作用:存儲(chǔ)程序循環(huán)時(shí)間,單位:秒

變量名:Cycle_DInt,數(shù)據(jù)類型:Dint,作用:存儲(chǔ)Cycle轉(zhuǎn)換為Dint數(shù)據(jù)類型后的值

變量名:Cycle_Real,數(shù)據(jù)類型:Real,作用:存儲(chǔ)Cycle_DInt轉(zhuǎn)換為Real數(shù)據(jù)類型后的值

程序代碼:

IF #Reset = true THEN //條件為真時(shí)

#Accum := 0.000000e000; //累積清零

#Total := 0.000000e000; //累積清零

ELSE

#Intervall_DInt := TIME_TO_DINT(#Intervall);//將時(shí)間型變量Intervall轉(zhuǎn)換為雙整型數(shù)據(jù),并存在變量中

#Intervall_Real := DINT_TO_REAL(#Intervall_DInt);//將雙整型數(shù)據(jù)轉(zhuǎn)換為實(shí)型數(shù)據(jù),并存在變量中

#Cycle_DInt := TIME_TO_DINT(#Cycle);//將時(shí)間型變量Cycle轉(zhuǎn)換為雙整型數(shù)據(jù),并存在變量中,本例為0.1s

#Cycle_Real := DINT_TO_REAL(#Cycle_DInt);//將雙整型數(shù)據(jù)轉(zhuǎn)換為實(shí)型數(shù)據(jù),并存在變量中

#Accum := ((#Value * #Cycle_Real) / #Intervall_Real) + #Accum;//累積計(jì)算

#Total := #Accum; //Kopiere Ergebnis nach #Total / Copy result to #Total.//累計(jì)值傳遞

END_IF;