在使用S7-1200模擬量輸入模塊讀取現場信號時,除了外圍硬件的濾波外,建議在程序中加入濾波程序,這樣可以過濾掉信號的不正常的突變,濾波算法有多種,這裡舉一個比較常用也好用的例子,該例子是用梯形圖設計,直觀易懂,就是略顯繁瑣,如果想簡練,可以考慮用SCL語句來完成,後續發SCL的例子。
2. 初始化。
3. 讀入新數據,舊數據逐一堆棧。
4. 查找最大最小值。
5. 求累加和。
6. 濾掉最大最小值。
7. 求濾波值。
8. 在時間中斷程序中調用就可以,中斷時間根據自己的要求設置。
9. 有幾點注意:
數據類型WORD和INT的區別,WORD滅有正負,數據範圍0~65535,INT有正負-32768~32767,雙極性輸入注意正負。
INT數據累加溢出的問題,如果用來做平均的數據比較多,要注意累加和數據溢出的問題,此處累加和使用了DINT的數據類型。
指令MOVE和CONVERT的區別,INT向DINT轉化時,使用CONVERT而不要使用MOVE。
閱讀更多 會發光的太陽 的文章