Strukturierter Text Grundlagen

hansol1991

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allerseits.
Bin neu hier und hab gleich sofort eine Frage.
Ich versuche mich gerade in die Programmiersprache (ST) einzulesen und teste immer wieder Funktionen mit CoDeSys.
Nun bin ich auf ein Problem gestoßen: Ein CTUD wird meines Wissens wie folgt eingegeben: CTUD_1(CU:=S1,CD:=S2,RESET:=S3,LOAD:=S4,PV:=5);
Leider zählt er aber weder vorwärts noch rückwärts.
Kann mir jemand helfen mit dieser Sprache?
Außerdem habe ich folgende Fragen:
Bei einer CASE-Anweisung geht es letztendlich immer um eine Zahl (INT) oder? Wenn ich nämlich case 1, 2 oder 3 voraussetze um eine Bedingung zu erfüllen, so muss es sich um eine INT Zahl handeln.
Ich habe mich schon im Internet wund gesucht aber ich finde keine vernünftigen Beispiele zur Umsetzung von Flip_Flops, Zählern, Impulsgebern, Zeitgliedern, usw. in den Strukturierten Text.
Kennt jemand Links, oder kann jemand selbst weiterhelfen, wie man solche Bausteine im ST, eingibt?
Danke im Voraus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bei Problemen und/oder Fragen kann es ganz hilfreich sein, wenn man den relevanten Codeteil hier einstellt.
Im Falle deines Counters vielleicht nicht nur die Syntax sondern auch wie du ihn im Code stehen hast - vielleicht ja in einer Abfrage oder einer anderen bedingten Bearbeitung ... 8)

Gut wäre auch, zu wissen was die Schnittstellen-Variablen sind (IN's , TEMP ... ?)

Gruß
Larry
 
Bei CASE geht es um eine Zahl, das ist korrekt. Aber genaugenommen ist der Datentyp dabei recht unwichtig. Es macht ggf. auch Sinn, statt einem INT ein ENUM zu nehmen oder so. Da ist die Sache flexibel.

Was Flip-Flops und Co. betrifft: Das sind alles auch nur Funktionsbausteine, folglich reicht die Kenntnis von FB-Namen und Parametern. Aufrufen tut man das Ganze ja immer gleich. Die grundsätzliche Funktionsweise der jeweiligen FB's findet man in der Hilfe, bei TwinCAT also im Information-System. Die unterscheidet sich ja nicht, egal ob du den FB nun in FUP oder in ST verwendest.

Wie Larry Laffer schon sagte ist ein häufiger Fehler, den Instanzaufruf innerhalb eines IF oder eines CASE oder einem FOR zu machen. Dann wird der FB nur aufgerufen, während du dich in der umliegenden Kontrollstruktur befindest. Eine Flankenauswertung in einem IF wertet z.b. nur Flanken aus, die stattfanden zwischen 2 Zyklen, in denen der entsprechende IF-Zweig aktiv war. Das gilt dann natürlich analog für deinen Zähler. Wird der "während" des Flankenwechsels an S1 nicht ausgeführt, kann er den natürlich nicht erkennen und folglich auch nicht zählen.
 
Zurück
Oben