Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программный комплекс Анализ систем 3.1 / PROG / PASCAL / Ctrl
.pas { џ§лЄ Turbo-Pascal, Borland-Pascal, Delphi }
{-------------------------------------------------------}
{ ќв®в ¬®¤г«м Ўл« ᮧ¤ Ї ЄҐв®¬ "Ђ «Ё§ ‘Ёб⥬ 3" }
{ (c) …ўбвЁЈҐҐў „.‚. }
{-------------------------------------------------------}
{ ђ бзЁв ® ¤«п в Єв а Ў®вл 0.003 ᥪ }
{**********************************************************}
{ ЏаЁ¬Ґа ЁбЇ®«м§®ў Ёп ¬®¤г«п ў д ©«Ґ EXAMPLE.PAS }
{ ќв®в д ©« ЇаЁ« Ј Ґвбп Є Ї ЄҐвг "Ђ «Ё§ бЁб⥬" }
{**********************************************************}
Unit Ctrl;
interface
{$N+} { ЁбЇ®«м§®ў вм б®Їа®жҐбб®а }
Type
Float = Single; { нв®в вЁЇ Ўг¤Ґв ЁбЇ®«м§®ў вмбп, Є Є вЁЇ б Ї« ў о饩 § Їпв®© }
Procedure Initialization; { Їа®жҐ¤га ЁЁжЁ «Ё§ жЁЁ }
Procedure Controller(Input0, Input1 : Float; var Output0 : Float); { дгЄжЁп Є®ва®««Ґа }
Implementation
var NDSum0:Float;
var Propor1:Float;
var Integrator2:Float;
var Integrator2Sum:Float;
var Integrator2Old:Float;
var Diff3:Float;
var Diff3Old:Float;
var Sum4:Float;
var Limit5:Float;
{ €ЁжЁ жЁп }
Procedure initialization;
Begin
Integrator2Sum := 0.00000;
Integrator2Old := 0.00000;
Diff3Old := 0.00000;
End; { Initialization }
Procedure Controller;
Begin
{ NDSum0 }
NDSum0 := Input0;
NDSum0 := NDSum0 - Input1;
{ Propor1 }
Propor1 := NDSum0;
Propor1 := Propor1 * 1.43478261;
{ Integrator2 }
Integrator2 := NDSum0;
Integrator2 := Integrator2 + Integrator2Old;
Integrator2 := Integrator2 * 0.00652174;
Integrator2Sum := Integrator2Sum + Integrator2;
Integrator2 := Integrator2Sum;
Integrator2Old := NDSum0;
{ Diff3 }
Diff3 := NDSum0;
Diff3 := Diff3 - Diff3Old;
Diff3Old := NDSum0;
Diff3 := Diff3 * 13.04347826;
{ Sum4 }
Sum4 := Propor1;
Sum4 := Sum4 + Integrator2;
Sum4 := Sum4 + Diff3;
{ Limit5 }
Limit5 := Sum4;
If Limit5 > 50 then
Begin
Limit5 := 50;
End
Else
Begin
If Limit5 < -50 then
Begin
Limit5 := -50;
End;
End;
Output0 := Limit5;
End; { Controller }
End.
{-------------------------------------------------------}
{ ќв®в ¬®¤г«м Ўл« ᮧ¤ Ї ЄҐв®¬ "Ђ «Ё§ ‘Ёб⥬ 3" }
{ (c) …ўбвЁЈҐҐў „.‚. }
{-------------------------------------------------------}
{ ђ бзЁв ® ¤«п в Єв а Ў®вл 0.003 ᥪ }
{**********************************************************}
{ ЏаЁ¬Ґа ЁбЇ®«м§®ў Ёп ¬®¤г«п ў д ©«Ґ EXAMPLE.PAS }
{ ќв®в д ©« ЇаЁ« Ј Ґвбп Є Ї ЄҐвг "Ђ «Ё§ бЁб⥬" }
{**********************************************************}
Unit Ctrl;
interface
{$N+} { ЁбЇ®«м§®ў вм б®Їа®жҐбб®а }
Type
Float = Single; { нв®в вЁЇ Ўг¤Ґв ЁбЇ®«м§®ў вмбп, Є Є вЁЇ б Ї« ў о饩 § Їпв®© }
Procedure Initialization; { Їа®жҐ¤га ЁЁжЁ «Ё§ жЁЁ }
Procedure Controller(Input0, Input1 : Float; var Output0 : Float); { дгЄжЁп Є®ва®««Ґа }
Implementation
var NDSum0:Float;
var Propor1:Float;
var Integrator2:Float;
var Integrator2Sum:Float;
var Integrator2Old:Float;
var Diff3:Float;
var Diff3Old:Float;
var Sum4:Float;
var Limit5:Float;
{ €ЁжЁ жЁп }
Procedure initialization;
Begin
Integrator2Sum := 0.00000;
Integrator2Old := 0.00000;
Diff3Old := 0.00000;
End; { Initialization }
Procedure Controller;
Begin
{ NDSum0 }
NDSum0 := Input0;
NDSum0 := NDSum0 - Input1;
{ Propor1 }
Propor1 := NDSum0;
Propor1 := Propor1 * 1.43478261;
{ Integrator2 }
Integrator2 := NDSum0;
Integrator2 := Integrator2 + Integrator2Old;
Integrator2 := Integrator2 * 0.00652174;
Integrator2Sum := Integrator2Sum + Integrator2;
Integrator2 := Integrator2Sum;
Integrator2Old := NDSum0;
{ Diff3 }
Diff3 := NDSum0;
Diff3 := Diff3 - Diff3Old;
Diff3Old := NDSum0;
Diff3 := Diff3 * 13.04347826;
{ Sum4 }
Sum4 := Propor1;
Sum4 := Sum4 + Integrator2;
Sum4 := Sum4 + Diff3;
{ Limit5 }
Limit5 := Sum4;
If Limit5 > 50 then
Begin
Limit5 := 50;
End
Else
Begin
If Limit5 < -50 then
Begin
Limit5 := -50;
End;
End;
Output0 := Limit5;
End; { Controller }
End.
Соседние файлы в папке PASCAL