pid_regulator

Funkce

Číslicový regulátor, který podle dvou vstupních numerických výrazů - žádaná a regulovaná hodnota - vypočítá akční zásah (výstup). Má tři způsoby výpočtu akčního zásahu, které lze volit i během samotné regulace.

Syntax

  pid_regulator pid_regulator_name;
    rem = string;
    bubble = string;
    timer = timer_name;
    owner = owner_name;
    position = integer, integer, integer, integer;
    win_disable = [ identifier, . . . ];
    win_title = string;
    access = integer;
    tab_select = integer;
    send_same_data;
    condition = boolean_expression;
    wish_value = real_expression;
    expression = real_expression;
    output = real_dataelement;
    inverse;
    receivers = [ identifier, . . . ];
    manual = real_expression;
    parameters
      regulator_type = identifier;
      adaptive = boolean;
      refil = boolean;
      param_1 = real;
      param_2 = real;
      param_3 = real;
      file_name = file_name;
    end_parameters;
    show_description;
    wish_value_section
      BLOCK_SECTION
    end_wish_value_section;
    value_section
      BLOCK_SECTION
    end_value_section;
    output_section
      BLOCK_SECTION
    end_output_section;
    colors
      border_ink = color;
      border_paper = color;
      top_shadow = color;
      bottom_shadow = color;
      ink = color;
      paper = color;
      value = color;
      low_limit = color;
      high_limit = color;
      h_grid = color;
      v_grid = color;
    end_colors;
  end_pid_regulator;

  BLOCK_SECTION
    ratio = integer;
    view_position = integer;
    mode = identifier;
    content = identifier;
    range_from = real;
    range_to = real;
    low_limit = real;
    high_limit = real;
    history = integer;
    dec_places = integer;
    real_step = real;
    h_grid = integer;
    v_grid = integer;
    font = font_identifier, integer, style_identifier;
    mask = string;

Specifické parametry přístroje

Poznámky

Příklad

Příklad nastavení parametrů přístroje pid_regulator:

  pid_regulator id_2;
    timer = 1;
    owner = background;
    position = 217, 29, 445, 208;
    wish_value = w;
    expression = vystup_ze_soustavy;
    output = r;
    condition = start;
    output_section
      mode = flow_graph;
    end_output_section;
    wish_value_section
      view_position = 1;
      font = TIMES, 10, normal;
      mask = 'input ##.#';
    end_wish_value_section;
    value_section
      mode = flow_graph;
      history = 50;
    end_value_section;
    colors
      paper = white;
      value = black;
    end_colors;
  end_pid_regulator;

Nativní procedury přístroje

Podrobnější informace k nativním procedurám je možné nalézt v kapitole Regulátory a regulace.

SetRegulatorType( type : number )
GetRegulatorType( VAR type : real )

Metody sloužící k zjišťování a nastavování typů regulátorů. Parametr type může nabývat následujích hodnot:

1 - classical
2 - classicalDelay
3 - takahashi
4 - takahashiDelay
5 - variable


SetAdaptive( Adaptive : boolean );
GetAdaptive( VAR Adaptive : boolean );

Metody pro zapínání a vypínání samočinné identifikace. Je-li parametr Active = true identifikace běží, případně bude běžet.


SetParameters( t, omega : real );
SetParameters( r0, tI, tD : real );
GetParameters( VAR t, omega : real );
GetParameters( VAR r0, tI, tD : real );

Metody slouží ke změně parametrů regulátorů za běhu regulace. Pro tvarovatelný regulátor má význam metoda se dvěma parametry - poměrným tlumením a kruhovou frekvencí; pro klasický regulátor je určena metoda se třemi parametry - zesílením, integrační a derivační konstantou. Volání metody s neodpovídajícím počtem parametrů vede na chybu překladu aplikační úlohy. Více informací je možné získat v referenční příručce PID regulátoru.


SetDerivationDelay( k : real );
GetDerivationDelay( VAR k : real );

Metody nastavují nebo zjišťují hodnotu parametru filtrace derivační složky regulátorů takahashiDelay a classicalDelay. Více viz kapitola Regulátory a regulace.


