zxsxy8
級(jí)別: 正式會(huì)員
|
自己用SCL編寫(xiě)了一個(gè)流量累計(jì)塊,實(shí)現(xiàn)功能如下: 毫秒流量累積值計(jì)數(shù)達(dá)到Hz 時(shí)(比如循環(huán)中斷為100ms,Hz=10時(shí),把毫秒流量累積值傳送給秒累計(jì)值,同時(shí)清零),秒流量累計(jì)值到達(dá)60時(shí),傳送給分鐘流量累計(jì)值,以此類推計(jì)算最終的流量累積輸出。程序如下,執(zhí)行時(shí)總是不能正確輸出,請(qǐng)大俠們指教! Input AIW_IN Int 流量計(jì)瞬時(shí)流量模擬值 Reset Bool 為1時(shí),累積值清零 Hz Int 每秒采樣次數(shù) Unit_V Real 流量計(jì)最大流量值 Output Accu_Valu Real 流量累積輸出 Unit_C Real 瞬時(shí)流量值工程量 InOut ms_V Real 毫秒累積流量 s_V Real 秒累積流量 min_V Real 分鐘累積流量 h_V Real 小時(shí)累積流量 d_V Real 天累積流量 Static ms Int 毫秒計(jì)數(shù) s Int 秒計(jì)數(shù) min Int 分鐘計(jì)數(shù) h Int 小時(shí)計(jì)數(shù) d Int 天計(jì)數(shù) Unit_C_S Real 采樣時(shí)間流量值 //瞬時(shí)模擬量值轉(zhuǎn)換為瞬時(shí)工程量值 #Unit_C:=SCALE_X(MIN:=0.0, VALUE:=NORM_X(MIN := 0, VALUE := #AIW_IN, MAX := 27648), MAX:=#Unit_V); //瞬時(shí)工程量值轉(zhuǎn)為采樣時(shí)間流量值 #Unit_C_S := #Unit_C / 36000.0; //毫秒流量累積 #ms_V := #ms_V+#Unit_C_S; #ms += 1; IF #ms =#Hz THEN #s += 1; #s_V := #ms_V; #ms := 0; #ms_V := 0.0; END_IF; //秒流量累積 #s_V := #s_V+ #ms_V; IF #s = 60 THEN #min += 1; #min_V := #s_V; #s := 0; #s_V := 0.0; END_IF; //分鐘流量累積 #min_V := #min_V +#s_V; IF #min = 60 THEN #h += 1; #h_V := #min_V; #min := 0; #min_V := 0.0; END_IF; //小時(shí)流量累積 #h_V := #h_V+#min_V; IF #h = 24 THEN #d += 1; #d_V := #h_V; #h := 0; #h_V := 0.0; END_IF; #d_V += #h_V; //清零 IF #Reset = 1 THEN #ms := 0; #ms_V := 0.0; #s := 0; #s_V := 0.0; #min := 0; #min_V := 0.0; #h := 0; #h_V := 0.0; #d_V := 0.0; #Accu_Value := 0.0; END_IF; //流量累積輸出 #Accu_Value := (#ms_V + #s_V + #min_V + #h_V+ #d_V); [ 此帖被zxsxy8在2023-06-10 16:45重新編輯 ] |
---|---|
|