# Twincat 3 - I/O Idle Task und PlcAuxTask



## seehma (15 Oktober 2019)

Hallo Leute,

Wir haben bei einer Anlage gerade ein paar Performance Probleme und versuchen die zu lösen. Eine Frage die dabei immer wieder mal auftaucht ist: Was macht diese I/O Idle Task?

Beim PlcAuxTask wurde uns erklärt dass diese das Variablen-Handling zur Außenwelt übernimmt. Also kommt eine Anfrage über den ADS Router eine Variable abzufragen, dann macht die PlcAuxTask im nächsten Zyklus einen Snap und stellt sie zur Verfügung. Deshalb kann die auch irgendwo im nieder-Prioren-Bereich rumwerklen.

Aber was genau macht diese I/O Idle Task? Die I/Os selbst werden ja vermutlich mit einem eigenen Dienst gekoppelt (also Task <-> IO Abbild) oder?

Vielleicht habt ihr ja eine Erklärung, denn auf der Beckhoff Seite hab ich sie mal nicht gefunden.

Sg und schon mal Danke
M.


----------



## Guga (15 Oktober 2019)

Die IO-Idle Task ist u.a. zuständig für die StateMaschine des EtherCATs... 
Für die IOs selber (also EtherCAT triggern und Daten transferien) ist sie nicht zuständig.
Allgemein würde ich mal sagen: Die Standard-Konfig ist eigentlich OK, viel langsamer als die 1msec würde ich sie nicht machen da du sonst irgendwann Zeit-Probleme bekommst weil timouts der Geräte anschlagen wenn sie hochgefahren werden..
Die Prio kann man manchmal etwas vermindern... aber hier muss das Gesamtbild im Auge haben.

Zur Aux-Task... sie ist eigentlich in einer niedrigen Prio wie du oben geschrieben, kann sich aber bei Onlinechanges in der Prio hochboosten. Davon bekommt der Nutzer aber nichts mit.

Ich würde tatsächlich schauen ob jemand vom Beckhoff-Support sich das mal anschauen kann. Ist viel Erfahrung oder aber Bauchgefühl. Klare Regeln sind eher selten nach meiner Erfahrung.

Guga


----------



## seehma (16 Oktober 2019)

Hi,
Danke für die schnelle Antwort. Grad nochmal für mich:

I/O Idle Task: Zum Abhandeln der ganzen IO Dinge wie Parameter über Asynchronen Kanal (CoE) schreiben/lesen, State Machine Ethercat und diese Dinge. 
ABER nicht die zyklischen Dinge, dazu gibts was eigenes.
PlcAuxTask: Zum Abhandeln der ADS-Requests von Ex-"Echtzeit".
Hilft mir schon bei der Fehlersuche, somit kann ich den Idle Task fast ausschließen...

Sg
M.


----------



## oliver.tonn (16 Oktober 2019)

Ein befreundeter Freiberufler hatte die Tage ein ähnliches Problem. Habt Ihr einen Beckhoff AX im Einsatz mit einer TwinSAFE Karte?
Ansonsten zieht mal den EtherCAT-Bus ab und, soweit es dann schneller läuft, steckt ihn Slaveweise wieder an.


----------



## seehma (16 Oktober 2019)

Hallo Oliver,
Danke, leider hats nix mit AX zu tun, wir haben hier ganz andere Antriebe eingebaut. 
Das Problem kommt vermutlich von mehreren Seiten:

zum einen zuviel und ineffizienter Code in zu kurzer Zeit -> da sind wir grad beim Ändern
zum anderen sieht es so aus als spuckt da ein Windows-Treiber rein, vermutlich ein nicht "Standard-Beckhoff-Treiber" -> Teilweise werden die Frames um 500us zu spät geschickt 
(sieht man beim Master in der DC-Diagnosis Liste)
ein Antrieb bekommt das Frame dann manchmal in seiner Sperrzeit geschickt, was ihm nicht schmeckt -> Time-Shifts müssen noch richtiggestellt werden

