加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線13185520415
        公司新聞
        流量累計計算--西門子FB塊的封裝-SCL語言
        發布時間: 2024-09-01 21:43 更新時間: 2024-11-22 08:00
        觀看流量累計計算--西門子FB塊的封裝-SCL語言視頻
        目前,具有眾多不同品牌流量積算儀用來測量工業現場液體或者固體的瞬時流量,然后通過4-20mA信號傳遞給PLC,作為控制或監控的數據標準。PLC根據瞬時流量積算一定時間內的累積流量,對于流程工業控制領域液體或固體流量的數據分析和產量計算應用具有重要的意義。在西門子PLC中實現流量累計計算是一個常見的需求,尤其是在處理流體物料的應用中。下面我將提供一個基本的指導流程和一些關鍵步驟,以幫助您在西門子S7-1200 PLC上實現流量累計計算。一、基礎原理

        流量累計通常涉及瞬時流量的測量,并將其轉換為累計流量。瞬時流量可以是通過模擬量輸入(如4-20mA電流信號)或數字量輸入(如脈沖信號)獲得的。

        二、實現步驟
        1. 確定輸入類型:

        2. 如果是模擬量輸入,需要配置相應的模擬量輸入模塊(如SM1231),并確保正確設置了量程和單位。

        3. 如果是脈沖輸入,則需要配置高速計數器(HSC)來讀取脈沖頻率,并計算瞬時流量。

        4. 瞬時流量計算:

        5. 對于模擬量輸入,PLC會自動將輸入信號轉換為工程單位(如L/min或m3/h)。

        6. 對于脈沖輸入,需要根據脈沖頻率和脈沖系數來計算瞬時流量。

        7. 流量累計:

        8. 使用定時中斷(如OB30)來定期更新累計流量或者也可以用定時器來觸發本次主要是以定時器為例來介紹。

        9. 將得到的體積流量累加到累計流量寄存器中。

        三、FB塊的封裝引腳介紹、源碼展示

        (一)FB塊的封裝

               run:BOOL;     //運行時間

        flow_VAL:REAL;    //瞬時流量輸入m3/H

        Reset:BOOL;    //流量清零

        Cycle_ms:TIME;  //采樣時間

                flow_out_put:REAL;  //累計流量輸出

                Array_length:INT;  //數組長度

        Filter_strength:INT;  //濾波強度

        (二)源碼展示

        IF #run = TRUE  THEN    #relay := 1;END_IF;
        IF #run = FALSE THEN    #relay := 0;    #initial := 0;END_IF;
            #flow_VAL_1 := #flow_VAL / 36000;    //采集的是M3/H 轉換成 M3/S        IF #initial = 1 AND #relay = 1 THEN    //初始化完成后采集                FOR #i := 1 TO #Filter_Length BY 1 DO                        #FLOW_DATA[#i] := #flow_VAL_1;                    END_FOR;            END_IF;        IF #initial = 0 AND #relay = 1 THEN    //初始流量采集                FOR #i := 1 TO #Array_length BY 1 DO                        #FLOW_DATA[#i] := #flow_VAL_1;                    END_FOR;        #initial := 1;    END_IF;        #FLOW_DATA_MAX := 0;     //Zui大值濾波    FOR #i := 1 TO #Array_length BY 1 DO                IF #FLOW_DATA_MAX < #FLOW_DATA[#i] THEN                        #FLOW_DATA_MAX := #FLOW_DATA[#i];                    END_IF;            END_FOR;        #FLOW_DATA_MIN := #FLOW_DATA_MAX;     //Zui小值濾波        FOR #i := 1 TO #Array_length BY 1 DO                IF #FLOW_DATA_MIN > #FLOW_DATA[#i] THEN                        #FLOW_DATA_MIN := #FLOW_DATA[#i];                    END_IF;            END_FOR;        #FLOW_DATA_SUM := 0;      //數據求和求平均部分        FOR #i := 1 TO #Array_length BY 1 DO                #FLOW_DATA_SUM := #FLOW_DATA[#i] + #FLOW_DATA_SUM;            END_FOR;        #FLOW_DATA_Average := (#FLOW_DATA_SUM - #FLOW_DATA_MIN - #FLOW_DATA_MAX) / (#Array_length - 2);      FOR #i := 1 TO (#Array_length - #Filter_Length) BY 1 DO                #FLOW_DATA_1[#i] := #FLOW_DATA[#i];            END_FOR;        FOR #i := 1 TO (#Array_length - #Filter_Length) BY 1 DO                #FLOW_DATA[#i + #Filter_Length] := #FLOW_DATA_1[#i];            END_FOR;        //數字濾波強度計算        IF #Array_length >= 10 THEN                IF #Filter_strength > 3 THEN                        #Filter_strength := 3;                    END_IF;                #Filter_Length := (#Array_length / 10) * 2 * #Filter_strength;            END_IF;        IF #Array_length < 10 THEN                IF #Filter_strength > 2 THEN                        #Filter_strength := 2;                    END_IF;                        #Filter_Length := 2 * #Filter_strength;            END_IF;        #IEC_Timer_0_Instance(IN := NOT #IEC_Timer_0_Instance.Q,                          PT := #Cycle_ms);        IF #IEC_Timer_0_Instance.Q THEN                #time_data := TIME_TO_DINT(#Cycle_ms);        #Cycle_Real := DINT_TO_REAL(#time_data);                #Accum := (#Last_Value + #flow_VAL_1) * #Cycle_Real / 2 + #Accum;                #flow_out_put := #Accum;        #Last_Value := #flow_VAL_1;     END_IF;     IF #Reset THEN                     #Last_Value := 0.000000E000;         #Accum := 0.000000E000;         #flow_out_put := 0.000000E000;              END_IF;四、結論對只有瞬時流量輸出的流量計,才考慮在PLC中進行流量累積加法運算。在PLC內做流量累積的時候,不應使用定時器來做,因為定時器受到PLC掃描周期的影響,沒法做到十分jingque,累加出來數據的誤差很大。在實際應用中吧此程序放到循環中斷里即可。


        聯系方式

        • 電  話:13510737515
        • 聯系人:董海波
        • 手  機:13185520415
        • 微  信:13185520415