ADS Auslastung

Beiträge
195
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich verwendet NT_GetTime(), welche mit sporadisch ein ADS fehler 1861 (Timeout) liefert. Das ganze mache ich alles 100ms.
Bisher hatte ich auch nie Probleme damit, bis die Anlage ins Feld ging, und noch diverse Pheriphere via ADS angekoppelt wurden.

Nun vermute ich einen zu hohen ADS Traffic. Habe diverse Captures mit em ADS-Monitor aufgezeichnet und mit dem ADS Viewer analysiert.

Nun die Frage. wie kann ich nun prüfen bzw. was is ein Indiz dafür ob das ADS überlastet ist?

Habe 17 sekunden aufgezeichnet:

ca. 15500 ADS Commands , also 900 ADS Commands pro Sekunde. => 4,7MB

is das viel?

Allerdings habe ich tausende "missing" frames , das is ja wohl nich gut!?!

Wie kann ich das ordentlich analysieren, bzw. festmachen was die Auslastung betifft?

grüße und danke
 
Die Datenmenge an sich ist nicht wirklich gross. Aber 900 einzelne ADS Commands finde ich schon ziemlich heftig.

Was bringt es Dir die Windows Zeit alle 100ms einzulesen?
 
:oops: Oh, stimmt. Dann ist der Wackelkontakt an der anderen Buchse…
Könnte auch eine zu hohe CPU-Auslastung den Timeout verursachen?
Auf jeden Fall sollte es keine nennenswerte Anzahl an "missing frames" geben, egal wo…
 
Hallo Leute,

danke fürs Feedback. Das is ne TwinCat3 Steuerung (Auch der Leistungestärkste PC wurde verbaut) .. Hardware so 20-25 Antriebe..

Ja eben die Missing Frames sind doch in Indiz fpr zu hohe Auslastung!? Aber ich verstehe nich, wieso zur Laufzeit keine ADS Last angezeigt wird, oder überlast.. schon traurig..

P.S. ich brauche eine rel. genau Zeitsynchronisierung , deswegen wird alles 100ms die zeit gelesen via NT_GetTime!! Wenn ich die Software ohne Hardware und pheripheie MES etc. hab ich 66 Frames per seconds!! Es ist auch vollkommen wursch NT_GetTime brauch ca 20 ms um mir ne zeit zu liefern.. selbst wenn ich das ständig ohne Totzeit machen würde, müsste es ADS abkönnen.. fertig;)

Was könnte ich nun tun.. wenn das System wohl generell viel Traffic aufm ADS kanal hat!? würde es bringen der SPS mehr CPU zeit zu spendiren.. der Schieberegler bei "Realtime" is schon bei 80% ! und die CPU im Taskmanager ist so im schnitt bei 10%...

Ratlos...
 
Was denn genau für eine TC3 Steuerung? CXxxxx oder Cxxxx oder CPxxxx?

Wo werden denn die missing Frames angezeigt?

Nochmals wegen der NT_GetTime:
Du gewinnst aber nicht an Genauigkeit, wenn Du immer wieder die Zeit vom Windows liest.
Denn die ist ja nicht genauer als die Zeit im TwinCAT.
Das zyklische Lesen der Windows Zeit bringt nur dann etwas, wenn die Windowszeit selber
auch auf etwas synchronisiert wird (z. Bsp. per SNTP).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hey Pippen,

Das is ne C6930! haben 9 Regler AX5203 dran.. und 6 buskoppler (falls das wichtig is).

die Missing Frames kann ich ja auslesen, im ADS viewer, nachdem ich ein Capture aufgezeichnet habe!!
(P.S.: gibt ne möglichkeit die ADS Daten ausm View in XML zu exportieren, das wäre cool ... weil die Filterfunmtionen da sind übel)

und ja , ich muss die NT_GetTime funktion nehmen, weil ein exterens programm auch mit des zeit syncronisiert ist, mit dem twincat datenaustauscht. und intern ne syncroniste zeit clock habe.. (schwer zu erklären) , ist auch irrelevant. ob ich NT_GetTime verwendet oder nich, ADS sollte deswegen nich ausgelaste sein... PUNKT .. oder;)
 
und ja , ich muss die NT_GetTime funktion nehmen, weil ein exterens programm auch mit des zeit syncronisiert ist, mit dem twincat datenaustauscht. und intern ne syncroniste zeit clock habe.. (schwer zu erklären) , ist auch irrelevant. ob ich NT_GetTime verwendet oder nich, ADS sollte deswegen nich ausgelaste sein... PUNKT .. oder;)

Das ist für mich keine sinnvolle Erklärung.
Eine 100 ms-Abfrage sehe ich allerdings auch als kritisch an. Du kannst doch aber mal testweise diese Abfrage nur jede Sekunde machen. Das dürfte dein Ergebnis m.E. nicht wirklich verschlechtern und du würdest aber ggf. sofort sehen, ob es damit etwas zu tun hat ...

Gruß
Larry
 
Hey,

die NT_GetTime() hat einen Timeout (1861) verursacht! (wie oben beschrieben). Dann wurde ein ADS capture geloggt! mit den Ergebnissen wie oben erwähnt. wenn ich das Gleiche System "ohne" Hardware und "ohne" EMS system laufen lasse, verringert sich der ADS Traffic um ein 15-tel! und es gbit keine missing frames mehr!!!

d.h. von 900 Frames /sec. auf 60Frames/s . d.h. bei 60Frames/S läuft nur der timer mit dem NT_GetTime()!! es liegt also nich an der NT_GetTime funktion !!!

Meine Frage war wie man erkennen kann dass ADS Überlastet ist. Es gibt keinen Schwellwert etc. die das angeben!
Mein Problem war dass eben der Timout da war.. durch rechereche und ADS Logger und Viewer..und analyse wurde eben
der hohe traffic erkannt und die missing frames.. und das heist ja Überlast oder?
 
Hi Boris,
die absolute Anzahl ist nicht relevant. Jeder Modul (=AMS-Adresse + Port) hat einen maximalen Eingangs- bzw. Ausgangs-Puffer. Wenn z.B. deine PLC (z.B. Port 801 für TC2) in einem Taskzyklus 80 ADS-Aufrufe absendet ist Schluss.

Die Timeout Fehlernummer ist der Fallback wenn vom Partner innerhalb des (von dir gesetzten) Timeouts keine Antwort empfangen wurde. Das könnte auch vorkommen wenn die Kommunikation überlastet ist, aber im allgemeinen gibt es explizite Fehlerrückgaben (kannst ja mal nen Array von 100 NT_GetTime in einem Zyklus aufrufen -> dann siehst du es).

In der Summe würde ich 900 Aufrufe / sec als nicht relevant halten, es kommt aber wie gesagt darauf an wie viele parallel an ein ADS-Device aktiv sind.
Im Prinzip ist bei Beckhoff alle Kommunikation auf ADS-Basiert - es sei denn die Daten sind im zyklischen Prozessabbild.
Vielleicht kannst du dein Log ja mal irgendwo hochladen. Ich würde es mir anschauen und dann meinen Senf dazu geben.

Guga
 
hey Guga,

mir scheint , Du kennst dich ein wenig aus :D Habe spasshalbe 10 sollcher NT_GetTime aufruffe im zyklus aufgerufen, dann habe ich schon 200 Frames per second.

Ich habe mit dem ADS Viewer auch mal bissel rumgespielt, damit kann man zwar bissel filtern und so, aber man kann nich den traffic einzelner NetID zu NetID komunkation ermitteln etc.!? oder doch?

Grüße Boris
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch was anderes,

wenn der NT_GetTime() baustein nen Timout hat!? wie bekomm ich denn wieder zurückgesetzt? Allein Das START flag für einen zyklus auf false setzen hilft nix!
Wenn ich den Call des baustein allerdings auskommentiere, einspiele, wieder einkommentiere und einspiele is der timeout weg!?! Bedeutet das, dass der Bausteine mehere Zyklen mit "START=False" aufgerufen werden muss, um ihn zurück zu setzen!?

Grüßele
 
Beckhoff erstellt ihre auf ADS basierten FBs jeweils so, dass ein Zyklus mit START:=FALSE reichen müsste, um die Funktion neu anzukicken.
 
Hast du ADS-Bausteine eventuell remanent definiert? Vielleicht nicht direkt sondern den übergeordneten Baustein/Struktur...
Das darf man absolut nicht - und könnte dann solche Effekte haben wie du sie beschreibst. Allerdings müsste der Fehler hier trotzdem für 1 Zyklus auf 0 zurückgesetzt werden (scope).
 
@Pippen: Habe Bekhoff vor 3 Tagen wg. dem Problem informiert.. die wollten zurückrufen.. und jetzt komm ich nimmer durch .. :?

@Guga: Du meinst ob die NT_GetTime() instanz in me persistenn Bereich deklariert ist?
 
Zurück
Oben