問題:s7-200smart采集模擬量,每次掃描到數據,就記錄下來,讀到的數據存到最後一單元,數據依次往前拱,把最老的一個(ge) 單元拱出去,求程序段。我用FIFO似乎實現不了
解:前幾天看到網友用smart 間接尋址 冒泡法程序,今天下午不忙,做了一個(ge) 冒泡法排序,拋磚引玉。 相互學習(xi) 優(you) 化優(you) 化程序。
主程序:
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
// 指針傳(chuan) 遞
LD SM0.0
MOVD LD1, LD16
AENO
MOVW LW10, VW3002
Network 4
// 內(nei) 循環次數計算
LD SM0.0
MOVW LW5, LW14
-I LW10, LW14
Network 5
// 內(nei) 循環
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
// 內(nei) 循環結束
NEXT
Network 10
LDW>= LW10, 400
WDR
Network 11
// 外循環結束
NEXT