TIA TIA : Erweiterter Strukturierter Text

Kieler

Level-2
Beiträge
764
Reaktionspunkte
86
Zuviel Werbung?
-> Hier kostenlos registrieren
In Codesys kann man ExST nutzen. Da gibt es dann wieder setzen und rücksetzen mit einem Befehl und ohne IF..Then. Ich habe gelesen, dass man das bei TIA auch zuschalten kann. Ich kann aber nichts dergleichen bei TIA finden. Hat jemand Ahnung?
 
Hi
Verstehe nicht genau was du willst aber eine Variable kannst du mit
Variable := true / false setzen.
Oder was natürlich auch geht:
Variable := (logische Verknüpfung)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist "Erweiterter Strukturierter Text" ? Ist es IEC 61131-3 ST konform ?

Da gibt es dann wieder setzen und rücksetzen mit einem Befehl und ohne IF..Then.
Setzen und rücksetzen, ist wie eldon beschreibt.
Nur setzen oder nur rücksetzen, geht immer nur mit eine IF THEN.
 
Was eldon beschreibt, ist eine Zuweisung. Beim Setzen und beim Rücksetzen wird der Zustand gespeichert. Das wissen wir natürlich alle :ROFLMAO:.
 
Im erweiterten strukturierten Text hat man bspw. die Befehle
Code:
bVariable1 S= bVariable2
bzw.
Code:
bVariable1 R= bVariable2
zum setzen und rücksetzen zur Verfügung. Hierbei ist dann kein If-Konstrukt mit Zuweisung notwendig, sondern nur S= bzw. R=.

Ob TIA das bietet und ob es IEC 61131 konform ist, weiß ich nicht. Diese Möglichkeit steht aber bspw. in Beckhoff TwinCAT zur Verfügung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hierbei ist dann kein If-Konstrukt mit Zuweisung notwendig, sondern nur S= bzw. R=.
Donnerwetter! Das gibt's jetzt auch schon?
Offensichtlich ein Zugeständnis der "HochsprachenProgrammierung" an die "SPS-Programmierung".
Wenn sich das so weiterentwickelt, landen wir bald wieder bei der guten, alten AWL, die doch für HochsprachenProgrammierer ach so unlesbar ist. :ROFLMAO:
 
Im Text steht aber, dass man es auch bei TIA einschalten kann. Entweder stimmt es nicht oder ich finde die entsprechende Stelle einfach nicht.
Hmmm. Im verlinkten Text steht nix von TIA - das steht nur etwas von Siemens:

myVar:= myVar1:=myVar2+26; //erweiterte Zuweisung
Wollte Ihr die erweiterten Sprachelemente in CODESYS nutzen müsst Ihr nichts unternehmen.
Bei Siemens z.B. müsst Ihr beim erstellen eines Programms in ST angeben ob ihr erweiterte Sprachfeatures nutzen wollt oder nicht.

Ich sehe auch nicht, welche erweiterten Sprachfeatures es bei Siemens bzw. TIA geben soll ...
Die Verkettung von Zuweisungen ist hier im Forum schonmal diskutiert worden - habe jetzt aber nicht gefunden, wo und in welchem Zusammenhang.
Anscheinend kann man R= und S= ebenfalls verketten - vermutlich auch mit =.

Die folgende Formulierung aus Deinem Link finde ich - sagen wir mal - "sehr merkwürdig":

bMyVar1 S= bMyVar2 R= myTimer.Q;
Hier wird bMyVar2 zurückgesetzt, wenn die eingestellte Zeit am Timer-Baustein abgelaufen ist.
Achtung!! Der Variablen bMyVar1 wird jetzt aber nicht gesetzt wenn bMyVar2 den Wert TRUE annimmt, sondern die Zuweisungsoperatoren wirken immer auf den Timer-Baustein.

Ist sich der Autor eigentlich bewusst, was er dort für einen Blödsinn behauptet? :ROFLMAO: Hmmm.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir geht es eigentlich ausschließlich um :

S=
R=

Ich finde es einfach deutlich besser zu schreiben :

Motor_ein S= Taster_ein

Als es wie folgt über eine IF Anweisung :

IF Taster_ein then
Motor_ein := True
End_IF
 
In TIA15.1 geht dies:
#MyReal_2 := #Myreal_3 := #MyReal_1 + 23.45;

in TIA15.1 geht dies nicht:
#My_bool_3 S= #My_bool_1 ;
#My_bool_3 R= #My_bool_2 ;

Leider geht die zweite, für mich sinnvolle, Funktion nicht. Den Sinn der ersten Funktion kann ich nicht nachvollziehen. Hier ist ein mehrzeiliger bestimmt lesbarer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehe ich genauso. Nutze seit einiger Zeit TwinCAT statt TIA und bin im TwinCAT auf die Möglichkeit von S= und R= gestoßen und finde das wirklich prima. Dass man Zuweisungen noch weiter verketten kann bis hin zu diesem "Beispiel" aus dem zitierten Blog wusste ich bislang nicht und finde es auch wenig nutzerfreundlich...
 
Die folgende Formulierung aus Deinem Link finde ich - sagen wir mal - "sehr merkwürdig":

bMyVar1 S= bMyVar2 R= myTimer.Q;
Hier wird bMyVar2 zurückgesetzt, wenn die eingestellte Zeit am Timer-Baustein abgelaufen ist.
Achtung!! Der Variablen bMyVar1 wird jetzt aber nicht gesetzt wenn bMyVar2 den Wert TRUE annimmt, sondern die Zuweisungsoperatoren wirken immer auf den Timer-Baustein.

Ist sich der Autor eigentlich bewusst, was er dort für einen Blödsinn behauptet? :ROFLMAO: Hmmm.

Um zu erkennen wie das Ganze funktioniert, müsste man wissen wie diese Operatoren S= und R= in der Priorität eingeordnet sind.
Bzw. ob dieses überhaupt Operatoren sind, oder eine Art Makro das aufgelöst wird.

Wenn mir das If/Then zu unpraktisch ist, würde ich mir eine oder zwei Funktionen SR(S:= x, R:= y, Q=>z) oder RS entsprechend schreiben.
Ich halte von diesen nicht-standardkonformen Erweiterungen nicht viel. Dazu sollte es schon einen sehr triftigen Grund geben zu etwas einzubauen, der hier mMn nicht vorliegt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
S und R wird nicht viel mehr machen als sich selbst zu prüfen und dann entsprechend sich zuweisen.

S: scheint mir sowas zusein wie
Alles Bool:
Var1 := Var1 Or (logische Verknüpfung)

Gruss
 
Moin Kieler,


In TIA15.1 geht dies:
#MyReal_2 := #Myreal_3 := #MyReal_1 + 23.45;

Den Sinn der ersten Funktion kann ich nicht nachvollziehen. Hier ist ein mehrzeiliger bestimmt lesbarer.

Der Sinn besteht darin, dass man weniger schreiben muss.

Code:
#MyReal_2 := #Myreal_3 := #MyReal_1 + 23.45;

statt

Code:
#MyReal_2 := #MyReal_1 + 23.45;
#Myreal_3 := #MyReal_1 + 23.45;

oder

Code:
#MyReal_2 := #MyReal_1 + 23.45;
#Myreal_3 := #MyReal_2;

man kann es auch mehrzeilig schreiben:

Code:
#MyReal_2 :=
#Myreal_3 :=
#MyReal_1 + 23.45;

VG

MFreiberger
 
Mir geht es eigentlich ausschließlich um :

S=
R=

Ich finde es einfach deutlich besser zu schreiben :

Motor_ein S= Taster_ein

Als es wie folgt über eine IF Anweisung :

IF Taster_ein then
Motor_ein := True
End_IF

Bei TIA nutze ich in der Zwischenzeit sehr intensiv KOP/FUP-Bausteine mit SCL-Netzwerken für solche Aufgaben.
In KOP/FUP sind Bit-Verknüpfungen schon immer und nach wie vor eben deutlich übersichtlicher.
Für jede Aufgabe eben das passende Werkzeug :p

Gruß
Blockmove
 
Zurück
Oben