問(wèn)題:s7-200smart采集模擬量,每次掃描到數(shù)據(jù),就記錄下來(lái),讀到的數(shù)據(jù)存到最后一單元,數(shù)據(jù)依次往前拱,把最老的一個(gè)單元拱出去,求程序段。我用FIFO似乎實(shí)現(xiàn)不了
解:前幾天看到網(wǎng)友用smart 間接尋址 冒泡法程序,今天下午不忙,做了一個(gè)冒泡法排序,拋磚引玉。 相互學(xué)習(xí)優(yōu)化優(yōu)化程序。
主程序:
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
// 外循環(huán)次數(shù)計(jì)算
LD SM0.0
MOVW LW5, LW12
-I 1, LW12
Network 2
// 外循環(huán) 開(kāi)始
LD L0.0
FOR LW10, 1, LW12
Network 3
// 指針傳遞
LD SM0.0
MOVD LD1, LD16
AENO
MOVW LW10, VW3002
Network 4
// 內(nèi)循環(huán)次數(shù)計(jì)算
LD SM0.0
MOVW LW5, LW14
-I LW10, LW14
Network 5
// 內(nèi)循環(huán)
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
// 內(nèi)循環(huán)結(jié)束
NEXT
Network 10
LDW>= LW10, 400
WDR
Network 11
// 外循環(huán)結(jié)束
NEXT