-> Hier kostenlos registrieren
Sooooo, so funktioniert das ganze jetzt erst Mal.
Danke für die Hilfe bis hierhin!
Ein letztes Problem habe ich noch:
Kann ich denn im FC die INOUT nicht als REAL deklarieren?
Habe versucht #IN (REAL) im OB1 meine ED 6 aus der Symbolliste zuzuweisen wie in meinem anderen FB Programm, und er lässt mich nur Daten aus DBs auswählen.
Wenn ich die #IN als INT deklariere wie den #ZAEHLER kann ich auch nur die Variable vom ZAEHLER aus der Symbolliste zuweisen, obwohl ich davor extra zum testen noch andere EW Variablen in der Symbolliste erstellt habe.
Danke für die Hilfe bis hierhin!
Code:
UN #FLANKENMERKER
= #POS_FLANKE //Taktprüfer
U #POS_FLANKE
SPB THEN //Bei positiver Flanke wird gearbeitet
SPA ELSE //Sonst übergeht SPB Befehl undspringt hier absolut zu ELSE
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
THEN: AUF "DB_DATA"
L #ZAEHLER //Lade Durchlaufzähler in AR1 --> 4Byte Schritte (0..4..8..12..etc.)
+ 1 //Gehe auf nächstes Array-Element
L 11 //Anzahl Einträge im Array_1[0..10] OF REAL
MOD //auf 0..10 begrenzen siehe S7 HILFE
T #ZAEHLER //Merke den Wert
L 4 //REAL ist 4 Byte
*D //Mulipliziere mit 4 --> 0*4=0, 1*4=4, 2*4=8, ...
SLD 3 //Byteoffset --> P# Bitadresse --> Siehe Aufbau S7 Hilfe
L P#0.0 //AnfangsOffset ARRAY_1 in DB1 hier eintragen
+D //ergibt Offset von ARRAY_1[ZAEHLER] --> 0, 4, 8, etc.
LAR1
L #IN //Testwert statt Eingabewert, zum Testen
T DBD [AR1,P#0.0]
L 44 //Lade Startwert 44 in AR2 --> Zählt 11 mal runter weil Array[0..10]
SLD 3
LAR2
L P#0.0
LAR1
L 11 //Lade 11 als LOOP Länge in ForZähler (Zwischenspeicher)
SPRG: T #tForZaehler
AUF "DB_DATA"
TAR2 //AR2 in AKKU1 abspeichern
L P#4.0 //4Byte in AKKU1 laden
-D //AKKU1 von AKKU2 subtrahieren (AR2-4)
LAR2
L DBD [AR1,P#0.0]
AUF "DB_DATA_REVERSE"
T DBD [AR2,P#0.0] //Schreibe Wert von AR1 DB1 auf AR2 DB2
+AR1 P#4.0 //Erhöhen von AR1 um 4Byte (nur eine 4 wären nur 4 Bit)
L #tForZaehler
LOOP SPRG
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELSE: U M 0.5
SPB EIN
R #FLANKENMERKER //Resete den Flankenmerker
SPA ENDE //Wenn TAKT FALSE wird SPB übergangen und absolut auf AUS gesprungen
EIN: S #FLANKENMERKER //Setze den Flankenmerker
SPA ENDE
ENDE: L 0
Ein letztes Problem habe ich noch:
Kann ich denn im FC die INOUT nicht als REAL deklarieren?
Habe versucht #IN (REAL) im OB1 meine ED 6 aus der Symbolliste zuzuweisen wie in meinem anderen FB Programm, und er lässt mich nur Daten aus DBs auswählen.
Wenn ich die #IN als INT deklariere wie den #ZAEHLER kann ich auch nur die Variable vom ZAEHLER aus der Symbolliste zuweisen, obwohl ich davor extra zum testen noch andere EW Variablen in der Symbolliste erstellt habe.