简化程序

请帮我看看,怎么简化一下程序
网络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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