TwinCAT Start mit virtuellen Tasks

Macbeth

Level-1
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
TwinCAT 2.10.0
Windows XP Professional
EK1100 und EtherCAT-Klemmen

MoinMoin zusammen,

ich habe ein Problem, das ich gerade noch nicht in den Griff bekommen.
Ich habe im Systemmanager einen "Zusätzlichen Task" angelegt, der eine einzige Verknüpfung herstellt. (Autostart ist aktiviert)

Ich brauche diesen Task, damit ich mit LabVIEW die ADS-Schnittstelle verwenden kann.

Funktioniert auch gut. Einziges Problem: Nach dem Booten scheint dieser Task nicht zu laufen, obwohl TwinCAT im RUN-Mode ist.
Wenn ich ICON-(rechtsclick)-System-Restart mache, dann geht es.

Kennt jemand das Problem?

Gruß
Macbeth
 
Hallo Macbeth
Mit welchem Build der Version TwinCat 2.10 arbeitest Du. Das siehst Du, wenn Du mit der rechten Maustaste aufs TwinCat Rad unten rechts gehst und dann im Reiter "Eigenschaften" ist FETT BUILD und eine Nummer.

Welche Version von LabView verwendest Du und verwendest Du die ADS - DLL oder ADS OCX.

Falls Du ADS OCX verwendest mit LabVies 8.6 wäre ich um ein kleines Beispiel um die Kommunikation aufzubauen dankbar, da ich auf den zusätzlichen Task (Port 301) nur mit ADS DLL und nicht mit ADS OCX zugreifen kann (bin nicht der LabView Spezialist, möchte da aber weiterkommen :p )

Gruss

Samba
 
Jau, mein Twincat startet grün (Run-Modus)

Version: TwinCAT I/O 2.10.0, Build 1328

Ich verwende die OCX-Variante (also mit ActiveX-Containern), und das geht eigentlich ohne Probleme. Im InfoSys von Beckhoff steht ein ganz gutes Howto. Wenn's da klemmt, bitte melden.

Eine Sache, die ich nicht so ganz einleuchtend finde, ist die Zuordnung der SPS-Variablen. (Bin aber auch noch nicht so lange mit der Beckhoff-Hardware auf Tuchfühlung).

Ich brauche in einer Anwendung ziemlich viele Variablen (50 Thermoelemente und noch andere Eingänge).
Laut InfoSys müsste ich jetzt einen "zusätzlichen Task" anlegen, der alle Variablen, die ich brauche, mit den Hardware-Ein-u.Ausgängen verknüpft. Ich habe da noch keine Methode gefunden, das irgendwie automatisch zu machen, und ich setze mich nicht hin und klicke 60 mal auf >Eingänge>Variable einfügen>... und mache alle Zuordnungen.

Es gibt da noch eine andere Möglichkeit: Man erstellt nur eine einzige Zuordnung und "zwingt" damit TwinCAT, das Prozessabbild zu holen. Und dann kann man mit ADS direkt auf die Bereiche des Prozessabbilds zugreifen.
Beispiel:
Ich verknüpfe einen Thermoelement-Eingang mit "TE1" im zusätzlichern Task. Die ADS-Info (im "Variable"-Reiter zeigt dann:
Port: 301, IGrp: 0xF020, IOffs: 0x0, Len: 2)

Jetzt kann ich mit LabVIEW auf Port 301 verbinden und mit IGrp und Offset auf den Wert zugreifen.
Genausogut kann ich aber auch auf
Port: 300, IGrp: 0x12001, IOffs: 0x1C, Len: 2
zugreifen, da steht nämlich die "Original-Variable", die über die Verknüpfung auf dem Port 301 abgebildet wird.
Meinen 2. Thermoelement-Kanal finde ich hier:
Port: 300, IGrp: 0x12001, IOffs: 0x20, Len: 2,
dafür brauche ich keine Verknüpfung. Alle anderen vairablen hole ich dann auch vom Port 300.

