Bausteinparameter...

bibu_works

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vor kurzem programmierte ich in AWL in einer Funktion ein Netzwerk mit drei Zuweisungen. Ziel dieser Aktion war eine einfache Verzögerung eines Ausgangs mit einem SE-Timer.
Ich deklarierte einen Temp Bausteinparameter, um ihn für die Timerzuweisung zu benutzen.
z.B.:

U E0.1
U E0.2
.
.
.
S #Bool
R DB110.DBX10

U #Bool
L S5t#5s
SE T1

U T1
S A1.0
R #Bool

Ich übertrug das so und anschließend setze ich die Brille auf, um die Aktion zu kontrollieren. Aber nichts passierte. In einem Testwahn setzte dann anstatt des Bausteinparameters einen Merker ein und siehe da: Es funktionierte...:confused:

Hat einer eine Ahnung warum?
 
Der Temp-Bereich in einer Funktion ist (wie der Name schon sagt) nur temporär.
Das heißt, der Wert einer temporären Variable, in deinem Fall #Bool, hat bei der ersten Verwendung einen mehr oder weniger zufälligen Wert.

Entweder du verschiebst deine #Bool Variable als IN/OUT Parameter des FC, und schaltest dann außen den Merker (also einen dauerhaften) Speicherbereich an, oder verwendest einen FB (Funktionsbaustein) und legst die Variable im STAT-Bereich ab.

Dann wird der Wert deiner Variable #Bool im Instanz-Datenbaustein gespeichert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
warum willst du da überhaupt mit einer lokalen variablen arbeiten :???:

alles global - dann nimm halt nen merker und gut ist ... du kannst zum starten der zeit auch das negierte db-bit nehmen, wenn es nicht großartig verwurschtelt ist,was ich mir aber bei dem ersten stileindruck leider sehr gut vorstellen kann :rolleyes:
 
alles global - dann nimm halt nen merker und gut ist ... du kannst zum starten der zeit auch das negierte db-bit nehmen, wenn es nicht großartig verwurschtelt ist,was ich mir aber bei dem ersten stileindruck leider sehr gut vorstellen kann :rolleyes:

Du wirst nicht glauben was es alles gibt. Ich habe zur Zeit eine Anlage übernommen die jemand anderes mal programmiert hat.
Da gibt es für jeden Antrieb einen eigenen FC, und an diesen FCs ist ein Parameter vom Typ DB. Im FC wird dann der DB geöffnet und dann mit nicht symbolischen DBX0.0 etc. gearbeitet. Ein absoluter Graus!
Ich frage mich wo man sowas lernt, aus S5-Zeiten stammt ja viel Schrott, aber sowas...
 
Du wirst nicht glauben was es alles gibt. Ich habe zur Zeit eine Anlage übernommen die jemand anderes mal programmiert hat.
Da gibt es für jeden Antrieb einen eigenen FC, und an diesen FCs ist ein Parameter vom Typ DB. Im FC wird dann der DB geöffnet und dann mit nicht symbolischen DBX0.0 etc. gearbeitet. Ein absoluter Graus!
Ich frage mich wo man sowas lernt, aus S5-Zeiten stammt ja viel Schrott, aber sowas...

Genauso haben wir das damals in den ersten S7-Anlagen auch gemacht, das ist tatsächlich ein Überbleibsel aus S5-Tagen. Irgendwann entdeckt man dann, daß das neue System doch mehr kann. Nicht zu vergessen, die ersten S7-Programm wurden beim Umstieg i.d.R. von s5 konvertiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hab in meinem jungen leben auch schon viel elend gesehen (und in den ersten jahren sicher auch viel elend für andere hinterlassen :rolleyes:) aber je länger man sich damit beschäftigt, je intensiver man code durchdenkt und die möglichkeiten kennenlernt, desto strukturierter und sauberer wird der code. es ist eigentlich wie bei sovielen im leben - je mehr zeit man damit verbringt, desto "professioneller" wirds - kritikfähigkeit vorrausgesetzt!
 
Zurück
Oben