Variablenverknüpfung im System Manager

fontsix

Level-1
Beiträge
20
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich habe wieder mal ein paar Fragen bezüglich des Umgangs mit TwinCAT.

Ich habe ein Programm geschrieben was über ADS die Position eines Drehgebers ermittelt. Nun möchte ich einfach mal testweise einen Ausgangskanal einer digitalen Ausgangsklemme ansteuern.

Dazu deklariere ich im PLC Control

Code:
Output AT %QX99.0 : BOOL;

und schließlich im Programm

Code:
Output := TRUE;
.

Wenn ich mich nun auf der Steuerung einlogge und das Programm starte, sehe ich das die Variable Output den Wert True annimmt.

Nun muss diese Variable ja noch im Systemmanager mit dem Kanal der digitalen Ausgangsklemme verknüpft werden.

out.JPG

Nun meine Fragen :

Warum sind unter dem Punkt SPS-Konfiguration 2 Ausgänge verknüpft ?

Warum nimmt der Wert der Variablen im System Manager nicht den Wert True an ? Im PLC Control ist er bereits auf TRUE. Dasselbe Problem habe ich eigentlich auch mit dem Positionswert, im PLC Control sehe ich die aktuelle Position, aber im Systemmanager unter dem Punkt SPS Konfiguration kann ich einfach den aktuellen Positionswert nicht beim Eingang sehen (im Moment des Screenshots war die Variable allerdings auch nicht verknüpft)

Wenn ich die Zuordnung überprüfe erhalte ich immer eine Meldung das ich Gerät 3 (RT-Ethernet) und Gerät 4 (EL6751 CANopen Masterklemme) mit einer Task verknüpfen soll, da es einen Sync Master benötigt. Was muss ich mich darunter vorstellen ?

Ebenso erhalte ich noch eine Fehlermeldung "Verknüpfungskonflikt ! Gleiche Daten von 'TIID^Gerät 2 (EtherCAT (v2.10 only))^Klemme 4 (EK1100)^Klemme 7(EL2002)^Channel 1 Output' werden von verschiedenen Quellen beschrieben"

Aktuell ist eine CX9010 mit einer CANopen Masterklemme, einer EtherCAT-Verlängerungsklemme, 2 EtherCAT-Kopplern und ein paar digitale I/O-Klemmen verbaut.


Vielleicht könnte mir jemand Hilfestellung geben wie man die Variablen aus der PLC Control richtig im System Manager verknüpft.
 
Hallo,

Du vergibst eine explizite Adresse im Code, das denke ich ist der Grund der Meldungen.

Die Adressen und Verknüpfungen werden bei TwinCat im SystemManager gemacht. Im Code werden die IOs nur als solche mit einem Platzhalter deklariert.

z.B.
strIn AT %I* : str_SupplyInputs; (* hardware inputs *)
strOut AT %Q* : str_SupplyOutputs; (* hardware outputs *)

Dann im SystemManager die Ein/Ausgänge verknüpfen und Zuordnung erzeigen lassen (jetzt sind auch die Adressen berechnet)

Zu SyncUnit:
Schau mal in deinem Gerät2 unter dem Reiter EtherCAT die Einstellung "SyncUnit Zuordnung" an hier muss deine Task verknüpft sein.

cheers
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo DaHauer und danke erstmal für deine Antwort.

Ich habe mich nun nochmal durch die Hilfe des TwinCAT System Managers durchgearbeitet und bin darauf gestossen, dass man aus dem Systemmanager heraus globale Variablen im PLC Control generieren lassen kann indem man die Variable auswählt und Verknüpfte Variable erzeugen in .... auswählt.

Danach werden diese Variablen als Globale Variablen im PLC Control unter dem Punkt TwinCAT_Import angezeigt

import.JPG

Nun sollte ich ja ganz normal im Code diese Globale Variable mit Ihrem Namen ansprechen können. Ich setze diese Variable auf TRUE. Diese Variable ist einfach nur mit einem Ausgangskanal einer 2-kanaligen dig. Ausgangsklemme verknüpft, denn ich testweise schalten möchte.

Leider ändert sich der Wert der Variable aber nur in der PLC Control, nicht aber in der SPS Konfiguration.

verkn.JPG

