Weil an ein2 ein 1-Signal liegt (Eingang ist negiert)
An ein3 liegt ein 0-Signal und daher wird der Abschnitt
übersprungenCode:* ... L #in3 T #out3 ...
Auf dem Bild ist der Quellcode des aufgerufenen Bausteins und sein Aufruf im Status zu sehen. Es werden einfach nur 3 Werte abhängig von 3 Eingangsbits auf drei Ausgänge kopiert.
Meine Frage ist nun, warum nimmt bei der gezeigten Beschaltung die Ausgangsvariable den Wert von Out2 an und nicht den von Out3 ?
Lieber Feste feiern, als feste arbeiten.
Weil an ein2 ein 1-Signal liegt (Eingang ist negiert)
An ein3 liegt ein 0-Signal und daher wird der Abschnitt
übersprungenCode:* ... L #in3 T #out3 ...
Das ist mir schon klar.
Es erfolgt aber an out3 eine weitere Zuweisung zu der gleichen Variablen.
Wenn ich an den out3 eine andere Variable schreibe, wird der Wert 0 an out3 angezeigt, wie es auch richtig ist.
Aber warum wird dummyint nicht auf 0 geschrieben ?
@Frank W
Ich sehe es ja, dass es funktioniert, aber warum wird der out3 nicht in die Variable geschrieben ?
Last edited by blasterbock; 02.12.2008 at 08:56.
Lieber Feste feiern, als feste arbeiten.
weil du nirgends ein
in dienem Code abarbeitestCode:t #out3
Das stimmt nicht. Die Variable out3 wird intern mit dem Wert 0 belegt (sieht man, wenn man eine andere Variable an out3 legt).
So weit ich das System verstehe, werden bei einem Bausteinaufruf alle Übergabeparameter auf den Stack geschrieben. Also muss beim Rücksprung aus dem FC out3 einen Wert haben.
Wo liegt mein Denkfehler ?
Lieber Feste feiern, als feste arbeiten.
Dein Denkfehler liegt darin, dass du der Meinung bist, die SPS tut etwas von selbst. Dem ist nicht so. Du schreibst nicht auf die Variable! Wenn du in ein MW z.Bsp. die Zahl 14 schreibst und das MW danach als #out3 nimmst, bleibt die 14 so lange stehen bis #ein3 TRUE ist, dann steht dort der #in3-Wert!!!!
MfG
FrankW
BOAH, das kann doch nun wirklich nicht so schwer sein!
du hast eine IF-THEN-Anweisung gebaut. problem dabei, es wird nicht mehr beschrieben, also der wert bleibt. das was du willst ist ein IF-THEN-ELSE-Konstrukt:
und jetzt gehst du zu deinem chef und sagst, dass du ganz dringend einen leergang brauchst!Code:IF ein1 THEN out1:=in1; ELSE out1:=0; END_IF;
Last edited by forendiva; 02.12.2008 at 09:28. Reason: rot und fett
du hast im OB1 die tempvariable #dummyint definiert und beschreibst sie durch dein out2 mit 2.dann steht die 2 natürlich da drinnen.egal wo du sie anlegst.wie schon oben beschrieben.nimm drei verschiedene und es passt.
Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.
Bookmarks