liaohp
級別: 略有小成
|
描述:主程序
圖片:
描述:子程序
圖片: 應(yīng)用背景:采集到的模擬量 總是變化很大,我想做一個相當(dāng)于濾波的程序,原理就是把 數(shù)據(jù)data_in 累加比如1000次,然后 再求平均值,但是我懷疑在 for next循環(huán) 執(zhí)行過程中,外部的數(shù)據(jù)改變了,可能不會對for next內(nèi)部 生效,又或者 基于PLC的原理,會不會在執(zhí)行for next內(nèi)部程序的時候,根本就不會去 處理 for next外部的其他程序。所以想請教各位。 |
---|---|
|
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
FOR循環(huán)在當(dāng)前周期內(nèi)執(zhí)行完畢,因此,你需要首先采集好1000次數(shù)據(jù),然后通過FOR循環(huán)進(jìn)行處理. Good Luck~ |
---|---|
|
小侯
小侯
級別: 工控俠客
|
一般迴圈都是連續(xù)執(zhí)行 比如1~100連加總和等 如果是採樣平均應(yīng)該是以變數(shù)將每次執(zhí)行時的採樣對象以變址的方式另存暫存 然後將暫存1~暫存100的數(shù)值以迴圈方式進(jìn)行總和平均 或是看使用的PLC是否有數(shù)值平均的指令 像三菱的MEAN指令 |
---|---|
|
我看到你了
級別: 家園?
|
數(shù)據(jù)調(diào)動如果大,你就算取平均值對整體還是有影響的。不如data_in前做一個上下限的數(shù)據(jù)過濾,超太多的數(shù)據(jù)直接不要 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
|
一般PLC的掃描周期在10ms內(nèi)吧(不排除步數(shù)大的程序超過10ms,畢竟少數(shù),就先不討論),你能確定10ms內(nèi)模擬量波動值非常大?還是說模擬量模塊的采集周期比PLC的10ms掃描周期小得多,按1000份算,至少0.01ms也就是10μs的采樣頻率,模擬量模塊有這么快的速度嗎?就算有這么快,模擬量到PLC是否也能這個快給你接收1000份采樣值。 如果以上都沒有,那么10ms內(nèi)累計的這個采樣值的就會都是一個數(shù)值,你再怎么累計1000份再平均都是沒有用的。 |
---|---|
|
liaohp
級別: 略有小成
|
是的 |
---|---|
|
liaohp
級別: 略有小成
|
不是10ms內(nèi)波動大,是我肉眼看波動大,想處理平滑點。 模擬量采集周期我設(shè)置為50hz,也就是0.02s,20ms,假如PLC掃描周期為10ms,也就是2個周期 才檢測到模擬量變化,我現(xiàn)在的做法是每個掃描周期記錄數(shù)據(jù),然后多個周期求平均值,有些效果 |
---|---|
|