BK9000 mit KL2502 PWM-Konfig über ADS in C einstellen

alubitz

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
ich habe hier eine BK9000 an der eine KL2502 steckt. Ich möchte nun über die ADS-DLL in C ein Programm schreiben, mit dem ich für die KL2502 die Konfiguration für das PWM-Signal einstellen kann.
Ich ging davon aus, dass ich auf den Port 300 und die IndexGroup F030 für die Outputs muss. Allerdings ist es irgendwie so, dass ich auf dieser IndexGroup immer den FehlerCode 1794 bekomme, der mir sagt, dass es sich um eine "invalid index group" handelt.
Kann mir jemand erklären, wie ich die Einstellungen richtig vornehmen kann? Ich bin mir nicht mal bei dem Port und der indexGroup sicher.
Vielen Dank für euer Hilfe!
MfG Adrian
 
Konfiguration?? (Register2, Register32....)-> weiter unten.

Der erste Schritt ist die Prozessdaten, d.h. das EA-interface lesen/schreiben.

1) Route manuell erstellen : Dies ist deine IP-Adresse .1.1
Z.B. also 172.16.17.<Dipschalter>.1.1
=> Test per Ping die IP-Adresse

2) NetID. s.o
Port = 300
Indexgruppe = 0xF030
IndexOffset = 0x0
Aufruf entsprechend von AdsSyncWriteReq (häufig genug damit du keinen Watchdog-Error bekommst).
Entsprechend 0xF020 mit AdsSyncReadReq.

Das Ganze liest/schreibt jetzt aber nur das Prozessabbild. Um die Klemme zu konfigurieren musst du entsprechend einiger Rahmenbedingungen die Prozessdaten setzen damit du in einen Konfig-Modus (via Control-Byte) umschaltest und entsprechend die Register in der KL2502 setzt.
Ohne das Ganze mal im Gut-Fall gesehen zu haben wird es allerdings tricky da die Doku zwar für den wissenden Leser geeignet und ausreichend ist aber ansonsten noch Luft "nach oben" hat.


Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube jetzt weiss ich was du wolltest. Per ADS direkt auf die Klemmenregister zur Konfiguration der Klemme

Das geht auch. https://infosys.beckhoff.com/content/1031/bk9000/html/bt_ethernet ads service.htm?id=2409
Der Port ist nun die 100
Indexgruppe/Indexoffset = siehe link.
Auch hier gilt dann dass man dann wissen muss was/wie in den Registern steht und z.B. dass man den Schreibschutz erst aufheben muss (R31)....

Guga
 
Hi,
habe es jetzt geschafft. Danke!
Hatte irgendwie übersehen, dass an Port 100 die Register der Klemmen zu erreichen sind. Dachte es sind dort nur die des Kopplers zu erreichen.
Konnte jetzt einfach an Port 100 mit IndexGroup 4(weil der KL2502 an der vierten Stelle eingesteckt ist) auf die Register zugreifen. Der IndexOffset muss dann nur entsprechend gesetzt werden: Kanal wird über das HiWord gesetzt und das Register über da LoWord. Beide sind 2 Byte groß. Heißt also für Kanal 1 und Register 31 folgt dann ein IndexOffset von 0x0001001f. Die entsprechenden Register, die ich bearbeiten musste habe ich hier gefunden: http://download.beckhoff.com/download/document/io/bus-terminals/kl2502_kl2512de.pdf
War dann doch eigentlich ganz easy. :D
LG Adrian
 
Jetzt habe ich noch ein Problem:
Ich kann zwar die Register beschreiben und auch wieder auslesen und es steht auch das richtige drinne aber wenn ich mit dem Oszilloskop nachmesse bekomme ich keinen Output...Gibt es da irgendein Bit, was man noch setzten muss, um den Ausgang zu aktivieren?
Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab das ganze zwar an einer Codesys SPS über einen BK1120 angeschlossen aber das gleiche Problem, die Register lassen sich beschreiben und auch lesen allerdings stellt sich der Ausgang nicht um.
Hast du da noch eine Lösung gefunden oder hat jemand anders eine Idee was das Problem sein könnte?
 
R2 und R3 die müssten eigentlich auch ohne stromlos setzen angepasst werden können.
Trotzdem aber ein guter Tipp habe das Feature Register R32 auch beschrieben um auf PWM umzustellen eventuell braucht das ein Neustart.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab mein Problem heraus bekommen, eigentlich so trivial wenn man es weiß. Mit der Registerkommunikation wird die Karte sozusagen nur konfiguriert, um allerdings im PWM Modus den Duty Cycle anzupassen muss einfach auf das CtrlOut Word ein Wert zwischen 0 und 32767 geschrieben werden. Hab das in der Beckhoff Anleitung zwar auch gelesen wusste aber nicht wo genau man den Wert schreiben muss. Wenn man kein Register beschreiben aktiv hat kann man die Prozessdaten schreiben bzw. lesen.
Vielleicht hilft es dem ein oder anderen.
 
Zurück
Oben