Wichtig ist nur, dass es überhaupt mindestens EINE Verknüpfung gibt, sonst läuft keine EtherCAT-Kommunikation und ich kann nicht auf den Port 300 zugreifen.

Und -zurück zu meinem Probelm- dieser zusätzliche Task läuft halt leider nicht automatisch los. Da muss ich dann per Hand einen >rechtsKlick>System>Restart machen, dann gehts. Aber im Notfall kann man sowas ja mit AutoIT machen (das darf aber dann lieber kein Kunde sehen...)

Puh, lange Rede, auch ziemlich komplex. Alles unklar?
Gruß
Macbeth
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Samba: hast Du einen "zusätzlichen Task" angelegt? Und in diesem task eine Verknüpfung zu einem Hardware-register.

>Zusätzlicher Task>rechtsklick>Task anfügen
Autostart anklicken
bei Eingänge >rechtsklick> Variable einfügen>Name und Datentyp wählen
>Verknüpfen mit> Klemme/Register wählen

Klick auf die neue Variable, dann sieht man rechts die ADS-Info (Port,IGrp,..)

ok?
 
Bist du denn überhaupt sicher, dass die Task nicht läuft? Oben schreibste ja, dass es so "scheint".
Wenn du im System Manager auf die Task klickst und dann auf den Karteireiter "Online" gehst: werden dort Werte > 0 angezeigt?
 
Mir stellen sich da so ein paar Fragen.

1) Wozu braucht man in diesem Fall einen extra Task?
2) Normalerweise kann man über Port 801 kommunizieren, auch wenn man einen zusätzlichen Task angelegt hat. Ich mache das hier ständig.

Irgendetwas ist an den Fragen und Erklärungen faul.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich keinen zusätzlichen Task anlege, läuft überhaupt keine EtherCAT-Kommunikation. Sieht man zB auch an den LEDs der Netzwerkkarte und am Koppler.
Sobald ein "zusätzlicher Task" läuft, flackern die LEDs und dann kann ich sowohl über Port 300 als auch über 301 zugreifen.

Ich verwende ausschließlich TwinCAT I/O, keine SoftSPS.

Geht das auch anders?
 
Ach so. Ich hatte das mit Ethercat-IO nicht wahrgenommen. Ja mit der Soft-SPS ist das ein Kinderspiel. Die Verarbeitung der Werte übernimmt diese und die Ankopplung an Variablen kann man per ADS-Protokoll auf Port 801 machen.

Dein Problem deutet darauf hin, dass du einen Timeout bekommst und zwar weil ein Kommunikationstask nicht läuft.
 
@Macbeth

Die Hilfe im Info System habe ich gesehen und auch benutzt. Mit ADS DLL funktioniert es auch einwandfrei, habe aber mit ADS OCX meine Mühe trotz Info System.
Wenn Du mir da ein Beispiel zusenden könntest wäre ich Dir dankbar.

Gruss und Danke

Samba
 
OK, klar. Habe die ZIP-Option nicht gesehen.

Hier ein Beispielprogramm (extra in der alten LabVIEW 7.1-Version), mit dem ich meine ELxxxx-Klemmen über EtherCAT auslese.
(15 Thermoelement-Klemmen EL3314 und andere...)
Verwendet wird TwinCAT I/O und die ActiveX-Elemente der ADS Schnittstelle (OCX).
TwinCAT I/O muss im RUN oder CONFIG-Mode sein.

Da ich OpenG mit LabVIEW einsetze (würde ich auch jedem empfehlen), habe ich hier eine llb mit allen SubVIs gepostet. Wenn man OpenG hat, reicht das Toplevel-VI.

Viel Spass!
 

Anhänge

  • beckhoff_ethercat_OCX.zip
    192,7 KB · Aufrufe: 37
Zurück
Oben