-> Hier kostenlos registrieren
Hallo!
Hab ein kleines Problem mit dem Versatz als Multiinstanzfähigen Baustein.
Es soll ein Einganswert eingelesen werden und dann schleifenmäßig verteilt werden.Wenn ich in der Multiinstanz schaue seh ich das der Erste wert auf DI 226.0 geschrieben wird in wirklichkeit ist er aber bei DI 228.0.
Wo kommt der versatz her?Kann man nicht auf in_out veriablen lesen/Schreiben? Kann mir da jemand helfen?
Hier mal mein Programm bisher
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 #CNT
L 4
*I
SLW 3
+AR1 //Offset aktueller schritt mit einrechnen
L #RETTAR2 //Adressregister 2 adieren für Multiinstanzfähigkeit
+AR1
L #INPUT //Eingangswert einlesen
T DID [AR1,P#0.0] //Auf Position schreiben die im AR1 steht
L DID [AR1,P#64.0] //Min auswerten
<R
SPBN min
TAK
T DID [AR1,P#64.0]
min: L DID [AR1,P#0.0] //Max auswerten
L DID [AR1,P#128.0]
>R
SPBN max
TAK
T DID [AR1,P#128.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
Mfg Mario
Hab ein kleines Problem mit dem Versatz als Multiinstanzfähigen Baustein.
Es soll ein Einganswert eingelesen werden und dann schleifenmäßig verteilt werden.Wenn ich in der Multiinstanz schaue seh ich das der Erste wert auf DI 226.0 geschrieben wird in wirklichkeit ist er aber bei DI 228.0.
Wo kommt der versatz her?Kann man nicht auf in_out veriablen lesen/Schreiben? Kann mir da jemand helfen?
Hier mal mein Programm bisher
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 #CNT
L 4
*I
SLW 3
+AR1 //Offset aktueller schritt mit einrechnen
L #RETTAR2 //Adressregister 2 adieren für Multiinstanzfähigkeit
+AR1
L #INPUT //Eingangswert einlesen
T DID [AR1,P#0.0] //Auf Position schreiben die im AR1 steht
L DID [AR1,P#64.0] //Min auswerten
<R
SPBN min
TAK
T DID [AR1,P#64.0]
min: L DID [AR1,P#0.0] //Max auswerten
L DID [AR1,P#128.0]
>R
SPBN max
TAK
T DID [AR1,P#128.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
Mfg Mario
Zuletzt bearbeitet: