LabVIEWForum.de
Beispielprogramm zur Ansteuerung mit Kollmorgen AKD - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Beispielprogramm zur Ansteuerung mit Kollmorgen AKD (/Thread-Beispielprogramm-zur-Ansteuerung-mit-Kollmorgen-AKD)

Seiten: 1 2


RE: Beispielprogramm zur Ansteuerung mit Kollmorgen AKD - GerdW - 30.06.2021 07:54

Hallo Tom,

Zitat:Das Programm zeigt mir keine Fehler an aber der Motor bewegt sich leider auch nicht.
Vielleicht hat ja jemand mit dem Modbus und AKD Umrichter erfahrung und könnte mal einen Blick auf mein VI werfen.
Ich habe keine Ahnung von deinem speziellen AKD-Inverter, aber kann trotzdem was zum VI sagen:
- Du hast eine schöne Statemachine programmiert (gut!), aber das Enum dazu verwendet einfach nur Nummern für die Statenamen. Besser wären in "Klartext" benannte States!
- Dieses Enum sollte muss typdefiniert werden - und diese Typdefinition muss dann in allen Instanzen verwendet werden!
- In State "2" erzeugst du aus einem I32-Wert ein Array aus 2 U16-Werten - und davon sendest du dann per ArraySubset nur den ersten Wert!? Ist das so gewollt? Und muss das so kompliziert umgesetzt werden, wenn man das auch mit einem einfachen SplitNumber erledigen kann?
- Warum überhaupt so viele ArraySubset-Funktionen? Du definierst doch vorher meist dein Array in korrekter Länge per Konstante!?
- Man kann bei den ganzen Select-Funktionen auch direkt den ErrorCluster anschließen, du musst nicht jedesmal per Unbundle den Errorstate auslesen! (Und wenn schon Unbundle, dann bitte der Codelesbarkeit wegen UnbundleByName!)
- Statt die Statemachine per "Continue if True" weiterlaufen zu lassen, solltest du besser "Stop if True" verwenden: nur dein Stop-State muss nun ein TRUE ausgeben, alle anderen States brauchen keine boolsche Konstante mehr, sondern nur einen "default if unwired"-Tunnel!
- Was ist der Unterschied zwischen State "8" und "9"? Musst du bei einem Fehler wirklich 10ms warten, bevor die Statemachine endet - und ohne Fehler die Statemachine nach nur 1ms beenden? Merkst du da einen Unterschied, wenn du vor dem Computer sitzt?


RE: Beispielprogramm zur Ansteuerung mit Kollmorgen AKD - jg - 30.06.2021 09:04

Hallo Thommy,

wenn ich es richtig im Kopf habe, dann muss man am AKD-Controller erst einmal die Steuerung per Modbus erlauben - über die Kollmorgen Workbench müsste das gehen.

Ein weiterer Fehler, und das dürfte momentan auch der größte sein: Auch 16bit-Werte werden bei beim Kollmorgen per Modbus als 32bit in 2 Registern gespeichert, da muss du an einigen Stellen was anpassen.

Zitat aus einem AKD-Userguide, den ich bei mir auf der Festplatte hab:
Zitat:24.7.9.6 32-Bit- vs. 16-Bit-Werte
Modbus bildet alle Parameter entweder als 32-Bit- oder als 64-Bit-Werte ab. Die Mindestdatenbreite von 32
Bit unterstützt die Abwärtskompatibilität, d. h. eine Änderung der internen Datenbreite hat keine Auswirkungen auf die Registeradressen nachfolgender Parameter. Das dynamische Mapping erlaubt nur die
Abbildung von Registern, die für die Anwendung relevant sind, und reduziert auf diese Weise den Kommunikationsaufwand.

[attachment=62001]

Gruß, Jens[/quote]