liaohp
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 113 個(gè)
工控威望: 202 點(diǎn)
下載積分: 612 分
在線時(shí)間: 113(小時(shí))
注冊(cè)時(shí)間: 2011-09-28
最后登錄: 2024-10-31
查看liaohp的 主題 / 回貼
樓主  發(fā)表于: 2021-10-19 22:20
描述:主程序
圖片:
描述:子程序
圖片:
應(yīng)用背景:采集到的模擬量 總是變化很大,我想做一個(gè)相當(dāng)于濾波的程序,原理就是把 數(shù)據(jù)data_in  累加比如1000次,然后 再求平均值,但是我懷疑在  for next循環(huán) 執(zhí)行過(guò)程中,外部的數(shù)據(jù)改變了,可能不會(huì)對(duì)for next內(nèi)部 生效,又或者 基于PLC的原理,會(huì)不會(huì)在執(zhí)行for next內(nèi)部程序的時(shí)候,根本就不會(huì)去 處理 for next外部的其他程序。所以想請(qǐng)教各位。
suegu2
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 319 個(gè)
工控威望: 584 點(diǎn)
下載積分: 6619 分
在線時(shí)間: 274(小時(shí))
注冊(cè)時(shí)間: 2012-09-22
最后登錄: 2024-11-29
查看suegu2的 主題 / 回貼
1樓  發(fā)表于: 2021-10-20 08:39
我覺(jué)得可以用定時(shí)中斷來(lái)處理
cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員

精華主題: 3 篇
發(fā)帖數(shù)量: 6777 個(gè)
工控威望: 38380 點(diǎn)
下載積分: 4213 分
在線時(shí)間: 9537(小時(shí))
注冊(cè)時(shí)間: 2006-09-13
最后登錄: 2024-12-23
查看cvlsam的 主題 / 回貼
2樓  發(fā)表于: 2021-10-20 08:56
引用
引用樓主liaohp于2021-10-19 22:20發(fā)表的 關(guān)于for循環(huán)內(nèi)部 數(shù)據(jù)如果發(fā)生改變 的執(zhí)行結(jié)果 討教 :
應(yīng)用背景:采集到的模擬量 總是變化很大,我想做一個(gè)相當(dāng)于濾波的程序,原理就是把 數(shù)據(jù)data_in  累加比如1000次,然后 再求平均值,但是我懷疑在  for next循環(huán) 執(zhí)行過(guò)程中,外部的數(shù)據(jù)改變了,可能不會(huì)對(duì)for next內(nèi)部 生效,又或者 基于PLC的原理,會(huì)不會(huì)在執(zhí)行for next內(nèi)部程序的時(shí)候,根本就不會(huì)去 處理 for next外部的其他程序。所以想請(qǐng)教各位。



FOR循環(huán)在當(dāng)前周期內(nèi)執(zhí)行完畢,因此,你需要首先采集好1000次數(shù)據(jù),然后通過(guò)FOR循環(huán)進(jìn)行處理.

Good Luck~
wenliang
擡頭白雲(yún)悠悠,前竟一片黯愁……
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 716 個(gè)
工控威望: 910 點(diǎn)
下載積分: 43033 分
在線時(shí)間: 548(小時(shí))
注冊(cè)時(shí)間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
3樓  發(fā)表于: 2021-10-20 09:13
大師 威武
zjw424260912
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 93 個(gè)
工控威望: 125 點(diǎn)
下載積分: 731 分
在線時(shí)間: 66(小時(shí))
注冊(cè)時(shí)間: 2019-05-16
最后登錄: 2024-12-20
查看zjw424260912的 主題 / 回貼
4樓  發(fā)表于: 2021-10-20 09:33
你這個(gè)是匯川的H5U?   
小侯
小侯
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 482 個(gè)
工控威望: 2612 點(diǎn)
下載積分: 8103 分
在線時(shí)間: 507(小時(shí))
注冊(cè)時(shí)間: 2008-10-17
最后登錄: 2024-12-09
查看小侯的 主題 / 回貼
5樓  發(fā)表于: 2021-10-20 09:56
一般迴圈都是連續(xù)執(zhí)行
比如1~100連加總和等
如果是採(cǎi)樣平均應(yīng)該是以變數(shù)將每次執(zhí)行時(shí)的採(cǎi)樣對(duì)象以變址的方式另存暫存
然後將暫存1~暫存100的數(shù)值以迴圈方式進(jìn)行總和平均
或是看使用的PLC是否有數(shù)值平均的指令
像三菱的MEAN指令
我看到你了
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 373 個(gè)
工控威望: 619 點(diǎn)
下載積分: 491 分
在線時(shí)間: 156(小時(shí))
注冊(cè)時(shí)間: 2018-05-02
最后登錄: 2024-09-12
查看我看到你了的 主題 / 回貼
6樓  發(fā)表于: 2021-10-20 11:29
數(shù)據(jù)調(diào)動(dòng)如果大,你就算取平均值對(duì)整體還是有影響的。不如data_in前做一個(gè)上下限的數(shù)據(jù)過(guò)濾,超太多的數(shù)據(jù)直接不要
楓落云端
施主,腳抬一下
級(jí)別: 略有小成

