數(shù)值比較
劉玉蓉
發(fā)布于2014-10-08 17:41
167
0
標(biāo)簽:
現(xiàn)在手頭上有一個20缸的發(fā)電機組,20個氣缸溫度通過opc已經(jīng)讀到,業(yè)主想在上位畫面上顯示缸溫的大值及小值,請問如何通過上位程序的編寫實現(xiàn)比較20個氣缸溫度的大值,小值。
佳答案
一般,這樣的排序在PLC中進行為簡便,排序后傳給上位機。例如采用冒泡法:
轉(zhuǎn)帖:
假定20個數(shù)據(jù),放在DB1中,安放順序如下:
DBD0
DBD4
…
DBD36
下面是西門子的程序
OPN DB 1 /////打開DB1這個數(shù)據(jù)塊
L 20 ////裝載20到MB0中,因為有20個數(shù)據(jù),要進行20次排序,
LL0: T MB 0
L P#0.0 ////裝載地址指針,這是關(guān)鍵,不要搞錯了
LAR1
L 19
LL1: T MB 2 ////內(nèi)部循環(huán),進行19次,直到把大值排到后
L DBD [AR1,P#0.0]
L DBD [AR1,P#4.0]
<R
JC LL2 ////比較前后兩個值,如果前面大于后面的,則前后數(shù)據(jù)交換
L DBD [AR1,P#0.0]
T #m_temp
L DBD [AR1,P#4.0]
T DBD [AR1,P#0.0]
L #m_temp
T DBD [AR1,P#4.0]
LL2: +AR1 P#4.0 ////指針自動進行加4,因為是浮點數(shù),所以要跳過4個字節(jié)
L MB 2
LOOP LL1 ///這個指令自動的將A寄存器里的值減1
L MB 0
LOOP LL0