Ignore:
Timestamp:
Nov 20, 2008, 4:30:17 PM (15 years ago)
Author:
gerson bicca
Message:

updated pi controller

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/gui/eml/controllers/pi.mso

    r592 r686  
    22       
    33Model PI_simple
     4       
    45ATTRIBUTES
    56        Pallete         = true;
    67        Icon            = "icon/PI";
    78
    8         PARAMETERS
    9         Kp         as Real (Brief="Controller gain", Default=0.5);
    10         Ki         as Real (Brief="Integral time constant", Unit='s');
    11         bias       as Real (Brief="Previous scaled bias",Default=0.5);
     9PARAMETERS
     10        Kp              as Real         (Brief="Controller gain", Default=0.5);
     11        Ki                      as Real         (Brief="Integral time constant", Unit='s');
     12        bias            as Real         (Brief="Previous scaled bias",Default=0.5);
    1213
    1314        MinInput   as control_signal(Default=-1000);
    1415        MaxInput   as control_signal(Default=1000);
    1516       
    16         VARIABLES
    17         SetPoint   as Real               (Brief="Scaled setPoint", Lower=0, Upper=1, Default=0.5);
    18 in      Input      as control_signal (Brief="Previous scaled input signal", Default=0.5, PosX=0, PosY=0.5);
    19 out     Output     as control_signal (Brief="Scaled output signal", Default=0, PosX=0.7, PosY=1);
     17VARIABLES
     18        in              Input           as control_signal       (Brief="Previous scaled input signal", Default=0.5, PosX=0, PosY=0.5);
     19        out     Output     as control_signal    (Brief="Scaled output signal", Default=0, PosX=0.54, PosY=1);
     20        SetPoint                as Real                                 (Brief="Scaled setPoint", Lower=0, Upper=1, Default=0.5);
     21       
     22        input                   as Real    (Brief="Scaled input variable", Hidden=true);
     23        setPoint                as Real    (Brief="Scaled set point", Hidden=true);
     24        intTerm         as Real    (Brief="Integral term", Default=0, Protected=true);
     25        outps                   as Real    (Brief="Variable outp scaled between 0 and 1", Hidden=true);
     26       
     27EQUATIONS
    2028
    21         input      as Real     (Brief="Scaled input variable", Hidden=true);
    22         setPoint           as Real     (Brief="Scaled set point", Hidden=true);
    23         intTerm    as Real               (Brief="Integral term", Default=0, Protected=true);
    24         outps      as Real           (Brief="Variable outp scaled between 0 and 1", Protected=true);
    25        
    26         EQUATIONS
    27         "Calculate integral term"
     29"Calculate integral term"
    2830        Ki*diff(intTerm) = setPoint - input;
    2931       
    30         "Sum of proportional, integral and derivative terms"
     32"Sum of proportional, integral and derivative terms"
    3133        outps = bias + Kp*(setPoint - input) + intTerm;
    3234       
    3335        input*(MaxInput-MinInput) = Input-MinInput;
    3436        setPoint*(MaxInput-MinInput) = SetPoint-MinInput;
    35 
    3637
    3738        if outps > 1 then
     
    5051
    5152Model PI
     53       
    5254ATTRIBUTES
    5355        Pallete         = true;
    5456        Icon            = "icon/PI";
    5557
    56         PARAMETERS
    57         bias       as positive (Brief="Previous scaled bias", Lower=0, Upper=1, Default=0.5);
    58         beta       as positive (Brief="Proportional term setPoint change filter", Default=1);
    59         Action     as Switcher (Brief="Controller action", Valid=["Direct","Reverse"], Default = "Reverse");
     58PARAMETERS
     59
     60        Action                  as Switcher                     (Brief="Controller action", Valid=["Direct","Reverse"], Default = "Reverse");
     61        Mode            as Switcher                     (Brief="Controller mode", Valid=["Automatic","Manual"], Default = "Automatic");
     62        bias                    as positive                             (Brief="Previous scaled bias", Lower=0, Upper=1, Default=0.5);
     63        beta                    as positive                             (Brief="Proportional term setPoint change filter", Default=1);
     64        gain                    as positive                             (Brief="Controller gain", Lower=0, Upper=1, Default=0.5);
     65        intTime         as Real                                 (Brief="Integral time constant", Unit='s');
     66        MinInput        as control_signal       (Default=-1000);
     67        MaxInput        as control_signal       (Default=1000);
    6068       
    61         MinInput   as control_signal(Default=-1000);
    62         MaxInput   as control_signal(Default=1000);
     69VARIABLES
    6370
    64         gain       as positive           (Brief="Controller gain", Lower=0, Upper=1, Default=0.5);
    65         intTime    as Real               (Brief="Integral time constant", Unit='s');
    66     autoMan    as Real                   (Brief="Controller option: (0) Automatic, (1) Manual");   
    67 
    68         VARIABLES
    69         SetPoint   as Real               (Brief="Scaled setPoint", Lower=0, Upper=1, Default=0.5);
    70 in      Input      as control_signal (Brief="Previous scaled input signal", Default=0.5, PosX=0, PosY=0.5);
    71 out     Output     as control_signal (Brief="Scaled output signal", Default=0, PosX=0.7, PosY=1);
     71in      Input                   as control_signal       (Brief="Previous scaled input signal", Default=0.5, PosX=0, PosY=0.5, Hidden=true);
     72out     Output     as control_signal    (Brief="Scaled output signal", Default=0, PosX=0.7, PosY=1, Hidden=true);
     73                SetPoint  as Real                               (Brief="Scaled setPoint", Lower=0, Upper=1, Default=0.5);
    7274       
    73         propTerm   as Real               (Brief="Proportional term", Default=0);
    74         intTerm    as Real               (Brief="Integral term", Default=0);
    75         input      as Real     (Brief="Scaled input variable", Hidden=true);
    76         setPoint           as Real     (Brief="Scaled set point", Hidden=true);
    77         action     as Real     (Brief="Controller action: (-1) Direct,(1) Reverse", Default=-1, Hidden=true);
    78         outp       as control_signal (Brief="Sum of proportional, integral and derivative terms");
    79         error      as Real               (Brief="Error definition for proportional term");
    80         outps      as Real           (Brief="Variable outp scaled between -1 and 1");
     75        propTerm        as Real                                 (Brief="Proportional term", Default=0, Protected=true);
     76        intTerm         as Real                                 (Brief="Integral term", Default=0, Protected=true);
     77        input                   as Real                                 (Brief="Scaled input variable", Hidden=true);
     78        setPoint                as Real                                 (Brief="Scaled set point", Hidden=true);
     79        action                  as Real                                 (Brief="Controller action: (-1) Direct,(1) Reverse", Default=-1, Hidden=true);
     80        outp                    as control_signal       (Brief="Sum of proportional, integral and derivative terms", Hidden=true);
     81        error                   as Real                                 (Brief="Error definition for proportional term", Hidden=true);
     82        outps                   as Real                         (Brief="Variable outp scaled between -1 and 1", Hidden=true);
    8183       
    82         EQUATIONS
     84EQUATIONS
    8385       
    8486        input*(MaxInput-MinInput) = Input-MinInput;
    8587        setPoint*(MaxInput-MinInput) = SetPoint-MinInput;
    8688
    87         if autoMan equal 0 then
     89switch Mode
     90        case "Automatic":
    8891                "Error definition"     
    8992                error = beta*setPoint - input;
    90         else
     93        case "Manual":
    9194                "Error definition"
    9295                error = input*(beta-1.0);
Note: See TracChangeset for help on using the changeset viewer.