Vollständige Operatorenliste für TwinCat

Gerri

Level-1
Beiträge
822
Reaktionspunkte
37
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin heute in TwinCat auf viele operatoren für ST gestossen die nicht in der Hilfe zu finden sind. Kennst jemand einen Link für eine vollständige operatorenliste?

Im Augenblick würde es mir auch schon weiterhelfen, wenn mir jemand einen Tip für "Sprünge" in ST gibt!
gruss
Gerald
 
Hallo,

soweit ich weiß gibt es keine Sprünge, man könnte sich nur mit IF Anweisungen behelfen.

Eine komplette Liste der ST-Operatoren sind in der Eingabehilfe zu finden. Einfach im ST-Editor die Taste F2 drücken und im linken Feld "ST-Operatoren" bzw. "ST-Schlüsselwort" auswählen.

gruß bonatus
 
funkt nicht... als Beispiel - ich hab den Operator Move und will wissen was der macht.
Ich drücke F2, füge ihn ein oder wähle den Befehl an und drücke F1. Und schon komme ich zur allgemeinen Hilfe.
Hier finde ich nichts über den Move Operator.
 
OK-stimmt. :oops:

Hab auch nichts in der Hilfe gefunden.

In CoDeSys steht in der Hilfe folgendes darüber:
MOVE:
Arithmetischer IEC Operator: Zuweisung einer Variablen auf eine andere Variable eines entsprechenden Typs.

Ich denke, das wurde einfach so von CoDeSys übernommen aber in der Hilfe nicht eingbaut.

Der Operator ist desweiteren ohne jegliche Nutzen für die Programmierung.

gruß bonatus
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Keine Ahnung ob man in ST Sprünge programmieren kann, aber verwenden sollte man diese eh nicht. Sprünge wie sie in AWL verwendet werden sind der Tod jeder strukturierten Programmierung.
Also angenommen die IEC sieht für ST keine Sprünge vor würde sich Edsger Dijkstra sicher freuen (wenn er denn noch leben würde).

Hallo,

soweit ich weiß gibt es keine Sprünge, man könnte sich nur mit IF Anweisungen behelfen.
...

Außer IF sollte man noch CASE als Verzweigung erwähnen. Sprünge werden ja aber auch für schleifen verwendet. IMHO sind FOR-Schleifen bevorzugen da diese wenn man keinen groben Schnitzer macht sich nicht so schnell in Endlosschleifen verwandeln. WHILE und REPEAT-Schleifen können zwar auch sehr nützlich sein aber hier ist die Abbruchbedingung immer zu berücksichtigen.

Um noch mal auf die CASE Verzweigung zurück zu kommen hier empfieht es sich fast immer auch den Defautfall "ELSE" zu berücksichtigen.
 
Ich denke auch: wer in ST Sprünge braucht macht irgendwas falsch.
Es ist im übrigen tatsächlich so, dass das die Norm so vorsieht.

Weil das weiter oben im Thread angesprochen wurde: der MOVE Operator macht nur in Verbindung mit KOP und EN-Eingang Sinn.
Es sind aber alle Operatoren in allen Sprachen verfügbar und daher darf man auch in ST
a := MOVE(b);
schreiben, wenn es einen glücklich macht. Warum der Eintrag in der Hilfe bei Twincat nicht auftaucht kann ich auch nicht sagen.
In der Codesys-Hilfe gibt es jedenfalls die vollständige Liste der Operatoren.
 
Ich kenn nur memmove und das mach schon sinn :p

Mit Schleifen, insbesondere While und Repeat sollten man in Twincat aber allgeimein ganz ganz vorsichtig sein. IdR sind sind nicht nötig weil der Code eh zyklisch durchgerödelt wird. Laut meiner Erfahrung provozieren sie geradezu Abstürze der SPS.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@MasterOhh
Da ich jetzt mal nicht davon ausgehe, das TwinCat bei Schleifen irgendwelche Bugs hat,
kann man bei deinem "provozieren sie geradezu Abstürze der SPS", davon ausgehen,
das der Programmierer wohl nicht so wirklich wusste, was er da eigentlich macht,
was naturgemäß vor allem für WHILE und REPEAT gilt.

Mfg
Manuel
 
Das Problem ist einfach mal die Zykluszeit. Twincat versucht die Schleife innerhalb eines Zyklus abzuarbeiten. Wenn das nicht klappt wirds hässlich. So zumindest hatte mir das der Support von Beckhoff erklärt als wir damit mal Probleme hatten. Uns wurde explizit davon abgeraten While oder Repeat Schleifen zu verwenden. Und wie gesagt, sind die auch unnötig.
 
Das Problem ist einfach mal die Zykluszeit. Twincat versucht die Schleife innerhalb eines Zyklus abzuarbeiten. Wenn das nicht klappt wirds hässlich. So zumindest hatte mir das der Support von Beckhoff erklärt als wir damit mal Probleme hatten. Uns wurde explizit davon abgeraten While oder Repeat Schleifen zu verwenden. Und wie gesagt, sind die auch unnötig.

Genau das meinte ich mit:
"Das der Programmierer eigentlich nicht so genau weiß was er damit eigentlich fabriziert."
Danke das du das hiermit nochmal bestätigt hast.

Das liegt aber nicht an Beckhoff/Twincat/Codesys.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schleifen

Was spricht gegen WHILE und REPEAT ? Ich verwende das sehr oft, nun ja, vielleicht weiß ich was ich damit tue. Kann Euch nicht ganz folgen. Schleifen die so lange dauern, dass TwinCAT abstürzt? Dann weiß derjenige wirklich nicht was er tut... Dafür habe ich seit immer schon GOTO bei BASIC vor 20 Jahren schon gehaßt. Überigens, es gibt Abbruchbedingungen aus Schleifen...

PS:
Man sollte beim Programmieren generell wissen was man tut.

Schönes WE

Markus.
 
Solange man einfache und "sichere" Abbruchbedingungen nutzt, kommt man auch mit WHILE oder REPEAT zurecht.

Aber oftmals sind Abbruchbedindungen ja an berechnete Ergebnisse geknüpft. Wehe wenn dann mal ein nicht einkalkulierter Fall eintritt :rolleyes:

Daher verwende ich als "Schleifen" meistens nur FOR.
Ansonsten arbeite ich gern mit selbstinkrementierenden Zählern (i := i+1) zusammen mit IF/ELSE.
Vorteil: Man kann die Steuerung damit nicht abschießen.
 
@Trinitraucher
Stimme Dir voll und ganz zu, ich wollte mich nur gegen die generelle Verdammung von WHILE und REPEAT aussprechen.

Schönes WE
 
Zurück
Oben