我是新手,正在自学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