Ich hab jetzt mal einen Teil des Programmcodes mit Komentaren versehen:
	Code:
	// Left motor speed control:		Zeile 660 (Implementierter Regler) 
//Verwendete Größen und Variablen
#define MC_LEFT_IMAX 420                     //was bedeutet das ???
#define MC_LEFT_IMIN -420
#define MC_RIGHT_IMAX 420
#define MC_RIGHT_IMIN -420
int16_t right_i; 							// esum (Summe der Regelabweichung)
int16_t left_i; 
int16_t mleft_power;						// y (Stellgröße für den Motor)	
int16_t mright_power;
// int16_t error_left 						// e (Regelabweichung unten definiert)
uint16_t mleft_des_speed;					// w (vorgegebener Sollwert)
uint16_t mright_des_speed;
volatile uint16_t mleft_speed;					// x (gemessener Istwert)
volatile uint16_t mright_speed;
// Left motor speed control:
int16_t error_left = mleft_des_speed - mleft_speed;		// e = w - x
left_i = left_i + error_left;					// esum = esum + e 
if(left_i > MC_LEFT_IMAX) left_i = MC_LEFT_IMAX;			// Begrenzung esum[-420;420]
if(left_i < MC_LEFT_IMIN) left_i = MC_LEFT_IMIN;
if(mleft_speed == 0 && mleft_des_speed == 0)			// wenn x und w 0 dann esum auch 0
	left_i = 0;
mleft_power = left_i / 2; 						// y = esum / 2  oder y=esum * 0,5
if(mleft_power > 210) mleft_power = 210;				// begrenzung von y [0;210]
if(mleft_power < 0) mleft_power = 0;
 was bedeutet MC_LEFT_IMAX ? 
was bedeutet volatile ? 
in kürze zusammengefasst: 
e=w-x
esum = esum + e
y=0.5*esum 
das sieht schon stark nach dem I regler aus dem RN Wiki aus:
esum = esum + e
y = Ki * Ta * esum 
was ich nicht verstehe ist die letzte Zeile. Wo kommt in dem Programmcode Ta (abtastzeit ?) vor ???
oder wie ist die letzte zeile genau zu verstehen ?
wäre nett wenn einer mal kurz drüber schaut ob das so stimmt. 
herzliche Grüße 
Thomas
						
					
Lesezeichen