NW1:
L #ACTIVE
T #LOOPCNT
NW2:
O(
L #LOOPCNT
L 15
>I
)
O(
L #LOOPCNT
L 0
<I
)
= #ERROR
U #ERROR
SPBN ok
L 0
T #TEMP.ACT[0]
T #TEMP.ACT[1]
T #TEMP.ACT[2]
T #TEMP.ACT[3]
T #TEMP.ACT[4]
T #TEMP.ACT[5]
T #TEMP.ACT[6]
T #TEMP.ACT[7]
T #TEMP.ACT[8]
T #TEMP.ACT[9]
T #TEMP.ACT[10]
T #TEMP.ACT[11]
T #TEMP.ACT[12]
T #TEMP.ACT[13]
T #TEMP.ACT[14]
T #TEMP.ACT[15]
T #CHANNEL
T #CNT
BEA
ok: NOP 0
NW3:
L #CNT //Aktueller Schrittzähler
T #CHANNEL //Ausgang für Adressierung Multiplexer
U #TAKT //Abtasttakt
FP #_flanke[1]
SPBN m001
TAR1 #RETTAR1 //Adressregister retten
TAR2 #RETTAR2 //Adressregister retten
LAR1 P##TEMP //Pointer auf erste relevante Daten setzen
L #RETTAR2 //Adressregister 2 addieren für Multiinstanzfähigkeit
+AR1
L W [AR1,P#0.0] //DB nummer auslesen
T #DB_NMB //Eintragen
L D [AR1,P#2.0] //Pointer auslesen
T #QPOINTER //Eintragen
AUF DB [#DB_NMB] //DB aufschlagen
L #QPOINTER //Pointer laden ins AR1
LAR1
L #CNT //Aktueller Schritt bzw. Temperaturwert
L 2 //Schrittweite 2 weil die Werte INT sind
*I
SLW 3 //Ins Pointerformat wandeln
+AR1 //Offset aktueller schritt mit einrechnen
L #INPUT //Eingangswert einlesen
T W [AR1,P#0.0] //Auf Position schreiben die im AR1 steht
L W [AR1,P#32.0] //Min auswerten
<I
SPBN min
TAK
T W [AR1,P#32.0]
min: L W [AR1,P#0.0] //Max auswerten
L W [AR1,P#64.0]
>I
SPBN max
TAK
T W [AR1,P#64.0]
max: L #CNT //Schrittzähler laden
INC 1 //um eins erhöhen
T #CNT //wieder in schrittzähler variable schreiben
LAR1 #RETTAR1 //Adressregister restaurieren
LAR2 #RETTAR2 //Adressregister restaurieren
m001: L #CNT //Schrittzähler auf überlauf prüfen
L #LOOPCNT
>I
SPBN ende
L #CNT
L 0
T #CNT
ende: SET //Baustein immer mit vke 1 verlassen damit ENO immer 1 ist
SAVE