求平均值问题

我是新手,正在自学PLC,现做了一个题目恳请各位师傅帮忙看看我做的对吗?是否还有其它方法,请给个思路,谢谢!!
       求出从VB100开始的20个字型数据的平均值
 LD     SM0.1
 MOVD   0, AC0
 MOVW   0, AC0
 MOVB   0, VB10
 LDB<=  VB100, 19
 LPS
 MOVD   &VB100, AC1
 AENO
 +I     AC1, AC0
 LRD
 +I     2, AC1
 LPP
 INCB   VB10
 LDB=   VB10, 19
 MOVW   AC0, VW14
 AENO
 /I     20, VW14

问题补充:
LD     SM0.1
 MOVD   0, AC0
 MOVW   0, AC0
 MOVB   0, VB10
 LDB<=  VB100, 20
 LPS
 MOVD   &VB100, AC1
 AENO
 +I     *AC1, AC0
 LRD
 +I     2, AC1
 LPP
 INCB   VB10
 LDB=   VB10, 20
 /D     20, AC0
 AENO
 MOVW   AC0, VW14
 各位师傅,我把程序改正了一下,但是我是初学者,而且只有书本和电脑,书本我还没有看到循环指令的那部分,我就是想在不使用循环指令的情况下做出这个程序,不知道做得怎么样,还望各位就我做的这个程序给出一些意见和建议.谢谢

最佳答案

你的程序不正确,需要重复执行若干次时,可以使用FOR/NEXT循环指令
   LD  SM0.0
   MOVD  0,AC0
   MOVD  &VB100,AC1
   FOR  VW0,1,20
   LD SM0.0
   +I  *AC1,AC0
   +D  2,AC1
   NEXT
   LD SM0.0
   /D  20, AC0
   AENO
   MOVW  AC0,VW14
 LZ你这种思路时间比较长,需要20个扫描周期才能完成。现在按你的思路写一个从VB100开始20个实时累加和的平均值,你看一下。
 LD     SM0.1
 LD     M0.0
 EU
 OLD
 MOVD   +0, AC0
 MOVD   +0, AC1
 MOVB   0, VB10
 MOVD   &VB100, AC1
 LDB<   VB10, 20
 +I     *AC1, AC0
 +D     +2, AC1
 INCB   VB10
 LDB>=  VB10, 20
 LPS
 EU
 /D     +20, AC0
 MOVW   AC0, VW14
 LPP
 =      M0.0
 

提问者对于答案的评价:
非常感谢!但用这种思路似乎只能在多个扫描周期内完成任务,还是使用循环指令比较合适,看来我要加快步子多学点了.

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc349510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午12:05
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论