Case-Anweisung

agoni88

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

Bin gerade neu hier und schon ein paar Fragen. Ich hoffe ich breche keine Regel oder so etwas...
Ich bin beim Siemens TIA Portal 13 eine Arbeit am schreiben.
Ich muss alles in SCL machen. kann mir jemand sagen, was hier falsch ist?
Wenn Case 100 True ist dann soll Signallisation Rot leuchten.
Wenn Case 110 ist dann soll Signallisation Rot löschen.

CASE #Auto OF
100:(*Start*)
IF
#I_xPowerOn
AND
#I_xManAuto
AND
#I_xOn
THEN
"O_xTP_SignalisationRed" := TRUE;
END_IF;


110: (*Stop*)
IF
NOT #I_xPowerOn
OR
NOT #I_xManAuto
OR
NOT #I_xOff
THEN
"O_xTP_SignalisationRed" := FALSE;
END_IF;

END_CASE;

Danke im Voraus
 
Was genau geht denn nicht?
Rot immer an, Rot nie an?

Du hast ja in der Case-Anweisung noch ein paar Bedingungen, die Signalisation Red auf True oder False schalten, diese Boolschen Variablen würde ich mir mal ansehen.

OR Not #I_xOFF --> soll das vielleicht OR NOT #I_xON heißen?

PS: Hab deinen Thread mal verschoben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hall Ralle

Besten Dank für deine Bemühung...
Problem ist, dass es nie an geht.
OR Not #I_xOFF das ist Korrekt, es ist ein Button OFF vorhanden.
Es muss so funktionieren, sobald ich ON drücke (taste) und Power eingeschaltet ist und es auf Auto geschaltet ist dann muss rot leuchten und darf nicht löschen.
Sobald ich OFF drücke oder von Auto auf Hand wechsle oder Power ON abstelle, dann muss die Rote leuchte löschen...
Kann man das so mit Case machen? oder RS ?
Ich komm hier einfach nicht weiter

Gruss
 
Schreibst Du den Code in einem FC?
Dein "O_xTP_SignalisationRed" müsste dann IN_OUT oder ein globaler Merker sein, weil er sich seinen Zustand merken muß. Das sieht man gut in dieser einfacheren Formulierung:
Code:
"IO_xTP_SignalisationRed" := ( "IO_xTP_SignalisationRed" OR ((#Auto = 100) AND #I_xOn) ) 
                             AND NOT (#Auto = 110) AND #I_xPowerOn AND #I_xManAuto AND #I_xOff ;
(die rote Leuchte geht hier schon aus, sobald #Auto = 110 wird - womöglich hast Du das so nicht gewollt?)
Wo kommt die Variable #Auto her?

Tip: Programmcode bitte in [CODE]-Tags einfügen - der #-Button im Beitragseditor.

Harald
 
Hallo besten Dank für die Hilfe...
Eigentlich ist das nur ein Teil meiner Aufgabe. Es ist relativ schwierig für mich als Anfänger, weil wir nur in FUP
gearbeitet haben und jetzt alles in SCL.
Ist es möglich wenn mir jemand dabei helfen kann, die ganze Arbeit zu schreiben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wie sollen die Werte 100 oder 110 in diese Bool-Variable reinkommen? (schließlich fragst Du ja in der Case-Anweisung, ob #Auto = 100 oder #Auto = 110 ist) Hinweis: in einer Bool-Variable kann nur TRUE oder FALSE drinstehen (das Bit kann 1 oder 0 sein).

Programmierst Du einen FB oder einen FC?
Hast Du vielleicht ein Bild (Screenshot) vom Deklarationsteil Deines Bausteins?

Harald
 
Hallo das Problem hat sich gelöst (war ein Missverständnis von mir)
Habe jedoch ein anderes Problem.
Wie kann ich aus einem Dauersignal ein Impulssignal machen?
Es ist so, wenn ich die Taste Links drücke, dann müssen die Bänder Links laufen, sobald ich die Taste loslasse müssen die Bänder anhalten.
Bei mir ist es so, dass wenn ich Links drücke, auch die Bänder sich Links drehen, aber wenn ich Links loslassen, dann drehen die Bänder immer noch weiter.
Es ist alles mit Case gemacht. Alles in SCL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
IF Taste_Links then
Band_Links:=TRUE;
ELSE
Band_Links:=False;
END_IF
Sorry, aber wer bringt den Leuten nur so 'nen umständlichen Murks bei?

Das kann man auch mit 'ner einfachen Zuweisung schreiben:
Code:
Band_Links:= Taste_links;
Macht' ihr doch in FUP, KOP oder AWL auch nicht so kompliziert, oder?
;)
 
Poste doch mal Deinen Code, dann kann Dir sicher besser geholfen werden. Alles andere wäre nämlich ein Blick in die Glaskugel oder der sprichwörtliche Schuss ins Blaue, der kann dann zwar auch mal ins Schwarze treffen, das ist aber eher selten.
 
Zurück
Oben