TIA Zähler in Graph Hochzählen und Zählstand abfragen

Qwisp

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,
ich arbeite seit einer Woche mit der Software TIAPortal ( Version 15), und habe für ein Problem früher keine Lösung gefunden.
Ich muss dazu sagen, dass programmiertechnisch eher von höheren Programmiersprachen (C, Python) komme. Dementsprechend weiß ich nicht, wie es gedacht ist, dass man Programmierprobleme in TIA-Portal löst. Mit GRAPHCET habe ich schon in der Berufsschule zu tun gehabt, genauso wie mit Funktionsbausteinsprache (FUP).

Nun zu meinem Problem: Immer, wenn das Signal einer Lichtschranke von 0 auf 1 geschaltet wird (die Lichtschranke wird in der PLC-Variablen Tabelle als Variable vom Typ "bool" dargestellt), dann soll eine Zählvariable hochgezählt werden.
Als Zählvariable habe ich zunächst einfach eine PLC-Variable vom Typ Integer definiert. Mein Ausbilder machte mir die Vorgabe, alles in GRAPH zu programmieren. Meine Idee war also, dass es 2 Schritte gibt, die Transitionsbedingungen zwischen diesen Schritten sollen sein, dass die Lichtschranke den Wert 0 oder den Wert 1 hat. Jedesmal, wenn Schritt 1 erreicht wird, soll dann als Permanente Aktion die Zählvariable um 1 erhöht werden.

Ich habe dann festgestellt, dass das mit einer Variable vom Typ Integer nicht so einfach möglich ist: Ich wollte in das Aktionsfeld einfach "Variable := Variable +1" schreiben, allerdings hatte ich bei der "Kennung" keine Möglichkeit, eine gespeicherte Aktion auszuwählen, sondern nur Temporäre. Wenn ich die Kennung "Zählvariable hochzählen" verwendet habe, dann bekam ich einen Fehler, weil zum einen die Syntax nicht richtig war, zum anderen hätte die Variable vom Typ "Counter" sein müssen.

Ich habe dann eben eine Counter Variable verwendet, damit ging es.

Frage: Ist es generell nur möglich, als gespeicherte Aktion in einem GRAPH-Schritt Counter-Variablen hochzuzählen? Was mache ich, wenn ich in einer solchen Aktion einen beliebigen Integer Wert auf einen beliebigen anderen Wert setzen möchte? Oder ist es einfach nicht so gedacht, dass man auf diese Art und Weise programmiert?


Anschließend wollte ich in einem anderen Funktionsbaustein den Wert des Zählers abfragen: Wenn der Zähler den Wert 4 hat, dann soll etwas bestimmtes passieren. Allerdings habe ich in FUP keine Möglichkeit gefunden, den Wert des Zählers mit dem Integer-Wert "4" zu vergleichen. Der CMP-Baustein hat nicht funktioniert, da die Zählvariable nicht vom Typ "Int" war. Ich konnte aber auch keinen Move- oder BCD_I-Baustein vor den Vergleichsbaustein hängen, die Möglichkeit hat mir TIA Portal nicht gegeben.

Frage 2: Wie würde ich in TIAPORTAL einen Zähler mit einem anderen Wert vergleichen, so dass ich dann einen Wahrheitswert (bool) erhalte?
 
Frage: Ist es generell nur möglich, als gespeicherte Aktion in einem GRAPH-Schritt Counter-Variablen hochzuzählen? Was mache ich, wenn ich in einer solchen Aktion einen beliebigen Integer Wert auf einen beliebigen anderen Wert setzen möchte? Oder ist es einfach nicht so gedacht, dass man auf diese Art und Weise programmiert?

Frage 2: Wie würde ich in TIAPORTAL einen Zähler mit einem anderen Wert vergleichen, so dass ich dann einen Wahrheitswert (bool) erhalte?

Also ich kann ganz normal eine Variable hochzählen und vergleichen, leider kein "+=" (in C wäre das "++") möglich.
Zähler.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich kann ganz normal eine Variable hochzählen und vergleichen, leider kein "+=" (in C wäre das "++") möglich.
Du verwendest in der Aktion nun "N" als Kennung, also "Setzen, solange Schritt aktiv ist". Ich wollte diese Kennung nicht verwenden, es für mich so klingt, als würde die Wertzuweisung rückgängig gemacht, sobald der Schritt wieder verlassen wird.
 
Das bedeutet jedoch nur das es in dem jeweiligen Schritt passiert, welche möchtest du den verwenden?

Ich wollte die "CU"-Kennung verwenden (Count up). Aber wenn "N" so funktioniert, dass die Aktion danach "gespeichert" bleibt (so haben wir das im Berufsschulunterricht genannt), und die Variable den Wert behält, den ich ihr gegeben habe, dann ist ja alles gut. Dann verwende ich als Kennung also einfach "N".
 
Zurück
Oben