Tanksteuerung mit strukturiertem text

Poulsen_12345

Level-1
Beiträge
13
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin SPS-Forum

Ich hab ein kleines Problem und hoffe Ihr könnt mir weiterhelfen. Ich muss in Factorytalk View eine Pumpe programmieren. Die Pumpe soll einen Tank befüllen.

Die Pumpe soll pumpen, wenn das Niveau unter 55% ist und dann den Tank auf 85% aufpumpen. Danach wird der Tank langsam entleert und wenn das Tankniveau wieder auf 55% ist soll die Pumpe wieder den tank auffüllen.

Dazu muss die Programmierung in "Strukturiertem Text" geschrieben werde. Ich versuche schon seit gestern das irgendwie hinzukriegen, leider ohne erfolg.

Ich hoffe Ihr könnt mir helfen :)

Joachim
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin DeltaMikeAir

Danke für deine Antwort! Leider klappt das so nicht. Ich hab dir n Screenshot von dem Fehler angefügt. Hast du noch ne andere Idee? :D



190115912_217505619947626_6073406038352467056_n.png
 
Moin DeltaMikeAir

Danke für deine Antwort! Leider klappt das so nicht. Ich hab dir n Screenshot von dem Fehler angefügt. Hast du noch ne andere Idee? :D



190115912_217505619947626_6073406038352467056_n.png
Von ELSE hat DeltaMikeAir nix geschrieben...
;)


PS:
Ich kenne Factorytalk View nicht, daher die Frage, wer bekommt denn die 1 oder 0 in Deinem IF zugewiesen?

PPS:
Und für Standard-ST fehlen da auch jede Menge Semikola.
 
Zuletzt bearbeitet:
Oder für Schreibfaule:
Code:
Pumpe := ( Pumpe OR ( Niveau < 55 ) ) AND ( Niveau <= 85 ) ;
Michaels Vorschlag ist schon richtig ... wenn man ihn richtig abschreibt. ;) Allerdings: das zweite 'E' bei 'ENDE_IF' solltest Du weglassen.
Anscheinend machen die IF-Konstruktionen immer wieder (Verständnis-)Probleme. Warum eigentlich?

Anm.:
'Pumpe' muss static sein oder VAR_IN_OUT

PS:
Einerseits suchst Du eine Lösung als StructuredText (hast Du bekommen) und andererseits arbeitest Du mit dem Factorytalk View Expression Editor, der offensichtlich eine andere Schreibweise erwartet. Aber welche? Keine Ahnung. :sad: :oops:

PPS:
Lässt sich den so etwas eingeben:
Code:
if ({LT-1_controller}<55) then 1 else Pumpe
if ({LT-1_controller}>85) then 0 else Pumpe
wobei 'Pumpe' die Variable sein muss, der das Ergebnis zugewiesen wird.

PPPS:
Der expression editor sollte eigentlich (dem Namen nach) dafür sein, Ausdrücke einzugeben. Aber if ... then ... else ... end_if ist doch kein Ausdruck!?
Dass da nicht ganz andere FehlerMeldungen kommen?!
Lässt sich denn mein Vorschlag für "Schreibfaule" eingeben, also ' ( Pumpe OR ( Niveau < 55 ) ) AND ( Niveau <= 85 ) '?
Wo und wie man allerdings die Zuweisung 'Pumpe := ' schreiben muss, entzieht sich meiner Fantasie ;).

Wofür sind überhaupt die geschweiften Klammern in Deinem screenshot? Müssen VariablenNamen so geschrieben werden?
Z.B.: ' ( {Pumpe} OR ( {Niveau} < 55 ) ) AND ( {Niveau} <= 85 ) ' ?
 
Zuletzt bearbeitet:
hi,
ich bin da eher der FlipFlop-fetischist ... da es sicherlich noch mehr bedingungen gibt die pumpe abzuschalten ...

Pumpe_RS(SET:= Nieveau < 55 , RESET1:= (Nieveau > 85) OR AnlageAus OR NOT Notaus OR NOT Motorschutz ,
Q1=> GVLdq_PumpeEin);
 
Ich will nicht sagen, dass die Lösung mit einem RS/SR-Baustein per se nicht gut ist. Es macht für mich in diesem Fall nur keinen unterschied, ob ich die Abschaltbedingungen am Reseteingang des Bausteins verschalte oder in einem If-Konstrukt abfrage. Läuft beides aufs gleiche hinaus.

