问题:s7-200smart采集模拟量,每次扫描到数据,就记录下来,读到的数据存到最后一单元,数据依次往前拱,把最老的一个单元拱出去,求程序段。我用FIFO似乎实现不了
解:前几天看到网友用smart 间接寻址 冒泡法程序,今天下午不忙,做了一个冒泡法排序,抛砖引玉。 相互学习优化优化程序。
主程序:
Network 1
LD M0.0
= L60.0
LD M0.0
EU
= L63.7
LD L60.0
CALL SBR0, L63.7, &VB0, 60, M0.5, M0.6
子程序:
TITLE=程序注释
Network 1
// 外循环次数计算
LD SM0.0
MOVW LW5, LW12
-I 1, LW12
Network 2
// 外循环 开始
LD L0.0
FOR LW10, 1, LW12
Network 3
// 指针传递
LD SM0.0
MOVD LD1, LD16
AENO
MOVW LW10, VW3002
Network 4
// 内循环次数计算
LD SM0.0
MOVW LW5, LW14
-I LW10, LW14
Network 5
// 内循环
LD SM0.0
FOR LW8, 1, LW14
AENO
MOVW LW8, VW3004
Network 6
//
LD SM0.0
MOVD LD16, LD20
+D +2, LD20
Network 7
// 比较大小,条件满足后互换。互换完成后指针地址加2
LDW> *LD16, *LD20
LPS
MOVW *LD16, LW24
AENO
MOVW *LD20, *LD16
AENO
MOVW LW24, *LD20
AENO
+D 2, LD16
LPP
NOT
+D 2, LD16
Network 8
LDW>= LW8, 200
WDR
Network 9
// 内循环结束
NEXT
Network 10
LDW>= LW10, 400
WDR
Network 11
// 外循环结束
NEXT