Ich habe hier folgendes Macro eines PID Reglers. Wie kann ich dieses Macro aufrufen? z.B. PID_MACRO(v.Ref = 100;) und wie kann ich das ergenis dieses Macros wieder einer Funktion übergeben? z.B. set_PWM (v.Out);
1 | #define PID_MACRO(v) \ |
2 | v.Err = v.Ref - v.Fdb; /* Compute the error */ \ |
3 | v.Up = v.Kp * v.Err; /* Compute Up */ \ |
4 | v.Ui = v.Ui + v.Ki*v.Up + v.Kc*v.SatErr; /* Compute Ui */ \ |
5 | v.OutPreSat = v.Up + v.Ui; |
6 | /* Compute pre-saturated output */ \ |
7 | if (v.OutPreSat > v.OutMax) /* Saturate output */ \ |
8 | {v.Out = v.OutMax;} \ |
9 | else if (v.OutPreSat < v.OutMin) \ |
10 | {v.Out = v.OutMin;} \ |
11 | else \ |
12 | {v.Out = v.OutPreSat;} \ |
13 | v.SatErr = v.Out - v.OutPreSat; /* Compute saturate difference */ \ |
14 | v.Up1 = v.Up; |
Vielen Dank Jungs