您现在所在的是:

PLC论坛

回帖:4个,阅读:2121 [上一页] [1] [下一页]
1161
fnachille
文章数:139
年度积分:50
历史总积分:1161
注册时间:2016/8/31
发站内信
发表于:2018/9/2 13:05:22
#0楼
请教下下面的这段取平均值的怎么也看不懂,BMOV D531 D560 K19和后面这句BMOV D560 D530 K19,这两句传送命令是起什么作用的啊
附件 111.jpg



37949
cvlsam 版主
文章数:12474
年度积分:560
历史总积分:37949
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2018/9/2 15:45:34
#1楼
不清楚您什么地方看不懂,例如:
原先数据是这样的:D549内存放当前采集的数值。
附件 workpicture1.jpg

那么当第一次使用了两个BMOV指令指令后,当前值被保存在前一个寄存器中,结果变成了:





附件 workpicture2.jpg

当第二个循环开始后,结果变成了:




附件 workpicture3.jpg

最终整个D530~549均会填满数据。

利用一个缓冲区来复制到前一个地址起始区域来实现了字左移的功能。

Good Luck~
2097
zhanghaiw
文章数:54
年度积分:81
历史总积分:2097
注册时间:2015/1/26
发站内信
发表于:2018/9/2 16:20:32
#2楼
刚看了下,楼上的解释不错。我在补充点核心思想就是利用两个数组进性操作,一个N数组一个N+1数组。N数组主要负责保存最新的N个数据,并把它赋值给另N+1数组的前N位,这样第N+1位就可以保存最新的数据。其实最核心的思想就是构造一个先进先出的数据堆栈,希望对你有帮助。表情
5074
82252031
文章数:797
年度积分:50
历史总积分:5074
注册时间:2004/6/23
发站内信
发表于:2018/9/2 17:29:33
#3楼
翻译成人话就是:每隔0.1秒,对某外部模块的瞬时值进行读取,并对最新的20个值进行平均处理,方法应该有好多种。
此帖发自手机工控论坛
1161
fnachille
文章数:139
年度积分:50
历史总积分:1161
注册时间:2016/8/31
发站内信
发表于:2018/9/2 21:57:56
#4楼
回复 #1楼 cvlsam
终于明白了,就说后面的Bmov是做啥用了,还是没有下功夫去理解。如果一开始用版本给的Excel的方式来理解,可能还真能弄懂。
多谢版主,版主太给力了,谢谢表情

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004