西门子SCL的平均值算法
前 言:
最近,剑指工控技术群里一些新入群的技术新人,一直找管理员所求TIA的LGF算法功能块的提取码。同时也针对一些功能块展开激烈的讨论,很多人都在讨论这些算法块内部程序是如何实现的?
针对于此剑指工控技术专家将为大家逐步展开并实现一些算法的SCL程序。
今天这篇文章主要是介绍平均值的算法程序。
//---- INPUTS I_RAW_VALUE Real Raw Value to be averaged I_NEW_SAMPLE_PULSE Bool New Value One-Shot Pulse I_RESET Bool Reset MAV Buffer to 0 //---- OUTPUTS Q_MAV Real Output //---- STATIC BUFFER Array[1..#CONST_MAV_PERIOD] of Real Buffer SUM Real Sum for Average i Int Pointer to Array FULL Bool Buffer Full //---- CODE IF #I_RESET THEN // Reset Buffer FOR #i:=1 TO #CONST_MAV_PERIOD DO #BUFFER[#i] := 0; END_FOR; #i := 1; #FULL := False; // Reset Full Pulse END_IF; IF #i < 1 OR #i > #CONST_MAV_PERIOD THEN // Test Index and reset to 0 if out of range #i := 0; END_IF; IF #I_NEW_SAMPLE_PULSE THEN // New Value? #SUM := #SUM + #I_RAW_VALUE - #BUFFER[#i]; // Update Sum - add newest // element and take out oldest // one from the buffer #BUFFER[#i] := #I_RAW_VALUE; // Store new raw value in // the buffer #Q_MAV := #SUM / #CONST_MAV_PERIOD; // Calculate Moving Average IF #i = #CONST_MAV_PERIOD THEN // Buffer Full #FULL := True; END_IF; i:=i+1; // Update Pointer END_IF; ENO := #FULL; // ENO when buffer full
欢迎大家加入剑指工控技术群共同进行技术讨论!
入群,请加管理员微信:
同时还有剑指工控VIP知识星球提供一些厂商级别内部资料!