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