Гоман О.О.,Сніжко Є.М., Чернетченко Д.В.
Для процесів реального часу потрібно
створити такі умови, щоб засоби управління були здатні швидко реагувати на
зовнішні впливи і підтримувати системні константи (температура, тиск, і т.п.). Засобом для відповідності цим
вимогам є регулятор[1].
Регулятор - пристрій, який стежить за
станом об'єкта управління як системи і виробляє для неї керуючі сигнали.
Регулятори стежать за зміною деяких параметрів об'єкта управління
(безпосередньо, або за допомогою спостерігачів) і реагують на їх зміну за
допомогою деяких алгоритмів управління відповідно до заданих якістю управління.
Регулятори в переважній більшості працюють за принципом негативного зворотного
зв'язку з метою компенсувати зовнішні впливи, що діють на об'єкт управління і
відпрацювати заданий ззовні або закладений в системі закон управління
(програму).
Один з найбільш загальних видів
регуляторів використовує алгоритм ПІД-регулювання[2]. У ньому
використовується 3 складових для зменшення значення похибки: пропорційна,
інтегральна і диференціальна.
Пропорційна складова виробляє вихідний
сигнал , що протидіє відхиленню регульованої величини від заданого значення,
які спостерігаються в даний момент часу. Він тим більше, чим більше це
відхилення. Якщо вхідний сигнал дорівнює заданому значенню , то вихідний дорівнює
нулю.
Однак при використанні тільки
пропорційного регулятора значення регульованої величини ніколи не
стабілізується на заданому значенні. Існує так звана статична помилка, яка
дорівнює такому відхиленню регульованої величини, яке забезпечує вихідний сигнал,
стабілізуючий вихідну величину саме на цьому значенні.
Чим більше коефіцієнт пропорційності між
вхідним і вихідним сигналом (коефіцієнт посилення), тим менше статична помилка
, однак при дуже великому коефіцієнті посилення, при наявності затримок в
системі, можуть початися автоколивання, а при подальшому збільшенні коефіцієнта
система може втратити стійкість .
Інтегральна складова пропорційна
інтегралу від відхилення регульованої величини . Її використовують для усунення
статичної помилки . Вона дозволяє регулятору з часом врахувати статичну помилку
.
Якщо система не відчуває зовнішніх
впливів, то через деякий час регульована величина стабілізується на заданому
значенні, сигнал пропорційною складовою буде дорівнює нулю, а вихідний сигнал
буде повністю забезпечувати інтегральна складова. Проте, інтегральна складова
також може призводити до автоколивань.
Диференціальна складова пропорційна темпу
зміни відхилення регульованої величини і призначена для протидії відхилень від
цільового значення, які прогнозуються в майбутньому. Відхилення можуть бути
викликані зовнішніми впливами або запізненням впливу регулятора на систему.
Метою стало розроблення апаратно-програмний комплексу керування
параметром оточуючого середовища на базі програмувальної логічної інтегральної
схеми на прикладі підтримки температури у закритій камері на заданому рівні
уставки. Камера має безпосередній контакт із оточуючим повітрям. Система
складається з вимірювального приладу - термодатчика для виміру температури
зовнішнього середовища та нагрівального елемента для підтримки температури на
потрібному рівні. Встановлення температури уставки відбувається способом
програмування, а дійсне значення температури відображається засобами
візуалізації у реальному часі.
Програмна
реалізація нашої роботи складається з двох частин: зі створення апаратної
частини на базі програмованої
логічної інтегральної схеми (Spartan-3S)[3] та розробки мікропрограми керування
регулятором на мові VHDL. В результаті потрібно
порівняти данні з існуючими реалізаціями ПІД-регулятора та оцінити переваги та
недоліки.
Схема
налагоджувальної плати, побудованої на базі ПЛІС Xilinx Spartan
3S100E [4]:

Рис. 1 Spartan-3e FPGA board (part 1)