Danke für die hilfreichen Hinweise! Falls ich noch was spezifisches finde das erwähnenswert ist, kommts hier rein!

Sg
M.


----------



## Guga (17 Oktober 2019)

Bei DC Jitter  > 500µs bist wie du erwähnst bei Treibern.
Punkt #1 ist eigentlich immer erst mal zu kontrollieren ob der korrekte Echtzeittreiber von TwinCAT installiert ist.
Punkt #2 ist mögliche andere (Fremd)-Treiber auf der Netzwerkkarte zu de-aktivieren (sowas wie GigE,.....)
Das sind die einfachen Sachen, danach wirds "lustig" und das Umfeld wird groß. 

Sagt doch mal. 
Wie heisst der installierte EtherCAT-Treiber, Welche TwinCAT - Version nutzt du (es gibt da eine Konstellation mit der 4022.25 und DC Problemen), welche HW (Beckhoff oder andere), was ist da sonst noch installiert.


----------



## seehma (21 Oktober 2019)

Hallo Leute,
Hab ein kleines Update, nachdem Beckhoff uns noch ein paar Registry Einträge geschickt hat die leider alles nichts gebracht haben. Hab ich mich selbst ein wenig auf die Suche gemacht.
@Guga: Das mit den Fremd Protokollen und Treibern haben wir bereits gemacht, es ist nur noch der Twincat-Treiber und das TCP/IP V4 aktiv -> dies so zu machen ist generell eine gute Idee .

Der andere Punkt mit dem korrekten Echtzeittreiber ist etwas interessanter. Es sieht so aus als wäre hier eine alte Ethercat PCI Karte eingebaut (Intel Pro 100S Chip). Hier lässt sich nur ein Ethercat-Echtzeit-Treiber bis zu einer gewissen Version 3404 installieren. Die anderen Karten, die direkt am IPC verbaut sind haben einen neueren Treiber installiert (3506). Wenn man sich die DC-Diagnose anschaut dann sieht man sofort, dass die Intel Pro 100S Master extrem Jittern die direkt verbauten aber nicht.

Als Twincat Version ist die 3.1.4022.29 installiert, sonst läuft eigentlich nix besonderes was hier noch Einfluss haben könnte. Ich hab das mal so an Beckhoff weitergegeben und wir testen parallel noch mit einer anderen Ethercat-Master-Karte.

Sobald es was neues gibt, meld ich mich wieder ;-).

Sg
M.


----------



## Guga (21 Oktober 2019)

Es gibt (ohne Gewähr) eigentlich nur zwei Echtzeittreiber die je nach HW genutzt werden. Mir nicht bekannt wäre das hier etwas nicht gepflegt würde.
Ich hatte aber schon einmal den Punkt das auf HW-Ebene irgendwelche PCI zu xxx (oder umgekehrt) Bridge auf dem Motherboard verbaut waren die eine schöne Latenz bewirkt haben. Das Ganze ist aber schon lange her sodass meine Erinnerung sich nicht mehr an die Details ausdehnt.


Manchmal ist es eben nicht die SW sondern tatsächlich die HW. Beckhoff HW oder andere?
Guga


----------



## seehma (21 Oktober 2019)

Hallo,
Also es war folgende Karte: https://www.beckhoff.com/english.asp?pc_cards_switches/fc9002_fc9004.htm
Wir haben sie jetzt durch eine PCI-e Karte getauscht und das Jittern ist weg.
Ich bin gerade noch beim Abklären, was da sein kann. Vielleicht mit Win10+aktuellem Twincat nicht kompatibel oder so? Ich weiß eigentlich auch nicht warum diese "alte" Karte verbaut wurde (bin da auch nur zur Unterstützung hin), wir haben normal nur noch die PCI-e Dinger im Einsatz. Vermutlich von einem alten Rechner ausgebaut und halt wieder verwendet...
Sg M.


----------

