在使用s7-1200PLC編寫程序的時候,如果項目上需要用到流量累積功能,但是本款PLC并沒有自帶流量累積功能塊。這時,就需要我們組態(tài)工程師自己編寫一個具有流量累積功能程序,或者將該程序封裝為FB塊或者FC塊。本文以封裝FB塊為例。
第一步:在程序塊目錄下單擊添加新塊,彈出添加新塊對話框,選中FB函數(shù)塊,在名稱欄填上需要命名的名字,如:Totalizer,選擇編程需要用的編程語言,本文以SCL語言講解,F(xiàn)B塊的編號可以通過手動或自動生成,然后單擊確認,如下圖所示
第二步:打開新建功能塊,并建立臨時變量,如下圖所示
第三步:程序編寫,如下圖所示:
程序編寫完成后,進行編譯,編譯沒有錯誤時,在FC(FC2,FLOWACCUM)中調(diào)用該FB塊,最后在OB30中斷塊中調(diào)用該FB塊。
第四步:在FC中調(diào)用名字為“Totalizer”的FB塊,并對輸入輸出參數(shù)賦值,如下圖所示
再在OB30中調(diào)用功能塊,OB30中斷塊是循環(huán)中斷塊,循環(huán)時間為100ms,如下圖所示
雙擊循環(huán)中斷OB30中斷塊,在中斷塊中調(diào)用FC2(FLOWACCUM)功能塊,如下圖所示
程序解讀:
變量定義:
變量名:Reset,數(shù)據(jù)類型:Bool,作用:累積清零
變量名:Accum,數(shù)據(jù)類型:Real,作用:存儲累積值
變量名:Total,數(shù)據(jù)類型:Real,作用:存放累計值
變量名:Intervall,數(shù)據(jù)類型:TIME,作用:流量單位中的時間,如m3/h,則:變量為1h=3600s,變量單位:秒
變量名:Intervall_DInt,數(shù)據(jù)類型:Dint,作用:存儲Intervall轉(zhuǎn)換為Dint數(shù)據(jù)類型后的值
變量名:Intervall_Real,數(shù)據(jù)類型:Real,作用:存儲Intervall_DInt轉(zhuǎn)換為Real數(shù)據(jù)類型后的值
變量名:Cycle,數(shù)據(jù)類型:TIME,作用:存儲程序循環(huán)時間,單位:秒
變量名:Cycle_DInt,數(shù)據(jù)類型:Dint,作用:存儲Cycle轉(zhuǎn)換為Dint數(shù)據(jù)類型后的值
變量名:Cycle_Real,數(shù)據(jù)類型:Real,作用:存儲Cycle_DInt轉(zhuǎn)換為Real數(shù)據(jù)類型后的值
程序代碼:
IF #Reset = true THEN //條件為真時
#Accum := 0.000000e000; //累積清零
#Total := 0.000000e000; //累積清零
ELSE
#Intervall_DInt := TIME_TO_DINT(#Intervall);//將時間型變量Intervall轉(zhuǎn)換為雙整型數(shù)據(jù),并存在變量中
#Intervall_Real := DINT_TO_REAL(#Intervall_DInt);//將雙整型數(shù)據(jù)轉(zhuǎn)換為實型數(shù)據(jù),并存在變量中
#Cycle_DInt := TIME_TO_DINT(#Cycle);//將時間型變量Cycle轉(zhuǎn)換為雙整型數(shù)據(jù),并存在變量中,本例為0.1s
#Cycle_Real := DINT_TO_REAL(#Cycle_DInt);//將雙整型數(shù)據(jù)轉(zhuǎn)換為實型數(shù)據(jù),并存在變量中
#Accum := ((#Value * #Cycle_Real) / #Intervall_Real) + #Accum;//累積計算
#Total := #Accum; //Kopiere Ergebnis nach #Total / Copy result to #Total.//累計值傳遞
END_IF;
原文標題:如何在S7-1200PLC上實現(xiàn)流量累加算法講解
文章出處:【微信公眾號:PLC技術圈】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
plc
+關注
關注
5051文章
14595瀏覽量
486932 -
編程
+關注
關注
90文章
3716瀏覽量
97190
原文標題:如何在S7-1200PLC上實現(xiàn)流量累加算法講解
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術圈】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
西門子S7-1200和S7-1500 PLC系列模擬量傳感器怎么接線
伺服伴侶,Profinet轉(zhuǎn)DeviceNet網(wǎng)關通訊保障后連接伺服驅(qū)動器與西門子S7-1200PLC
西門子S7-1200 MODBUS RTU通訊溫度控制器和變頻器教程
Profinet轉(zhuǎn)CCLINK西門子S7-1200PLC與CCLINK伺服電機多軸同步控制解決方案
西門子S7-200PLC與S7-1200PLC以太網(wǎng)通訊及PPI集成實現(xiàn)工業(yè)機械控制
基于Modbus TCP的WinCC監(jiān)控S7-1200/200SMT應用實例
PLC以太網(wǎng)通訊模塊實現(xiàn):西門子S7-300與S7-1200、觸摸屏及變頻器通訊案例
西門子S7-300PLC借助于MPI轉(zhuǎn)以太網(wǎng)模塊同時和S7-1200PLC、觸摸屏以及ModbusRTU協(xié)議的變頻器通訊案例
工業(yè)自動化通信難題破解:Modbus RTU轉(zhuǎn)Profinet網(wǎng)關在渦街流量計與西門子S7-1200 PLC系統(tǒng)集成中的應用
Modbus RTU轉(zhuǎn)Profinet網(wǎng)關接渦街液體流量計到西門子1200 PLC系統(tǒng)
西門子PLC(S7-1200/1500/300/400)的數(shù)據(jù)采集與監(jiān)控方案
Brooks流量計通過HT1S-ECM-PNS與西門子1200PLC通訊
can轉(zhuǎn)Profinet網(wǎng)關轉(zhuǎn)換:S7-1200PLC與施耐德變頻器間的通信實現(xiàn)
EtherCAT轉(zhuǎn)ProfiNet西門子1200PLC與伺服電機通訊案例全解
如何在S7-1200PLC編寫程序時實現(xiàn)流量累積?
評論