RunIdentification();
StopIdentification();
IsIdentificationRunning( VAR running : boolean );

Metody pro řízení a zjišťování stavu identifikačního procesu. Metoda RunIdentification spustí identifikaci bez ohledu na její stav, metoda StopIdentification ji vypne. Následující časový krok ji však zase může zapnout. Více viz kapitola Regulátory a regulace.


SetIdentification( type : number );
GetIdentification( VAR type : real );

Metody pro nastavování způsobu identifikace soustavy. Povolené parametry jsou:

1 - identifikace iterativní metodou nejmenších čtverců
2 - identifikace metodou číslicové odmocninové filtrace
Více viz kapitola Regulátory a regulace.


SetLastOutputValue( Value : real );

Metoda ovlivňuje vnitřní stav regulátoru a přestavuje poslední hodnotu akčního zásahu. Nový akční zásah je vypočítán jako součet hodnoty posledního zásahu a korekce vypočtené regulátorem. Pomocí této metody je tedy možné efektivně a rychle dosáhnout požadované počáteční hodnoty výstupu.
UPOZORNĚNÍ: U adaptivního regulátoru je možné tímto zásahem způsobit nefunkčnost regulační smyčky. Více viz kapitola Regulátory a regulace.


SetOutputTrimming( OutputTrimming : boolean );

PID regulátor během regulace akumuluje ve své integrační části minulé akční zásahy a uchovává je ve svém vnitřním stavu. Tento vnitřní stav je kopírován na výstup regulátoru. Výstupní sekce (output_section) definuje meze, které výstup regulátoru nesmí překročit. Může tak nastat situace, kdy se vnitřní stav regulátoru liší od jeho skutečného výstupu -- výstup je ořezán. Předdefinované nastavení regulátoru tento stav vylučuje, dochází k degradaci vnitřního stavu podle definovaných výstupních mezí. Regulátor potom reaguje mnohem rychleji na změnu stavu soustavy. Ořezávání vnitřního stavu však má za následek, že regulátor v okamžiku dosažení meze výstupu přestává integrovat, nechová se tedy podle rovnic uvedených v kapitole Regulátory a regulace.

OCL metoda SetOutputTrimming vypíná (nebo zapíná) ořezávání výstupu. Pokud je ořezávání zapnuto (přednastavená hodnota), je vnitřní stav totožný s výstupem, naopak je vnitřní stav korektní podle definice regulátoru a výstup je jiný -- přizpůsobený výstupním mezím.


Událostní procedury přístroje

Přístroj může volat standardní událostní procedury:

OnActivate()
OnShow() 
OnHide() 
OnNewPosition( RectX, RectY, RectW, RectD : integer ) 
OnWindowMinimize() 
OnWindowMaximize() 
OnWindowRestore( WasMinimized, WasMaximized : boolean ) 
OnWindowClose() 

Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.

Specifické událostní procedury přístroje

OnOutput( &U : real )

Proceduru přístroj volá vždy při nastavení výstupu, ať již je jeho hodnota jakákoli. Procedura je proto volána v každém časovém kroku přístroje. Parametr U obsahuje aktuální hodnotu výstupu regulátoru, přičemž tato hodnota v okamžiku volání procedury ještě není zapsána do výstupního datového elementu. Procedura proto může výstup regulátoru ovlivnit upravením parametru U na libovolnou hodnotu. Teprve takto upravená (případně nezměněná) hodnota bude zapsána na výstup regulátoru.

OnOutputChange( &U : real )

Proceduru přístroj volá vždy při nastavení výstupu, je-li jeho aktuální hodnota odlišná od hodnoty předchozí. Procedura proto nemusí být volána v každém časovém kroku přístroje. Parametr U obsahuje aktuální hodnotu výstupu regulátoru, přičemž tato hodnota v okamžiku volání procedury ještě není zapsána do výstupního datového elementu. Procedura proto může výstup regulátoru ovlivnit upravením parametru U na libovolnou hodnotu. Teprve takto upravená (případně nezměněná) hodnota bude zapsána na výstup regulátoru.