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_DllExport HANDLE __stdcall VCS_OpenDeviceDlg(DWORD* pErrorCode);//Startet die Kommunikation |
3 | ...
|
4 | StateMachine_DllExport BOOL __stdcall VCS_SetEnableState(HANDLE KeyHandle, WORD NodeId, DWORD* pErrorCode);//Schaltet Steuergerät ein |
5 | |
6 | //in main
|
7 | #include <Definitions.h> |
8 | int main (void) |
9 | {
|
10 | DWORD errorcode=0; |
11 | WORD nodeid = 1; |
12 | HANDLE keyhandle = 0; |
13 | bool flag=0; |
14 | |
15 | |
16 | keyhandle=VCS_OpenDeviceDlg(&errorcode) |
17 | if(keyhandle) |
18 | {
|
19 | //Clear Error History
|
20 | if(VCS_ClearFault(keyhandle, nodeid, &errorcode)) |
21 | {
|
22 | flag = VCS_SetEnableState(keyhandle, nodeid, &errorcode); |
23 | if(flag) |
24 | printf("Geraet ein\n"); |
25 | else
|
26 | printf("Fehler %d\n", errorcode); |
27 | }
|
28 | else
|
29 | printf("Fehler2 %d\n", errorcode); |
30 | }
|
31 | else
|
32 | {
|
33 | printf("Kommunikationsfehler %d\n", errorcode); |
34 | }
|
35 | |
36 | }
|
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.