Variablenzugriff TwinCat 3

Beckhoff_SPS

Level-1
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,


ich verwende TwinCat 3. In TwinCat 3 habe ich ein Projekt erstellt. Dieses Projekt besteht aus zwei PRG (A_PRG und B_PRG). In A_PRG gibt es eine Variable A_Var.
Code:
VAR
     ​A_Var: WORD :=1200;
 END_VAR
Dieser Variable möchte ich in B_PRG verwenden. Folgenden Code habe ich in B_PRG:
Code:
 B_VAR := A_PRG.A_VAR;

Das funktioniert nicht. Ich habe bereits versucht die Variable A_Var als globale Variable anzulegen. Auch das führte nicht zum Erfolg.
In beiden Fällen wird der Wert nicht in B_VAR geschrieben.



Hat jemand eine Idee, was ich falsch mache?



Vielen Dank im Voraus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort, ich habe jedoch nur eine SPS und möchte hier aus verschiedenen Programmen auf eine Variable lesend und schreibend zugreifen.
Geht das eventuell mit Var_External? Ich habe folgenden Code getestet.
Ich deklariere A_VAR als Globale Variable und möchte sie dann so in B_PRG einführen:
Code:
VAR_EXTERNAL
   A_VAR: WORD;
END_VAR

Dort bekomme ich dann bei dem Versuch A_VAR B_VAR zuzuweisen die Fehlermeldung, dass A_VAR nicht definiert ist. Weis jemand woran das liegen kann?
 
Zuletzt bearbeitet:
Du müsstest in der GVL das Attribut "qualified_only" löschen. Allerdings brauchst Du in TwinCat gar keine VAR_EXTERNAL, sondern kannst direkt auf die globale Variable zugreifen.
 
Du müsstest in der GVL das Attribut "qualified_only" löschen.
Kann er, muss er aber nicht. Einfach eine Globale Variablen Liste (GVL) anlegen und dort die Variablen eintragen. Bei vorhandenem Attribut "qualified_only" erfolgt der Zugriff über GVL-Name.Variablenname
Deine Variante sollte aber bei einem lesenden Zugriff auch funktionieren. Bei FBs geht es auf jeden Fall.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider habe ich immernoch Probleme bei der Zuweisung.
Ich habe das qualified_only in der GVL gelassen um das Programm übersichtlicher zu gestalten und verwende nun die Variablen indem ich über GVL-Name.Variablenname zugreife. Der Zugriff scheint auch zu funktionieren, im Online Modus hat die Variable den richtigen Wert. Wenn ich nun aber einer anderen Variable den Wert der globalen Variable zuweisen will, funktioniert dies nicht. Ich bekomme keine Fehlermeldung allerdings wird der Wert trotzdem nicht geschrieben. Hier ein Screenshot des laufenden Programms:
Bild.png

Wo kann das Problem liegen, dass ich den Wert nicht schreiben kann?
 
Dann könnte es einer der Klassiker sein. SPS ist zwar im RUN, aber SPS-Programm wurde nicht gestartet oder die PRGs werden nirgendwo aufgerufen.

Ich habe zwei globale Variablen, die ich in den selben PRGs verwende. Bei der einen Variable funktioniert die Zuweisung, bei der anderen jeoch nicht. Deshalb kann es denke ich nicht am Aufruf der PRGs oder der SPS liegen.
Hast du vielleicht noch einen andere Idee?
 
Ich habe nun Screenshots erstellt, dabei ist mir aufgefallen, das ich mich vorhin vertan habe. In meinem einen PRG ist die Zuweisung möglich, in meinem anderen PRG nicht.
Hier das PRG in dem die Zuweisung möglich ist:
PRG_funktionstüchtig.png


Und hier das PRG in dem die Zuweisung nicht möglich ist:
PRG_nichtfunktionstüchtig2.png
PRG_nichtfunktionstüchtig.png



GVL:
GVL.png


Anstelle eines PRGs, welches die anderen PRGs aufruft, sind die PRGs in der PlcTask hinzugefügt, sodass diese hieraus regelmäßig aufgerufen werden.
Aufruf.png


Gibt es bestimmte Einstellungen, die in den PRGs vorgenommen werden müssen, damit das funktioniert?
 
Zurück
Oben