CAN-Messages aus dem TwinCAT Manager in PLC einlesen

xruslan

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forenmitglieder.
Ich bin neu auf dem Gebiet Automatisierungstechnik und arbeite Gerade an einem Projekt an der Hochschule.

Mein Problem ist folgendes:
Ich Habe eine PCI Karte von Bekhoff TYP FC5101 im PC verbaut.
Über diese Karte lese ich ein CAN-Node (Eigenentwicklung im Labor) aus.
Im TwinCAT Manager habe ich die Karte, CAN-Node und die dazu benötigten Variablen Deklariert und Konfiguriert. Die Variable ist vom TYP "VARTYPE_CANMESSAGE" und ist ein Array vom Typ UINT.

Das Can-Node ist eine Antenne, die ein ID-Tag ausliest. Die 8 Byte-Message kommt im Manager an und ich kann die Daten in der Variablen einsehen.

Jetzt komme ich leider nicht mehr weiter. Ich würde Gerne in einem PLC-Programm auf diese Daten zugreifen und diese weiterverarbeiten, oder wenigstens ein Flag setzen und Die Variable vieder mit Nullen beschreiben.

Wie kann ich dies erreichen? Leider habe ich keine aussagekräftige Beschreibung oder Anleitung gefunden.

Vielen Dank im Voraus
 
Hallo!

Ich gehe jetzt einfach mal davon aus, dass Du auch das Lizenzlevel PLC hast bzw. im 30-Tage-Demomode arbeitest.

1.)
Das weitere Vorgehen wäre nun, im PLC Control ein PLC Projekt zu erzeugen. Beim ersten Start des Programms öffnet sich Maschine.pro als Beispielprojekt.

Zum Datenaustausch mit der E/A werden nun PLC-seitig Eingangs und Ausgangsvariablen benötigt, die z.B. in der Form

Code:
DataArrCANIn   AT%IB0  :ARRAY[0..7] UINT;
DataArrCANOut AT%QB0 :ARRAY[0..7] UINT;
2.)
Wenn Du nun noch etwas Quellcode erzeugste und die Werte bearbeitets, alles fehlerfrei übersetzt (Wichtig: vorher speichern), erhälst Du eine Symboldatei MeinProjekt.tpy , die unter der SPS-Konfiguration im System Manager eingefügt werden kann. Durch Öffnen mit "+" navigierst Du bis zu den Eingängen/Ausgängen und findest dort die erzugten Variablen.
Nun kannst Du per Rechtsklick auf diese Varibalen eine Verknüpfung zu den Nodes der FC5101 herstellen.

3.)
Anschließen das Projekt bzw. die Konfigruation unter Aktionen aktivieren und in den RUN-Modus schalten.

4.)
Danach kannst Du Dich mit dem PLC Control einloggen, und den Programmablauf beobachten.

Noch Fragen? Fragen!

Marco
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Marco,
vielen Dank für die schnelle Antwort.

Mittlerweile bin ich auch schon soweit gekommen, dass ich die Variablen einlesen konnte. Ich musste nur eine zusätzliche Task erzeugen, die schneller als die anderen läuft, damit die Daten auch schneller erfasst werden.

Aber vielleicht könntest du mir weiter helfen.
Die Eingangsariable die ich im CAN-Node einlese behält die daten, bis ich diese manuel im Karteiraiter "ONLINE" mit klicken auf "Schreiben" zurücksetze.

Dies möchte ich jetzt aus dem PLC-Programm machen. Leider Kann ich auf diese Variable nicht schreiben. Auch dann nicht, wenn ich diese Variable in meiner Task erzeuge (Variablensymbol wird dann blau) und die Variable dann im Karteiraiter "Export" des Projektes exportiere. Diese taucht dann als Globale Variable im Projekt auf, jedoch ohne Schreibzugriff.

Gibts es da einen Trick?

MfG

Rus
 
Hallo Rus,

ich verstehe noch nicht so ganz das Problem?!

Die zusätzliche Task hat Dir als Einstieg gedient? Okay, die vergessen wir jetzt und löschen diese.

Alles, was Du nun an Variablen im PLC Programm angelegt und auf die Node/Karte verknüpft hast, wird nun durch die PLC bedient. Wertänderungen in der PLC sind also Wertänderungen für die Node.
Auf E/A Ebene direkt kannst Du nicht schreiben, sondern nur forcen.

Gruß....
 
Hallo Marc,
ich habe die gleichen Schritte unternommen, die du beschrieben hast. Leider hat wurden die Werte der Variable aus dem Manager nicht übernommen, bis ich das Programm, wo die ich Can-Variablen deklariert habe, nicht einer schnelleren Task angefügt habe. Aber egal.

Jetzt möchte ich den Wert der Variable, die ich eingelesen habe wieder auf Null setzen. Da dies ja nicht von alleine geschiet, habe ich versucht diese zurückzusetzen. Leider ohne Erfolg da ich auf die Variable nicht schreiben kann.

Gruß
...
 
Hallo ,
nochmals vielen Dank für die Hilfe.
Anbei mein Ordner mit dem Testprojekt.

Hier Kurz die Erläuterung:
Im Manager habe ich unter Gerät1-->Box1-->Eingänge
Eine Variable CANmessage angelegt. Diese ist mit der Globalen Variable PlcCanMessage des Projets "test01" verknüpft.

Das Einlesen funktioniert wunderbar und ich kann im PLC Projekt die einzelnen Bytes der Message auslesen. Jetzt habe ich einen Button erzeugt mit dem ich den Wert der Variablen "CANmessage" zurücksetzen möchte. Wie kann ich dies lösen?

MfG
Rus
 

Anhänge

  • can_test_01.zip
    37,8 KB · Aufrufe: 20
Hallo!

Jetzt habe ich einen Button erzeugt mit dem ich den Wert der Variablen "CANmessage" zurücksetzen möchte. Wie kann ich dies lösen?
Gar nicht! CANmessage ist doch eine Eingangsvariable die aus der CAN Node kommt und dort Ihren Ursprung hat. Sie muss also von dort zurück gesetzt werden.
 
Zurück
Oben