精華主題: 0
發(fā)帖數(shù)量: 341 個(gè)
工控威望: 465 點(diǎn)
下載積分: 1547 分
在線時(shí)間: 414(小時(shí))
注冊(cè)時(shí)間: 2017-10-10
最后登錄: 2024-11-29
查看楓落云端的 主題 / 回貼
7樓  發(fā)表于: 2021-10-20 11:45
一般PLC的掃描周期在10ms內(nèi)吧(不排除步數(shù)大的程序超過(guò)10ms,畢竟少數(shù),就先不討論),你能確定10ms內(nèi)模擬量波動(dòng)值非常大?還是說(shuō)模擬量模塊的采集周期比PLC的10ms掃描周期小得多,按1000份算,至少0.01ms也就是10μs的采樣頻率,模擬量模塊有這么快的速度嗎?就算有這么快,模擬量到PLC是否也能這個(gè)快給你接收1000份采樣值。
如果以上都沒(méi)有,那么10ms內(nèi)累計(jì)的這個(gè)采樣值的就會(huì)都是一個(gè)數(shù)值,你再怎么累計(jì)1000份再平均都是沒(méi)有用的。
liaohp
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 113 個(gè)
工控威望: 202 點(diǎn)
下載積分: 612 分
在線時(shí)間: 113(小時(shí))
注冊(cè)時(shí)間: 2011-09-28
最后登錄: 2024-10-31
查看liaohp的 主題 / 回貼
8樓  發(fā)表于: 2021-10-22 10:23
引用
引用第4樓zjw424260912于2021-10-20 09:33發(fā)表的  :
你這個(gè)是匯川的H5U?   

是的
liaohp
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 113 個(gè)
工控威望: 202 點(diǎn)
下載積分: 612 分
在線時(shí)間: 113(小時(shí))
注冊(cè)時(shí)間: 2011-09-28
最后登錄: 2024-10-31
查看liaohp的 主題 / 回貼
9樓  發(fā)表于: 2021-10-22 10:35
引用
引用第7樓楓落云端于2021-10-20 11:45發(fā)表的  :
一般PLC的掃描周期在10ms內(nèi)吧(不排除步數(shù)大的程序超過(guò)10ms,畢竟少數(shù),就先不討論),你能確定10ms內(nèi)模擬量波動(dòng)值非常大?還是說(shuō)模擬量模塊的采集周期比PLC的10ms掃描周期小得多,按1000份算,至少0.01ms也就是10μs的采樣頻率,模擬量模塊有這么快的速度嗎?就算有這么快,模擬量到PLC是否也能這個(gè)快給你接收1000份采樣值。
如果以上都沒(méi)有,那么10ms內(nèi)累計(jì)的這個(gè)采樣值的就會(huì)都是一個(gè)數(shù)值,你再怎么累計(jì)1000份再平均都是沒(méi)有用的。


不是10ms內(nèi)波動(dòng)大,是我肉眼看波動(dòng)大,想處理平滑點(diǎn)。
模擬量采集周期我設(shè)置為50hz,也就是0.02s,20ms,假如PLC掃描周期為10ms,也就是2個(gè)周期 才檢測(cè)到模擬量變化,我現(xiàn)在的做法是每個(gè)掃描周期記錄數(shù)據(jù),然后多個(gè)周期求平均值,有些效果
楓落云端
施主,腳抬一下
級(jí)別: 略有小成

精華主題: 0
發(fā)帖數(shù)量: 341 個(gè)
工控威望: 465 點(diǎn)
下載積分: 1547 分
在線時(shí)間: 414(小時(shí))
注冊(cè)時(shí)間: 2017-10-10
最后登錄: 2024-11-29
查看楓落云端的 主題 / 回貼
10樓  發(fā)表于: 2021-10-22 12:46
其實(shí)我想說(shuō)你的程序里算法已經(jīng)有問(wèn)題了,程序里邏輯就是一個(gè)PLC掃描周期里用FOR循環(huán)采集N次,再平均。
跟你實(shí)際需求的長(zhǎng)時(shí)間多次采集求平均已經(jīng)不同了。