Changeset 909 for branches/gui/eml/controllers/PIDs.mso
- Timestamp:
- Feb 19, 2010, 7:08:11 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/gui/eml/controllers/PIDs.mso
r771 r909 28 28 29 29 PID_Select as Switcher (Brief="Type of PID Incremental", Valid=["Ideal","Parallel","Series","Ideal_AWBT","Parallel_AWBT","Series_AWBT","Ideal_AW","Parallel_AW","Series_AW"], Default = "Ideal"); 30 Action 31 Mode 32 Clip 33 34 alpha as positive(Brief="Derivative term filter constant", Default=1);35 beta as positive(Brief="Proportional term setPoint change filter");36 bias 37 derivTime as time_sec 38 intTime as time_sec 39 gain as positive(Brief="Controller gain", Default=0.5);40 gamma as positive 41 tau as time_sec(Brief="Input filter time constant");42 tauSet as time_sec 43 MinInput as control_signal (Default=-1000);30 Action as Switcher (Brief="Controller action", Valid=["Direct","Reverse"], Default = "Reverse"); 31 Mode as Switcher (Brief="Controller mode", Valid=["Automatic","Manual"], Default = "Automatic"); 32 Clip as Switcher (Brief="Controller mode", Valid=["Clipped","Unclipped"], Default = "Clipped"); 33 34 alpha as positive (Brief="Derivative term filter constant", Default=1); 35 beta as positive (Brief="Proportional term setPoint change filter"); 36 bias as control_signal (Brief="Previous scaled bias", Default=0.5); 37 derivTime as time_sec (Brief="Derivative time constant"); 38 intTime as time_sec (Brief="Integral time constant"); 39 gain as positive (Brief="Controller gain", Default=0.5); 40 gamma as positive (Brief="Derivative term SP change filter"); 41 tau as time_sec (Brief="Input filter time constant"); 42 tauSet as time_sec (Brief="Input filter time constant"); 43 MinInput as control_signal (Default=0); 44 44 MaxInput as control_signal (Default=1000); 45 MinOutput as control_signal (Default= -1000);46 MaxOutput as control_signal (Default=1 000);47 45 MinOutput as control_signal (Default=0); 46 MaxOutput as control_signal (Default=1); 47 48 48 VARIABLES 49 in 50 out Output as control_signal (Protected=true, PosX=0.54, PosY=1);51 SetPoint 49 in Input as control_signal (Protected=true, PosX=0, PosY=0.5); 50 out Output as control_signal (Protected=true, PosX=0.54, PosY=1); 51 SetPoint as control_signal; 52 52 53 53 #++++++++++++++++++++ PID Internal Variables ++++++++++++++++++++++++++++++++ 54 54 PID_derivTerm as control_signal (Brief="Derivative term", Hidden =true , Default=0); 55 PID_dFilt 56 PID_error 55 PID_dFilt as control_signal (Brief="Derivative term filtered", Hidden =true ,Default=0.5); 56 PID_error as control_signal (Brief="Error definition for proportional term",Hidden =true ); 57 57 PID_errorD as control_signal (Brief="Error definition for derivative term", Hidden =true ); 58 PID_errorI 59 PID_inputFilt 58 PID_errorI as control_signal (Brief="Error definition for integral term", Hidden =true); 59 PID_inputFilt as control_signal (Brief="Filtered input", Hidden =true); 60 60 PID_intTerm as control_signal (Brief="Integral term", Hidden =true , Default=0); 61 PID_outp 62 PID_outps 61 PID_outp as control_signal (Brief="Sum of proportional, integral and derivative terms", Hidden =true ); 62 PID_outps as control_signal (Brief="Variable outp scaled between -1 and 1",Hidden =true); 63 63 PID_propTerm as control_signal (Brief="Proportional term", Default=0 , Hidden =true ); 64 PID_setPointFilt as control_signal 65 PID_AWFactor as Real 66 PID_action as Real(Protected=true, Hidden=true);64 PID_setPointFilt as control_signal (Brief="Filtered setPoint", Default=0, Hidden =true); 65 PID_AWFactor as Real (Brief="Integral term multiplier used in anti-reset windup", Hidden=true); 66 PID_action as Real (Protected=true, Hidden=true); 67 67 68 68 PID_input as control_signal (Brief="Previous scaled input signal", Default=0.5, Hidden=true); 69 69 PID_output as control_signal (Brief="Scaled output signal", Default=0.5, Hidden=true); 70 PID_setPoint as control_signal (Brief="Scaled setPoint",Default=0.5, Hidden=true);70 PID_setPoint as control_signal (Brief="Scaled setPoint",Default=0.5, Hidden=true); 71 71 #++++++++++++++++++++++++++++++++++++++++++++++++++++ 72 72 … … 77 77 78 78 "Output " 79 Output = PID_output*(MaxOutput -MinOutput) +MinOutput;79 Output = PID_output*(MaxOutput - MinOutput) + MinOutput; 80 80 81 81 "Set Point " … … 94 94 EQUATIONS 95 95 96 if (tau equal 0) then96 if (tau < 1e-3*'s') then 97 97 "Input first order filter" 98 98 (tau + 1e-3*'s')*diff(PID_inputFilt)= PID_input - PID_inputFilt; … … 102 102 end 103 103 104 if (tauSet equal 0) then104 if (tauSet < 1e-3*'s') then 105 105 "setPoint first order filter" 106 106 (tauSet + 1e-3*'s')*diff(PID_setPointFilt)= PID_setPoint - PID_setPointFilt; … … 130 130 PID_propTerm=PID_error; 131 131 132 if (derivTime equal 0) then132 if (derivTime < 1e-3*'s') then 133 133 "Derivative term filter" 134 134 alpha*(derivTime + 1e-3*'s')*diff(PID_dFilt) = PID_errorD - PID_dFilt; … … 147 147 case "Clipped": 148 148 if abs(PID_outps)>1 then 149 "Calculate clipped output when it´ssaturated"150 PID_output=(sign(PID_outps) *1+1)/2;149 "Calculate clipped output when saturated" 150 PID_output=(sign(PID_outps)+1)/2; 151 151 else 152 "Calculate clipped output when it´snot saturated"152 "Calculate clipped output when not saturated" 153 153 PID_output=PID_outp; 154 154 end
Note: See TracChangeset
for help on using the changeset viewer.