Рис. 1 Spartan-3e FPGA board (part 2)
Далі привожу текст програми ПІД-регулятора на
мові VHDL:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
entity pid is
Port ( a :
in STD_LOGIC;
b :
in STD_LOGIC;
c :
in STD_LOGIC;
d :
in STD_LOGIC;
e :
in STD_LOGIC;
f :
in STD_LOGIC;
clk
: in STD_LOGIC;
out_1 : out STD_LOGIC;
x : in
STD_LOGIC);
end pid;
architecture Behavioral of pid is
type statetypes is (Reset,
CalculateNewError,
CalculatePID,
DivideKg,
Write2DAC,
SOverload,
ConvDac
);
signal
state,next_state : statetypes := Reset;
signal out1
: std_logic;
signal Kp :
integer := 10;
signal Kd :
integer :=20;
signal Ki :
integer :=1;
signal Kg :
integer := 256;
signal
Output : integer := 1;
signal
SetVal : integer := 30;
signal sAdc
: integer := 0 ;
signal
Error: integer := 0;
signal
p,i,dd : integer := 0;
signal
DacDataCarrier : std_logic;
signal AdcDataCarrier : std_logic_vector (5
downto 0);
begin
PROCESS
variable Output_Old : integer
:= 0;
variable Error_Old : integer
:= 0;
BEGIN
IF (clk 'EVENT and clk='1') THEN
state <= next_state;
END IF;
case state is
when Reset =>
AdcDataCarrier(0)<=a;
AdcDataCarrier(1)<=b;
AdcDataCarrier(2)<=c;
AdcDataCarrier(3)<=d;
AdcDataCarrier(4)<=e;
AdcDataCarrier(5)<=f;
sAdc <= to_integer(signed(AdcDataCarrier)); --Get the input for PID
next_state <= CalculateNewError;
Error_Old := Error; --Capture old error
Output_Old := Output; --Capture old PID output
when CalculateNewError =>
next_state <= CalculatePID;
Error <= (SetVal-sAdc); --Calculate Error
when CalculatePID =>
next_state <= DivideKg;
p <= Kp*(Error); --Calculate PID
i <= Ki*(Error+Error_Old);
dd <= Kd *(Error-Error_Old);
when DivideKg =>
next_state <=
SOverload;
Output
<= Output_Old +(p+i+dd);
if output < 0 then
out_1
<= not x;
else
out_1
<= x;
end if;
when SOverload =>
next_state <=ConvDac;
if Output > 65535 then
Output <= 65535 ;
end if;
if Output < 1 then
Output <= 1;
end if;
when ConvDac =>
next_state
<=Write2DAC;
when Write2DAC =>
next_state <= Reset;
end
case;
END
PROCESS;
end Behavioral;
Після
реалізації пристрою та підключення датчик температури ds18B20 (Dallas
Semiconductors), який має 1-wire інтерфейс, були виконано дослідження
ПІД-регулятора. Схема установки приведена нижче:

Рис. 3 Схема випробувальної установки.
В процесі виконання дослідів ми отримали
такі залежності температури від часу:

Рис. 4 Залежність
температури від часу (P = 6W).

Рис. 4 Залежність
температури від часу (P = 9W).
При порівнянні
результатів ми помітили закономірність. При різній потужності ми досягаємо
температури уставки (30 0С) за однаковий час (6 хвилин), що свідчить
про перевагу використання ПІД-регулятора для інерційних систем. Результати, отримані із застосуванням
автоматизованого програмно-апаратного комплекту, у цілому добре узгоджуються з
результатами попередніх розрахунків та теоретичних відомостей.
Література:
2. Денисенко В.В. ПИД-регуляторы:
вопросы реализации. - СТА, №4, 2007, с. 86 - 97, №1, 2008, с. 86-99.2
3.
Кузелин М..О.., Кнышев Д..А.., Зотов В..Ю.. Современные
семейства ПЛИС фирмы Xilinx:
Справочное пособие. – М.: Горячая линия-Телеком, 2004. – 440 с.: ил.
4.
Тарасов И..Е.. Разработка цифровых устройств на основе
ПЛИС Xilinx с применением языка VHDL. – М.: Горячая линия-Телеком, 2005. – 252
с.: ил.