请帮我看看,怎么简化一下程序
网络1:
LD SM0.5
EU
MOVW VW516, VW518
MOVW VW514, VW516
MOVW VW512, VW514
MOVW VW510, VW512
MOVW VW508, VW510
MOVW VW506, VW508
MOVW VW504, VW506
MOVW VW502, VW504
MOVW VW500, VW502
MOVW VW522, VW500
网络2
LD SM0.5
EU
MOVW VW500, VW520
+I VW502, VW520
+I VW504, VW520
+I VW506, VW520
+I VW508, VW520
+I VW510, VW520
+I VW512, VW520
+I VW514, VW520
+I VW516, VW520
+I VW518, VW520
网络3
LD SM0.5
MOVW VW520, VW524
/I +10, VW524
问题补充:
其实就是连续的10个整数,
网络1:
把原来第一位的数值赋值给第二位,把第二位的数值赋值给第三位,依次类推,然后把最新数值给第一位。
网络2:
把这10个数相加起来
网络3
把这10个数相加起来除以10,得出平均值
最佳答案
这样子行吗:
Network 1
LD SM0.5
EU
BMW VW500, LW10, 10 // LW作暂存
BMW LW10, VW502, 9 // 移回去9个就行了
MOVW VW522, VW500
Network 2
LD SM0.5
EU
ITD VW500, AC0 // 累加和初始化
MOVD &VB502, AC1 // 要操作的指针
FOR AC0, 1, 9
ITD *AC1, AC2
+D AC2, AC0 // 数位扩展,防止溢出
+D 2, AC1 // 指针前移
Network 3
NEXT
Network 4
LD SM0.5
EU
/D 10, AC0
MOVW AC0, VW24
我不知道你的数据取值范围,所以特别做了防溢出处理。
提问者对于答案的评价:
XIEXIE~
专家置评
已阅,最佳答案正确。
可以考虑循环的方式,或地址指针间接寻址。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc298351.html