So ich hohl mir erstmal nen Kaffee...
 
Zuletzt bearbeitet:
Ich will nicht sagen, dass die Lösung mit einem RS/SR-Baustein per se nicht gut ist. Es macht für mich in diesem Fall nur keinen unterschied, ob ich die Abschaltbedingungen am Reseteingang des Bausteins verschalte oder in einem If-Konstrukt abfrage. Läuft beides aufs gleiche hinaus.

So ich hohl mir erstmal nen Kaffee...

huch ? niemand hat gesagt dass if / then nicht gut ist ...

ich vermeide das nur wenn immer es geht ...
gibt es mehrere setz- und rücksetz bedingungen bleibt das rs (für mich) im code einfach übersichtlicher ...

naja und ich habe bei einem kollegen auch schon schwachsinn gesehen wie:

if a > b then
schalten:=true;
end_if

:D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und ich habe bei einem kollegen auch schon schwachsinn gesehen wie:

if a > b then
schalten:=true;
end_if
Warum siehst Du dies als Schwachsinn an?


Bei:
Code:
if a > b then
   schalten := true;
else
   schalten := false;
end_if
könnte ich Dir folgen, da man dies zu:
Code:
schalten := a > b;
vereinfachen kann.
Aber oben?


PS:
Bitte nutze zukünftig doch die Code-Tags (#-Button, 2. Iconleiste ganz rechts).
Wie man sieht, macht es den Code deutlich lesbarer und Du kannst auch Einrückungen nutzen.
 
ahhh ok ... mein beispiel war nicht ganz richtig ...

Code:
if a and b then
schalten := true;
else
schalten := false;
end_if

^^ so war das ...
was ein einfaches
Code:
schalten := a and b;
ersetzt

if / then hat große vorteile wenn die bedingung nicht true ist, der eingeschlossene code nicht ausgeführt werden muss ...

aber wenn es darum geht z.b. eine pumpe zu schalten bin ich dann doch eher bei einem RS - Flipflop ...

Code:
schalten_RS(SET:= (Hand and TasteEin) or (automatik and FuellstandLow),
RESET1:= (Hand and TasteAus) or
                (automatik and FuellstandHigh) or
                not motorschutz or not notaus or not FuellstandAlarm or not Trockenlaufschutz
);
^^ sowas bleibt einfach überschaubarer für MICH ....
 
ahhh ok ... mein beispiel war nicht ganz richtig ...

...

Code:
schalten_RS(SET:= (Hand and TasteEin) or (automatik and FuellstandLow),
RESET1:= (Hand and TasteAus) or
                (automatik and FuellstandHigh) or
                not motorschutz or not notaus or not FuellstandAlarm or not Trockenlaufschutz
);
^^ sowas bleibt einfach überschaubarer für MICH ....

Das ist halt Geschmackssache, ich persönlich finde hier ein IF Konstrukt übersichtlicher ( vor allem je mehr Bedingungen dazu kommen ).
Aber da hat halt jeder seinen eigenen Stil. Funktionieren wird letztendlich beides
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... aber Logik gehört in die SPS und nicht ins HMI!
Natürlich! Das ist es!
Der TE sagt (s. #1), er muss in structured text programmieren, aber er tut es nicht. Er fummelt stattdessen anscheinend im HMI herum.
Das erklärt die Merkwürdigkeiten und Rätsel, denen wir uns hier ausgesetzt haben!?
 
Ich hab ein kleines Problem und hoffe Ihr könnt mir weiterhelfen.
Gerne.

Ahem....

1. Verstehe dass eine HMI ist nur für das Schnittstelle zwischen Bediener und Maschine oder Prozess. Logik der die Maschine oder Prozess beeinflusst gehört ind die SPS.
2. Es gibt ein Anzahl SPS Programmsprachen. Structured Text ist eine standardisierte Sprache und gehört zu IEC 61131-3. Die Expression Editor in Factory Talk View gehört nicht zu diese Standard.
3. Die Pumpe Programmaufgabe ist so basal, dass ich denke dies ist eine Aufgabe in die Schule. Wenn dies in der Tat eine Aufgabe in die Schule ist, dann erklär dass als das allererste. Probier nicht es zu verstecken.
 
Zurück
Oben