- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Hilfe: C++ Programmierung für Faulhaber Motion Controller

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2005
    Beiträge
    11

    Hilfe: C++ Programmierung für Faulhaber Motion Controller

    Anzeige

    Praxistest und DIY Projekte
    Hallo liebe Leute!

    ich habe einen Roboter konstruiert. Dafür habe ich 3 Motoren (MCBL 3603 Brushless DC-Sercomotor) von der FirmaFaulhaber und 3 entsprechende Motion-Controller-Karten gekauft.

    Ich habe nun die Frage: wie kann man die Ansteuerung der Motoren in C++ programmieren? Ich nehme RS232 als Schnittstellen. Für die Schnittstellen-Kommunikation benutze ich PComm Library von MOXA, was einwandfrei fonktioniert.

    Ich würde die Befehle (z.B. Geschwindigkeit, Drehrichtung, Stop-Befehl, Beschleunigung usw.) alle 10 oder 20ms an die Hardware schicken. Es sieht jetzt so aus, dass der Motor (oder die Controller-Karte) nicht so schnell reagieren kann.

    Hat vielleicht jemand schon ähnliche Karte benutzt? Ich würde mich sehr freuen wenn jemand mir helfen könnte!

    Vielen Dank!

    WLAN

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.05.2005
    Alter
    34
    Beiträge
    211
    Sag mal, kannst du dich nicht für ein Unterforum entscheiden oder warum postest du diesen Beitrag 3 mal?
    Grüße
    Lars

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2005
    Beiträge
    11
    sorry, ich konnte mich wirklich nicht für ein unterforum entscheiden.
    lege mein post bitte in ein unterforum und ich werde da weiter schreiben.
    danke!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.05.2005
    Alter
    34
    Beiträge
    211
    Ich weiss nicht genau wer, aber irgendjemand kann Beiträge verschieben

    Frank kann es bestimmt
    Grüße
    Lars

  5. #5
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Es scheint wohl am besten ins PC-Forum zu passen, da es wohl um eine PC-Karte geht. Es ist zu empfehlen solche Karten immer in 2 bis 3 Zeilen zu beschreiben, denn oft sind diese PC-Karten weniger bekannt.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2005
    Beiträge
    11
    vielen Dank!

    Diese Karte heisst: Motion Controller für bürstenlose DC Servomotoren (für den Motor MCBL 3603)

    Die genaue Beschreibung seht ihr in folgender Datei:
    http://www.faulhaber.de/zip_pdf/anle..._MCBL_3603.pdf

    mehr zur Programmierung:
    ************************************************** ********
    One of the most important objectives in the development of these units was to keep its operation as simple as possible. This has been attained with the use of just a few, highly efficient functions. Manual balancing or potentiometers are no longer required. Menu-guided program and
    parameter-editing functions are already integrated for operation with an ASCII terminal. In place of internal menu management, the clearly structured command set can be simply integrated into a customer-specific interface, e.g. with Visual Basic, Lab View, Pascal, C++, etc. Any PC with Windows operating system can be used as an input terminal. Program updates are made directly via the serial interface without changing the hardware. Communication is made via the serial port RS232 or RS485.
    ************************************************** ********

    Die Befehle für den Motor wurden eigentlich schon in der Software der Karte integriert. Z.B. mit dem Befehl "jn" kann man den Motor in negative Richtung bewegen. Mit "sp 10000" kann man eine Geschwindigkeit von 10000 einstellen.

    Die Motoren hab ich im Roboter eingebaut. Sie sind mit den Karten (1 zu 1) verbunden. Die Karten wurden mit den RS232-Schnittstellen (über eine MOXA-PCI-Multiport-Karte)verbunden.

    Mein Problem ist: ich habe die Grundbefehle (jn, jp, sp, ac usw.) als Funktionen in VC++ geschrieben. (Wie gesagt, PComm Library habe ich für die Schnittstellen-Kommunikation benutzt.) Sie scheinen auch funktionieren. Aber die Karte braucht sehr lang (über 50ms) um die Befehle auszuführen.

    Ich weiss nicht ob es am C++-Programm oder an der event. falschen Benutzung der Karten liegt.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    das chr(13) schickst du mit ?

    die brücken sind drin oder die Hardware fluss controlle abgeschaltet ?

    Hast du mal eine PC oder so an die Serial gehängt dauert es dann genauso lange ?

    9 byte zum übertragen = 72 bits + 9 mal start + 9 mal stop
    90 bits sollte eigendlich in 5 ms erledigt sein bei 19200 baud.
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Hat mich die ganze nacht beschäftigt. deshalb frage ich jetzt das Teil ist sich nicht ganz billig gewesen wie kommt man an so ein Sponsor ?
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2005
    Beiträge
    11
    Zitat Zitat von NumberFive
    Hat mich die ganze nacht beschäftigt. deshalb frage ich jetzt das Teil ist sich nicht ganz billig gewesen wie kommt man an so ein Sponsor ?
    Hallo, das ist ein Forschungsprojekt. Ich bin total Newbie in diesem Bereich. Mein Vorgänger hat den Roboter konstruiert, und ich bin jetzt für die Steuerung zuständig.

    Ich bin eigentlich Nachrichtentechniker, habe wenig Ahnung von der Steuerung und hardwarenaher Programmierung. Deswegen bitte ich hier um eure Hilfe!

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2005
    Beiträge
    11
    hier ist der Code zur Initialisierung der Schnittstellen und der Motoren,
    könntet ihr ein paar Verbesserungstipps geben?

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>      //for isdigit()
    #include <math.h>       //for sin(), cos()
    #include <process.h>	//for multithread
    #include <windows.h>    //for PCOMM.h and multimedia timer
    #include "../Moxa/PComm.h"      //Serial Communication Libarary
    #include "../Moxa/MoxaFunction.h"
    #include "GlobalFunction.h"
    
    void init (int port)
    {
    	/* Port Control, enable the port */
    	if (sio_open(port) == SIO_OK)
    	{
    		sio_ioctl(port, B38400, P_NONE | BIT_8 | STOP_1 );
    		// Port Control, set baud, parity...
    		sio_flowctrl ( port, 0xc );			//0XC: software flow control: XON/XOFF
    		sio_DTR (port, 0 ); //turn DTR off
    		sio_RTS (port, 0 ); //turn RTS off
    		sio_flush (port, 2);
    		/*	
    		0 : flush input buffer
    		1 : flush output buffer
    		2 : flush input & output buffer
    		*/
    		sio_SetReadTimeouts(port, 0, 0);
    		// Set sio_read into block mode, which is used in readposition()
    		sio_SetWriteTimeouts(port,0);
    		//Set sio_write into block mode
    	}
    	else 
    	{
    		printf("Cannot Open Port%d !!!\n", port);
    		system("pause");
    		exit(-1);
    	}
    
                    // tp: tell position -> definierte Funktion
    	if (tp(port) != 0)
    	{
    		pq(port);// pq: Power Quit
    	}
    
    	if (port == MotorOne)
    	{
    		printf("Motor One Status:\t");
    	}
    
    	if (port == MotorTwo)
    	{
    		printf("Motor Two Status:\t");
    	}		
    		
    	if (port == MotorThree) 
    	{
    		printf("Motor Three Status:\t");
    	}
    
    	pw(port);
    	printf("Power ON\t\t\n\n");
    	//printf("%9d\n\n",tp(port));
    }

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad