在使用s7-1200PLC編寫程序的時候,如果項目上需要用到流量累積功能,但是本款PLC并沒有自帶流量累積功能塊。這時,就需要我們組態工程師自己編寫一個具有流量累積功能程序,或者將該程序封裝為FB塊或者FC塊。本文以封裝FB塊為例。
第一步:在程序塊目錄下單擊添加新塊,彈出添加新塊對話框,選中FB函數塊,在名稱欄填上需要命名的名字,如:Totalizer,選擇編程需要用的編程語言,本文以SCL語言講解,FB塊的編號可以通過手動或自動生成,然后單擊確認,如下圖所示
第二步:打開新建功能塊,并建立臨時變量,如下圖所示
第三步:程序編寫,如下圖所示:
程序編寫完成后,進行編譯,編譯沒有錯誤時,在FC(FC2,FLOWACCUM)中調用該FB塊,最后在OB30中斷塊中調用該FB塊。
第四步:在FC中調用名字為“Totalizer”的FB塊,并對輸入輸出參數賦值,如下圖所示
再在OB30中調用功能塊,OB30中斷塊是循環中斷塊,循環時間為100ms,如下圖所示
雙擊循環中斷OB30中斷塊,在中斷塊中調用FC2(FLOWACCUM)功能塊,如下圖所示
程序解讀:
變量定義:
變量名:Reset,數據類型:Bool,作用:累積清零
變量名:Accum,數據類型:Real,作用:存儲累積值
變量名:Total,數據類型:Real,作用:存放累計值
變量名:Intervall,數據類型:TIME,作用:流量單位中的時間,如m3/h,則:變量為1h=3600s,變量單位:秒
變量名:Intervall_DInt,數據類型:Dint,作用:存儲Intervall轉換為Dint數據類型后的值
變量名:Intervall_Real,數據類型:Real,作用:存儲Intervall_DInt轉換為Real數據類型后的值
變量名:Cycle,數據類型:TIME,作用:存儲程序循環時間,單位:秒
變量名:Cycle_DInt,數據類型:Dint,作用:存儲Cycle轉換為Dint數據類型后的值
變量名:Cycle_Real,數據類型:Real,作用:存儲Cycle_DInt轉換為Real數據類型后的值
程序代碼:
IF #Reset = true THEN //條件為真時
#Accum := 0.000000e000; //累積清零
#Total := 0.000000e000; //累積清零
ELSE
#Intervall_DInt := TIME_TO_DINT(#Intervall);//將時間型變量Intervall轉換為雙整型數據,并存在變量中
#Intervall_Real := DINT_TO_REAL(#Intervall_DInt);//將雙整型數據轉換為實型數據,并存在變量中
#Cycle_DInt := TIME_TO_DINT(#Cycle);//將時間型變量Cycle轉換為雙整型數據,并存在變量中,本例為0.1s
#Cycle_Real := DINT_TO_REAL(#Cycle_DInt);//將雙整型數據轉換為實型數據,并存在變量中
#Accum := ((#Value * #Cycle_Real) / #Intervall_Real) + #Accum;//累積計算
#Total := #Accum; //Kopiere Ergebnis nach #Total / Copy result to #Total.//累計值傳遞
END_IF;
原文標題:如何在S7-1200PLC上實現流量累加算法講解
文章出處:【微信公眾號:PLC技術圈】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
plc
+關注
關注
5036文章
13914瀏覽量
474456 -
編程
+關注
關注
88文章
3689瀏覽量
95237
原文標題:如何在S7-1200PLC上實現流量累加算法講解
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
西門子PLC(S7-1200/1500/300/400)的數據采集與監控方案
西門子S7-1200 G2的7大亮點及最新功能

Brooks流量計通過HT1S-ECM-PNS與西門子1200PLC通訊

S7-200Smart與S7-1200通過Modbus協議對接到上位機

can轉Profinet網關轉換:S7-1200PLC與施耐德變頻器間的通信實現

西門子S7 PLC通過深控技術無點表工業網關實現數據采集與智能決策方案
如何在 樹莓派 上編寫和運行 C 語言程序?

零基礎入門:如何在樹莓派上編寫和運行Python程序?

EtherCAT轉ProfiNet西門子1200PLC與伺服電機通訊案例全解

Profinet轉EtherCAT深度解讀網關模塊如何協議轉換賦能西門子PLC與伺服驅動高效協作案例?

cubemx生成HAL庫+FreeRTOS,當編寫程序時卻代碼無法自動提示怎么解決?
分布式IO模塊與S7-1200 PLC:打造高效分揀系統的新引擎

如何選擇適合的西門子S7-1200系列PLC型號?

基于 EtherCAT 轉 ProfiNet 網關達成西門子 1200 PLC 與伺服電機通訊連接的應用實例

評論