Die Variable ist mit dem 1. Kanal der digitalen Ausgangsklemme EL2002 verknüpft. Schreibe ich den Wert des Ausgangs manuell im System Manager auf 1, quasi direkt im Gerätebaum, dann ändert sich der Wert auch entsprechend und die LED des dazugehörigen Kanals leuchtet.

Langsam weiß ich echt nicht mehr weiter.


Nun nochmal zur Zuordnung. Leider gibt es diesen beschrieben Punkt "SyncUnit Zuordnung" bei mir nicht. Wenn ich die Konfiguration überprüfe erhalte ich wieder dieselben Fehlermeldungen.

EDIT : "Ich muss noch dazu sagen das das Gerät 3 um den TCIXPNPE1 handelt, also den 1. Netzwerkadapter der CX9010 und bei dem Gerät 4 handelt es sich um die CANopen Masterklemme EL6751"

gerät.JPG

Hab nun die Sync Unit Zuordnung gefunden. Leider bin ich gerade etwas überfragt wie ich das mit einer Task verknüpfe und kann das in der Hilfe auch nicht wirklich finden.
 
Zuletzt bearbeitet:
Hallo,

Der Nachteil beim Verwenden von expliziten Adressen ist bei einer Änderung kann es sein, dass bestehende Verknüpfungen nicht mehr existieren. Durch die Deklaration mit Platzhaltern, überlässt du die Adressberechnung komplett dem SystemManager und hast eine nervige Fehlerquelle weniger ;-)

noch ein paar Fragen, damit ich klar sehe:

Ist bei deinem Ausgang der Klemme im SystemManager im Reiter "Variable" auch dein Ausgang aus deinem Programm verknüpft? Steht in "Verknüpft mit" was drin?

Wenn nein, dann fehlt hier die Verknüpfung.
Oder im SystemManager dein Projekt nach dem Kompilieren nochmal einlesen, Zuordnung erzeugen und in Run Modus schalten.
Wenn du dann im Programm dein Bool setzt muss es im SystemManager an der Klemme auch sichtbar sein, dann ist die Verknüpfung auch korrekt.

Zu deinem Sync Problem;
Bei deinem CAN Master willst du ja sicher wissen in welchem State der ist (zumindest würde ich das ;-) ) Probier doch mal in folgendes:
Leg in deinem Programm ein UINT als Eingang an, so dass es im System Manager erscheint, dann verknüpfe den CAN Master State mit deinem UINT und das Gemeckere vom SystemManager sollte aufhören. (Die Verknüpfung bewirkt die Synchronisation mit der Task in der dein UINT im Programm refreshed wird)

hoffe das hilft dir weiter
cheers
 
Hab jetzt alles nochmal überprüft, den Code habe ich deiner Anweisung entsprechend abgeändert in

Code:
Output_2  AT %Q* :  BOOL;

Der Wert der Variable ändert sich dennoch nicht.

plc1.JPG

system1.JPG

system2.JPG

system3.JPG

Wie man sieht sollte die Variable aus dem Programm richtig mit dem Kanal 2 der dig. Ausgangsklemme verknüpft sein. Über "Erzeugt Zuordnung" hat sich auch nix geändert.


Wegen der Sache mit der Sync Unit werde ich mich jetzt nochmal beschäftigen.

Vielen Dank erstmal :(
 
So, die Verknüpfung scheint nun Ordnungsgemäß zu funktionieren.

Ich habe das Gefühl das es an dem Button "Aktiviert Konfiguration" gelegen hat. Den habe ich nicht weiter beachtet. Das Problem mit der Sync Unit zumindest beim CANopen Master ist auch erstmal behoben.

Nun wäre es noch interessant zu wissen, ob es denn nur möglich ist wenn die SPS sich um RUN befindet die verknüpften digitalen Ausgangskanäle zu setzen oder ob es auch im CONFIG Mode möglich ist und inwiefern dafür ein Bootprojekt erforderlich ist.

MfG fontsix
 
Genau, "Konfiguration aktivieren" das habe ich vergessen zu erwähnen.
Um Werte aus deinem Prog zu schreiben muss TwinCat im Run Modus sein oder Free Run, besser aber im Run Modus.

Ein Bootprojekt wirst du im Run Modus nicht zwingend brauchen (irgendwann ja schon mal ;-) ) der System Manager startet mit ner Meldung dass kein Bootprojekt vorhanden ist und setzt dann den Run Mode.
 
Zurück
Oben