- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 2 von 2

Thema: Rs232 Richtungsänderung beim RN-MotorControl

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Ort
    Groitzsch
    Alter
    41
    Beiträge
    24

    Rs232 Richtungsänderung beim RN-MotorControl

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich versuche über RS232 dem RN-MotorControl Rev 1.3 mit RNV2-DualMotor zu sagen, dass es links bzw. rechts rum drehen soll. Aber leider nimmt er diesen Befehl nicht an. Der Befehl für die Geschwindigkeit funktioniert. Was ich wiederum nicht verstehen kann, weil ich da ja nur den Befehlscode ändere.

    Ich habe mir diese drei Funktionen geschrieben. Wie gesagt die Variante für setMotorspeed() funktioniert.

    Code:
    #define waitAfterSend 1
    #define waitAfterCheck 1
    #define Timeout 10
    
    char waitForRCV(int ms){
    char c;
    int i=0;
    
    	while(!((c=uart_getc()) & UART_NO_DATA)){
    		delay1ms(1);
    		if(++i>=ms) return 0;
    	}; //TODO 500ms Time out verbessern*/
    	//c=uart_getc();
    	return c;
    }
    
    int checkResults(){
    
    int error=1;
    
    		char result[9];
    		int i=1;
    		result[0]=waitForRCV(Timeout);//warten bis erste Z.	
                                    while(i<=9){
    			result[i]=uart_getc();
    			i++;
    			if(result[i] & UART_NO_DATA) break;
    		}
    
    		if(result[0]=='9' && result[1]=='9'){
    			LEDS = resetBit(LEDS,LED3);
    			error=0;
    		}else{
    			LEDS = setBit(LEDS,LED3);
    		}
    
    		if(result[0]=='5' || result[0]=='1' || result[0]=='2' || result[0]=='3' || result[0]=='4'|| result[0]=='6' || (result[0]=='2' && result[1]=='0')){
    			LEDS = setBit(LEDS,LED4);
    		}else{
    			LEDS = resetBit(LEDS,LED4);
    		}
    		delay1ms(waitAfterCheck);
    		return error;
    }
    
    void setMotorSpeed(int a,int b){
    	char res[10];
    
    	do{
    		sprintf(res,"%s%c","##",(char) 3);
    		sprintf(res,"%s%c", res,(char) 2);
    		sprintf(res,"%s%c", res,(char) a);
    		sprintf(res,"%s%c", res,(char) b);
    		uart_puts(res);
    		delay1ms(waitAfterSend);
        }while(checkResults()!=1);//Solange bis 99 zurück
    };
    
    void setDirection(int a,int b){
    	char res[10];
    	do{
    		sprintf(res,"%s%c","##",(char) 3);
    		sprintf(res,"%s%c", res,(char) 5);
    		sprintf(res,"%s%c", res,(char) a);
    		sprintf(res,"%s%c", res,(char) b);
    		uart_puts(res);
    		delay1ms(waitAfterSend);
    	}while(checkResults()==1);//Solange bis 99 zurück
    };
    Seht ihr noch nen Fehler oder hattet ihr schonmal etwas ähnliches?

    Viele Dank für eure Antworten

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Ort
    Groitzsch
    Alter
    41
    Beiträge
    24
    Ich habe den Fehler zwar gefunden, weiß aber nicht wie ich ihn lösen soll.
    Der Fehler tritt immer nur auf wenn ich eine Null ( 0 ) über RS232 senden will. Bei der Wahl der Geschwindigkeit kann ich auch keine Null senden.

    Wer kennt das Problem.Was kann ich machen.

    Gruß

Berechtigungen

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

Labornetzteil AliExpress