Habe dein Programm heute getestet, vielen Dank, da hast du dir ja einige Arbeit gemacht! Ergebnisse siehe Anhang.
Dabei gab's zunächst noch 3 kleine Probleme, die habe ich in der Main.cpp korrigiert und mit dran gehängt:
- Zeilennummern und Unit der Parameter waren in der Deklaration vertauscht
- ein Typedef-Fehler bei der Deklaration von char as uint8, habe ich auskommentiert, dann konnte ich's kompilieren
- Damit die Ausgabe auf der Konsole gelesen werden kann hab ich die "Beliebige Taste zum beenden drücken.." abfrage eingebaut
Resultate waren genau wie bei meinen bisherigen Tests:
- Werden die 3 Antriebs-Parameter (hier die Temperaturen) einzeln abgefragt, so sieht man im Wireshark die korrekten Werte.
- Werden alle 3 auf einmal abgefragt, sind die Werte bei allen 3 gleich und entsprechen dem Wert der ersten abgefragten, also 1. korrekt, Rest falsch
- Wird vor den Antriebsparametern eine Variable aus einem anderen Bereich (hier getestet mit dem NC-Programmnamen) gelesen, so erhält man für die Antriebsparameter den Fehler "Object does not Exist"
- In keinem Fall werden irgendwelche Werte vom Programm auf der Konsole ausgegeben (Siehe Screenshot), immer alles = 0, was ja eigentlich irgendwo zwischen 20-30 °C liegen sollte.
--> Für die ersten 3 Fälle habe ich keine Idee woher das kommt, fürchte jedoch dass es ein Bug der Sinumerik Firmware ist, also außerhalb der AGLink Software.
Ich werde das Ganze dazu noch einmal an einer anderen Maschine mit anderem SW-Stand testen.
--> Für den 4. Fall (Daten werden richtig von der Sinumerik gelesen, aber nicht "ausgewertet") sehe ich 2 Erklärungen: Die Daten landen erst garnicht im Puffer (-> Bug im AGLink) oder ich bin zu doof den Puffer richtig auszulesen...
Anhang anzeigen Test_Ergebnisse.zip
Update:
Hab weiter getestet. Es ist möglich mit einem Aufruf mehrere Parameter der GLEICHEN Unit (also des gleichen Antriebs) auszulesen. z.B. Motortemperatur, Geberposition, Winkelposition.
Dabei kommen die richtigen Werte im Wireshark, die NCK_demo.exe wie auch mein eigener Code zeigen aber nach wie vor keine Werte, weder in der Buffer- bzw. Byte-Ansicht noch als Wert.
Nur wenn man in einem Aufruf Werte aus mehreren Units lesen will funktioniert's nicht.