Hi,
ich hoffe einfach mal, dass sich hier von euch vielleicht einer mit dem
EPOS P (24/5) motor controller aus kennt ;)
Ich befinde mich gerade im zuge meines Etechnik Studiums im
Praxissemester und versuche über ein C++ Programm (Borland) den motor
controller über die RS232 Schnittstelle anzusteuern. Mit dem EPOS Studio
geht das auch ohne Probleme, allerdings bekomm ich bei dem
Beispielprogramm für C++ immer einen Fehler "Error reading RS232 Data".
Ein Handle auf die RS232 Schnittstelle bekomm ich noch, beim 1. Zugriff
"VCS_ClearFault()" bekomm ich allerdings den Fehler zurück.
Muss ich beim Borland Compiler noch irgend etwas einstellen (um auf die
RS232 Schnittstelle zuzugreifen) oder mim EPOS Studio den motor
controller dafür irgendwie speziell konfigurieren?
Schonmal Danke! Gruß, LONy
Warscheinlich ist mein Problem zu speziell um eine Lösung zu bekommen^^
Kann mir dann vielleicht jemand sagen, ob ich was spezielles beachten
muss, wenn ich beim Borland Compiler eine dll Datei einbinde bzw.
dadurch auf die RS232 Schnittstelle zugreifen will?
Ich muss eine lib Datei einbinden, dabei gibt es scheinbar zwei
verschieden Versionen (eine Speziell für den Borland Compiler?) da er
mir bei der anderen eine Fehlermeldung beim Kompilieren auswirft und ich
die Datei erst mit der coff2omf.exe konvertieren soll. Die konvertierte
Datei ist dann kleiner als die beiden anderen, es gibt auch keine
Fehlermeldung beim kompilieren, mehr als ein Handle auf die RS232
Schnittstelle bekomm ich leide trozdem nicht.
Gruß, LONy
Hallo LONy,
ich bin ebenfalls gerade daran, eine Anwendung für die Ansteuerung eines
Motors zu schreiben. Das Steuergerät ist ein EPOS2 24/5 mit einem
EC-Motor. Allerdings verwende ich Visual C++ (Express) und die
Kommunikation erfolgt über USB. Das Einbinden der Dateien EposCmd.dll,
EposCmd.lib und Definition.h ist soweit erfolgreich verlaufen. Das
Beispielprogramm funktioniert bei mir ebenfalls nicht (wahrscheinlich
Konvertierungsproblem von alter Version 6.0). Mir ist es auch noch nicht
gelungen irgendeine der Funktionen erfolgreich aufzurufen.
Wichtig ist, die Bibliothek im laufenden Projekt anzumelden. Ich weiss
nicht wie das bei deinem Compiler ist.
Gruss Michael
Hallo Michael,
hat bei dir die Verbindung über das EPOS Studio wie in der Getting
Started pdf beschrieben funktioniert? Das ging bei mir problemlos. Im
Unterverzeichnis vom EPOS Studio "EPOS Positioning Controller\EPOS2 P\04
Programming\Windows DLL\Microsoft Visual C++" müsste ein
Beispielprogramm für deinen EPOS2 24/5 fertig kompiliert sein, da kannst
du mal versuchen die exe auszuführen. Die Kommunikationskonfiguration
erfolgt bei Programmstart über ein Dialogfenster (Protocol Stack Name,
Interface Name,.. usw.)
Nach diesem Dialog (entsprechend bei dem Beispielprogramm für meinen
Borland Compiler in "EPOS Positioning Controller\EPOS\04
Programming\Windows DLL\Borland C++") bekomm ich dann die Fehlermeldung
"Error reading RS232 Data".
Woch ich das gerade schreibe ist mir aufgefallen, dass die
Beispielprogramme ja im "EPOS" Ordner und nicht im "EPOS P" ordner sind.
Da sind zwar auch Beispielprogramme, allerdings keine mit der Windows
DLL.
Die Einbindung der lib Datei bei mir in der "EPOS DLL Integration into
Borland C++.pdf" beschrieben. Einfach Projekt->Dem Projekt Hinzufügen.
Das scheint auch Richtig zu funktionieren, da ich hiermit ein Handle
zurück bekomme:
1
m_KeyHandle=VCS_OpenDeviceDlg(&m_dErrorCode);
Wenn ich bei mir die RS232 Schnittstelle Blockiere (z.B. dass ich über
das EPOS Studio eine Verbindung mit dem Motor herstelle) bekomm ich hier
ne Fehlermeldung "Error opening port"
Gruß, Stefan
For technical support please use the maxon Service & Support Desk. By
means of the Service & Support Desk tool you can electronically submit
technical requests or problem reports about maxon motor control
products. http://support.maxonmotor.com . Due to the Service & Support
Desk we can offer you an even better service.
**********************************************************
Für technische Anfragen benützen sie bitte das maxon Service & Support
Desk. Das Service & Support Desk ermöglicht es Ihnen, technische
Anfragen oder Problemberichte zu maxon motor control Produkten auf
elektronischem Weg zu erstellen. http://support.maxonmotor.com . Dank
dem Service & Support Desk können wir Ihnen eine noch bessere
Dienstleistung anbieten.
Patrik Gnos, maxon motor ag, Switzerland
Hallo Herr Gnos,
ich habe vergangenen Freitag (und gerade nochmal) versucht eine Anfrage
über "New Registration D/E (for first technical support)" an maxon motor
zu stellen, es kam auch eine Rückmeldung: Issue 14109 created. Click
here to view. Leider bekomme ich bei diesem Link nur einen Error. Eine
Registrierungsbestätigung per Email o.ä. hab ich leider auch nicht
Erhalten.
MfG Stefan Müller
Hallo Stefan,
die Beispielprogramme habe ich getestet. Das Programm für VB
funktioniert, jedoch das für Visual C++ nicht (Fehlermeldung: Kann nicht
auf das Gerät zugreifen). Den Beispielcode finde ich für den Anfang viel
zu kompliziert. Wenn ich auf eine Funktion zugreife, kommt stets die
Fehlermeldung "error C3861: "VCS_OpenDeviceDlg": Bezeichner wurde nicht
gefunden", obwohl die Datei Definitions.h eingebunden ist und diese
Funktion enthält.
Gruss Michael
Neben der Definitions.h musst du auch noch die dll Datei einbinden wie
in "EPOS DLL Integration into MS VC++.pdf" beschrieben. Ich weiß nicht
wie die Menüpunkte in VC++ auf Deutsch heißen...
Project -> Properties da dann Linker -> Input und hier die EPOS Command
DLL bei 'Additional Dependencies' hinzufügen.
Vielleicht hat die Express Version die Einschränkung, dass man keine dll
Datein einbinden kann?!
Die dll habe ich bereits eingebunden. Falls es Einschränkungen
hinsichtlich der Express-Version gibt, wäre dieses Menü sicher
deaktiviert bzw. eine Fehlermeldung würde erscheinen. Aber wer weiss..
Ich habe damit zu wenig Erfahrung, da ich mich mit der Version erst seit
Kurzem beschäftige.
Hallo,
inzwischen denke ich, dass mein Programm soweit funktioniert und der
Fehler in der Konfiguration des EPOS P liegt, da über die RS232
Schnittstelle 0x11 (opCode) geschickt wird und dann allerdings keine
Antwort (readyAck) zurück kommt. Nach dem Timeout bekomm ich dann die
Fehlermeldung.
Ich werd nochmal Getting Started usw. durcharbeien. Es ist sicherlich
nur eine kleine Einstellungssache die nicht past...
Hallo Michael,
bist du inzwischen weiter gekommen? Ich habe etwas interresantes bzgl.
des EPOS2 P gefunden:
(1) Indroduction
------------------------------------------------
The compiled IEC-61131 program (ProgramData.mem) has to be downloaded to
the Epos2 P before the functionality of the Windows DLL example can be
used.
...
Das steht in der readme.txt in "Example VC++ 2005\IEC-61131 Program".
Da muss also erst ein Programm geladen werden, bevor man mit der Windows
DLL überhaupt das EPOS ansprechen kann. Ich vermute das es bei meinem
EPOS P vielleicht ähnlich ist. Vielleicht hilft dir das ja auch weiter.
Gruß, Stefan
Hallo Stefan,
ich habe mittlerweile auch (kleine) Fortschritte gemacht. In der MSDN
habe ich ein Beispiel über das Erstellen und Einbinden von Dll's
gefunden. Also habe ich erst einmal ein einfaches Konsolenprogramm
geschrieben und die Pfade für die EposCmd.dll und Definitions.h explizit
angegeben. Jetzt kann ich zumindest auf die Funktionen zugreifen. Die
Kommunikation mit dem Gerät funktioniert aber noch nicht, da für den
Zugriff über USB mehrere Funktionen hintereinander ausgeführt werden
müssen.
Leider arbeite ich momentan noch an einem anderen Projekt und habe
gerade wenig Zeit, um mich weiter mit dem Programm zu beschäftigen. Aber
es sieht momentan nicht schlecht aus dieses zum Laufen zu bringen.
> The compiled IEC-61131 program (ProgramData.mem) has to be downloaded to> the Epos2 P before the functionality of the Windows DLL example can be> used.> ...
Das sieht mir ganz so aus, als ob hier die Firmware des Steuergerätes
gemeint ist. Da sollte man vorsichtig sein (siehe "Wichtige Hinweise"
zur Firmware).
PS. Nachdem ich die Pfade für die Dateien wieder gelöscht habe, konnte
ich das Programm trotzdem noch kompilieren. Also weiss ich nicht genau,
ob dies wirklich der Grund war. Ich muss das nochmal von Grund auf
testen.
Gruss Michael
Hallo Michael,
inzwischen habe ich die Rückmeldung bekommen, dass das EPOS P über die
RS232 Schnittstelle zwar programmiert und parametriert, nicht aber
gesteuert werden kann (was ich mir nach dem vielen rumprobieren schon
fast gedacht habe). Vielleicht bekomme ich ein EPOS2, mit dem ist das
dann möglich :) Sowohl über RS232, als auch über USB :-)
Halo LONy ich habe gerade euere Beiträge hier im Forum, beschäftige mich
nämlich derzeit mit dem Gleichen Thema Maxon EPOS 60W, ich habe das
Visual Basic mal gestartet die Kommunikation zu dem Antrieb
funktioniert. Jetzt habe ich mal versucht ein pasar Funktionen
anzusprechen, da musste ich mich fragen was ist das für ein Datentyp
HANDLE und bei dem Aufruf VCS_GetBaudrateSelection("EPOS",
"Maxon_RS232", "RS232", "COM1", informationsende, baudrate,
pEndofSelection, pErrorCode), wird beschrieben das die Rückgabe von
baudrate ein Pointer auf ein DWord ist, ich frage mich in diesem Fall
wie kann ich die bekommenen Informationen auslesen? Hätte jemand für
mich ein funktionierendes Programmbeispiele zu dem Antrieb aus dem ich
eventuell ein paar Schlüsse ziehen kann, komm nämlich so nicht weiter.
Danke schon mal für feedback!!!
Hallo,
also HANDLE, DWORD usw. sind Datentypen aus diversen Windows API-Klassen
soweit ich weiss. Z.B. DWORD: "Gibt eine 32-Bit-Binärzahl an. Dieser
Wert entspricht dem Win32-API-Registrierungsdatentyp REG_DWORD"
und ist Mitglied der Klasse Microsoft.Win32.RegistryValueKind. Bei
HANDLE wird es ähnlich sein. Ich habe auf der Website von Maxon
(maxonmotor.com) eine Tabelle unterstützter Datentypen gesehen (siehe
Anhang). Du musst lediglich die Variablen vom entsprechenden Datentyp
(DWORD, HANDLE , WORD was auch immer) definieren, die Du dann
entsprechend der Funktionsdeklaration als Argument übergibst, entweder
als Zeiger oder Werttyp (Kopie). Die Funktionen (dokumentiert in EPOS
Command Library.pdf) liefern meistens eine Wert vom Datentyp BOOL oder
HANDLE, den Du dann auswerten kannst. (Beispielcode ist nicht getestet,
nur exemplarisch). Der Support von Maxon hilft übrigens auch gerne
weiter.
1
//Beispiel aus Definition.h
2
Initialisation_DllExportHANDLE__stdcallVCS_OpenDeviceDlg(DWORD*pErrorCode);//Startet die Kommunikation
3
...
4
StateMachine_DllExportBOOL__stdcallVCS_SetEnableState(HANDLEKeyHandle,WORDNodeId,DWORD*pErrorCode);//Schaltet Steuergerät ein
Hallo,
ich weis das Thema ist schon etwas länger her. Trotzdem möchte ich in
Erfahrung bringen, wie eure Erfahrungen mit der Epos und Rs232 sind.
Ich schreibe mir gerade eine Ansteuerung per Rs232 mittels C++ ohne die
Verwendung der DLLs. (Da ein Atmega die Steuerung übernehmen soll) Habe
derzeit folgendes Problem beim Ansteuern einer Epos/Epos2. [Bisher ist
nur den NMT Befehl implementiert. Hier tritt aber schon folgendes
Phänomen auf...]. Habe ich nichts weiter am CAN hängen (also kein Ixxat
welches gerade den MiniMon zum sniffen geöffnet hat) und bestrome die
Epos, geht diese gleich auf status Rot. Sie nimmt per RS232 NMT befehle
an, quittiert den erhalt positiv, beim RestartNode blinkt mal für ein
Bruchteil einer Sekunde die grüne LED, dann ist wieder Rot angesagt.
Sprich, Sie geht nicht in den Pro-Op Stauts oder gar Op.
Schließe ich ggf. den IxxatDongle an, starte den MiniMon (egal ob
dauerhaft angeschlossen oder Anschluss erst jetzt) und lausche auf dem
Bus, ist kein Traffic auf dem Bus zu sehen. Sende ich jetzt per Rs232,
RestartNode oder GoPreOp, wechselt der Status in grün-blinkend und die
Epos wechselt in entsprechenden angeforderten Modi. Sowie das MiniMon
beendet wird, wechselt diese wieder auf Rot.
Gleiches verhalten bei geöffnetem MiniMon und anschließender Bestromung.
Hier geht die Epos gleich auf grün-blinkend. Mache ich den Monitor zu
ist Schluss. Positive Antworten auf meine NMT Befehle, aber kein
Statuswechsel.
Jedoch wurde mir gesagt, man könne die Epos auch ausschließlich mit
Rs232 betreiben. (In dem AtmelProjekt sollen lediglich ein Drive und ein
paar Ventile gesteuert werden. Somit ist RS232 ausreichend und CAN als
Bus nicht wirklich erforderlich.)
Ich weis auch das die LEDs nur den CAN Status signalisieren, jedoch
arbeite ich ja auch mit den CANopen Registern zum Konfigurieren und
Steuern, und ich vermute, solange das nicht grün blinkt, wird sich da
auch nichts drehen in Sachen Motor. Was kann ich hier tun. Die Frage ist
auch schon mit ScreenShots an den technischen Support von Maxon
gegangen. Allerdings heute auf den Freitag Nachmittag werde ich
sicherlich nicht mehr mit einer Antwort rechnen können. Dem Handbüchern
konnte ich leider auch nichts dergleichen entnehmen. Hier ist die
Steuerung der Firmware per CANopen weitaus detailierter beschrieben als
die Ansteuerung per RS232.
LG,
SurtuR