Популярные услуги

Алгоритмы цифрового управления для УВМ

2021-03-09СтудИзба

алгоритмы цифрового управления для увм

4.1. Адаптивные цифровые алгоритмы

Идея самонастройки состоит в том, что на вход объекта или регулятора подается чисто периодический пробный сигнал. Частоту этого сигнала определяют таким образом, чтобы она соответствовала резонансной частоте замкнутой системы.

Процесс самонастройки носит итеративный характер, так как при каждом перерасчете параметров ПИ-регулятора значение резонансной частоты меняется.

Целью самонастройки является расчет таких параметров, при которых на частоте wgh=whtp в системе обеспечивается показатель колебательности М=1,6.

Рассмотрим принцип адаптивного регулятора с частотным разделением каналов управления и самонастройки. Идея частотного разделения каналов управления и самонастройки состоит в исключении из рабочего спектра частот основного контура регулирования (полосы пропускания системы) одной или нескольких частот и направления этих гармоник для идентификации динамических характеристик объекта или разомкнутой системы.

Технически эта идея реализуется путем включения в основной контур системы цифрового заграждающего фильтра настроенного на частоту пробных синусоидальных колебаний, подаваемых на вход объекта или регулятора (рис.1).

Для схемы представленной на рисунке 1.а при разомкнутом основном контуре можно определить одну точку АФХ объекта управления.

Рекомендуемые материалы

Для схемы представленной на рисунке 1.б при разомкнутом основном контуре можно определить одну точку АФХ разомкнутой системы.

Рис.1.а.

Рис.1.б.

На схемах представленных на рисунке 1 введены следующие обозначения:

ГСК - генератор синусоидальных колебаний,

ЗФ - заграждающий фильтр,

ПИ - ПИ-регулятор,

ОУ - объект управления.

Для первой схемы расчет параметров ПИ-регулятора производится по формулам Зиглера Никольса:

Т =Т / 1.2

К =0.45К =0.45 А / А

Заграждающий фильтр второго порядка работает по следующему алгоритму:

У (К)=-c*У (К-2)+b*(У(К-1)-У (К-1))+a*(У(К-2)+У(К))

Коэффициенты фильтра через нормированный период N пробных колебаний по формулам

а=(1+W )/f,

W=ctg(p/N),

b=2*(1-W )/f,

с=(1-W/D +W )/f,

f=1+W/D +W,

где D -добротность фильтра.

Нормированный период связан с частотой пробных колебаний соотношением w=2p/(N*T).Показано, что использование фильтров более высокого порядка нецелесообразно в связи с появлением слишком больших фазовых искажений, резко уменьшающих запасы устойчивости в системе.

На основе этого принципа разработан ряд новых алгоритмов самонастройки типовых регуляторов и регуляторов состояния для объектов с запаздыванием. На рисунке 2 представлена структурная схема адаптивного ПИ-регулятора, построенный на основе принципа частотного разделения. На них приняты следующие обозначения:

Р - настраиваемый ПИ-регулятор,

ЗФ - заграждающий фильтр,

ОУ - объект управления,

СД - синхронный детектор,

БФАЧ - блок фазовой автоподстройки частоты,

Г - генератор пробных колебаний,

ВБ - вычислительные блоки.

Рис. 3.

Для возбуждения колебаний в выходном сигнале объекта на его вход от цифрового генератора подается чисто периодический сигнал. Амплитуда этого сигнала выбирается в диапазоне от 5 до 15 процентов с целью получения достаточно заметной амплитуды колебаний выхода от 0,3 до 1,5 процентов. Важным является перестройка генератора на частоте пробных колебаний. Такую перестройку осуществляет блок фазовой автоподстройки частоты.

В этом блоке осуществляется сравнение установившегося значения фазы колебаний для текущей частоты с фазовым сдвигом v =-p. Если текущий фазовый сдвиг меньше -p, то частота генератора должна увеличиваться. Оценку установившегося значения амплитуды и фазы колебаний осуществляет блок синхронного детектирования. По достижении заданной фазы колебаний, через ВБ осуществляется расчет параметров настройки ПИ-регулятора. В это же время перестроение заграждающего фильтра осуществляется при каждой смене w. В данном случае работает система слежения за фазовым сдвигом в ОУ и при изменениях параметров ОУ фаза колебаний будет удерживаться на уровне v. Это гарантирует непрерывную настройку параметров регулятора под изменяющиеся характеристики объекта управления.

4.1.1. Описание программы цифрового управления в реальном времени

Программа цифрового управления в реальном времени написана на языке высокого уровня С++. Ее листинг приведен в приложении. Для трансляции программы используется компилятор Borland C++ версии 2.0.

В начале программы определены стандартные библиотеки часть, функций из которых будет использоваться в программе. Далее определяется ряд переменных, необходимых для работы специального драйвера с именем INTERRUP.EXE, который обслуживает плату ЦАП-АЦП. Этот драйвер загружается лишь один раз в оперативную память ЭВМ до начала компиляции программы управления P-REG.cpp. Кроме этого для инициализации платы ЦАП-АЦП служит функция inicial, а для ввода и вывода информации - функции getADC, setDAC, update. Все эти функции написаны на языке Ассемблер.

В классе REG определены переменные xz - сигнал задания kp - коэффициент усиления регулятора v - выходной сигнал регулятора (переменные вещественного типа). Здесь же определен конструктор инициализации REG и функция Computer вычисления сигнала пропорционального регулятора. Конструктор и эта функция описаны ниже по ходу текста.

В основной части программы (после main) сначала происходит инициализация графического режима работы дисплея, что позволяет наблюдать графики изменения скорости вращения и напряжения управления во времени. Далее задается период ТК квантования (опроса) в тиках таймера BIOSа ЭВМ. Минимальное значение периода может быть установлено ТК=1 тику =1/18,2 с=0,0549 с. Столь малый период квантования и высокое быстродействие современных ЭВМ позволяет управлять малоинерционными объектами, которыми являются привода с электродвигателями постоянного тока.

При инициализации с помощью конструктора REG создается объект с именем pidp.

Элементом новизны в программе является такое использование функции biostime() возвращающей текущее время машины которое позволяет запускать регулятор и все дополнительные операторы строго через заданный период квантования ТК. Реализуется эта идея с помощью конструкции

bt=TK+biostime(0,0L);

if (bt-biostime(0,0L)==0L)

{

bt=TK+biostime(0,0L);

Операторы;

}

где bt=TK+biostime(0,0L) - упрежденное на величину ТК текущее время машины. Как видно из программы операторы выполняются лишь в момент достижения текущим временем величины bt. Заметим что при таком подходе сохраняется текущее время машины.

Программа разрешает также вводить с клавиатуры в любой момент времени новые значения величин xz и kp, что позволяет провести комплекс исследований динамики замкнутой системы управления. При этом, за счет переопределения величины bt не происходит срыва работы системы в реальном времени.

Для облегчения понимания работы программы в ее листинге имеются комментарии, поясняющие назначение отдельных операторов. Кроме этого, на рис. 3 приведена структурная схема контура регулирования, переменные на которой соответствуют идентификаторам программы.

Рис. 3

4.2. Многомерные цифровые алгоритмы

и системы управления с УВМ

Современные управляющие компьютеры обладают быстродействием и объемом памяти достаточным для управления в реальном времени сотнями и тысячами контуров регулирования. При этом с целью повышения надежности управления обычно используется две синхронно работающие УВМ. Результаты вычислений текущих управляющих сигналов сравниваются, и при их идентичности, выдаются на соответствующий исполнительный орган. При появлении сбоя в одной из УВМ, ее управляющие сигналы блокируются, и включается программа диагностики. Наряду с этим осуществляется дублирование наиболее важных измерительных цепей ОУ, а именно контроль параметра может осуществляться по двум параллельным каналам: два датчика, два нормирующих преобразователя (фактически два АЦП). Повышение надежности может осуществляться дублированием как вычислительной части, так и аппаратной части.

Из десятков и сотен контуров регулирования обычно выделяется несколько контуров (или групп контуров) явно взаимодействующих друг с другом. Обычно, это контуры регулирования одного объекта (реактора), т. е. объект является многосвязанным. Многосвязанность резко затрудняет расчет настроек регуляторов для соответствующих контуров управления.

Не существует эффективных методов расчета настроек регуляторов (типовых) для многосвязанных ОУ. В связи с этим одним из подходов может являться подход, основанный на построении адаптивных самонастраивающихся систем управления с частотным распределением каналов управления и самонастройки. Центральной идеей здесь является определение таких параметров настройки регулятора, которые обеспечивали бы заданные запасы устойчивости  каждом контуре регулирования с учетом их взаимосвязи (см. рис. ):

ЗФ – заграждающий фильтр;

Г – генератор;

Р – регулятор.

Предположим, что регуляторы Р1 и Р2 – типовые ПИ- регуляторы. Параметры настройки этих регуляторов с помощью соответствующих контуров самонастройки будут рассчитываться, исходя из следующих алгоритмов: коэффициенты усиления должны рассчитываться таким образом, чтобы обеспечить заданный запас DА в каждом контуре регулирования, а постоянные интегрирования должны вычисляться через критическую частоту колебаний АФХ разомкнутой системы каждого контура. Отслеживание этой частоты осуществляется автоматически с помощью регулятора фазы, сигналом задания которого является величина j=-p, а выходом – частота колебаний генератора (wген).

4.2.1. Программа цифрового управления двумерным объектом с помощью типовых ПИ и ПИД алгоритмов

#include <math.h>

#include <bios.h>

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <conio.h>

#include <iostream.h>

#include <graphics.h>

#include "drv-pb.cpp"

#define ZERO_INIT (Object) memset ///

         long TK=1;

         int krat=4; //Следующий канал будет опрашиваться в 4 раза реже, чем

                          //предыдущий.

         float tк=TK/18.2;

         char ch2=0;

float y, x, xz=40, xz2=50, y2, v2;

int tвр=0, tвр1=0, tврz1=0, tвр2=0, tврz2=0;

int dt=1;

class REG1 {

public:

float vz1, yz1, x1, x2, x3, x4, l1, Kp, ti, td, l, vz;

void init (float, float, float, float, float, float);

float compute (float, float);

int AУ ( );

} ;

void REG1:: init (float_vz, float_x, float_Kp, float_ti, float_td, float_l)

{ZERO_INIT (REG1);

vz=_vz, Kp=_Kp, ti=_ti;

td=_td, l=_l;

x1=x2=x3=x3=x;

}

float REG1:: compute (float x, float xz)

{И + ПД – закон}

int REG1:: АУ1 ( ) {

update ( );

y=getADC (1);

v=compute (y, xz);

set DAC (v, 2)

tвр1= tвр1+krat*dt;

setcolor (14);

line (tврz1, 470-vz1*4, tвр1, 470-v*4);

line (tврz1, 470-v*4, tвр1, 470-v*4);

vz1=v;

setcolor (9);

line (tврz1, 400-yz1*4, tвр1, 400-y*4);

yz1=y;

tврz1=tвр1;

if (tвр1== tвр2&& tвр1>=620-dt)

{ tвр2=0; tвр1=0;

tврz2=0; tврz1=0;

cleardevise ( ); }

gotoxy (50, 2);

printf (²v1=%. 1f  y1=%. 1f², v, y);

return 0;

}

class REG2 {

public:

float vz2, yz2, x1, x2, x3, x4, l1, Kp, ti, td, l, vz;

void init (float, float, float, float, float, float);

float compute (float, float);

int AУ2 ( );

}

void REG2:: init (float_vz, float_x, float_Kp, float_ti, float_td, float_l)

{ZERO_INIT (REG2);

vz=_vz, Kp=_Kp, ti=_ti;

td=_td, l=_l;

x1=x2=x3=x3=x;

}

float REG2:: compute (float x, float xz)

{И + ПД – закон}

int REG2:: АУ2 ( ) {

update ( );

tвр ++;

yz=getADC (0);

vz=compute (y2, xz2);

set DAC (v2, 3)

tвр2= tвр2+dt;

setcolor (15);

line (tврz2, 470-vz2*4, tвр2, 470-v2*4);

line (tврz2, 470-v2*4, tвр2, 470-v2*4);

vz2=vz;

setcolor (11);

line (tврz2, 400-yz2*4, tвр2, 400-y2*4);

yz2=yz;

tврz2=tвр2;

gotoxy (50, 3);

printf (²v2=%. 1f  y2=%. 1f², v2, y2);

if (kbhit ( ))

{ ch2=getch ( );

switch (ch2);

case ¢x¢:

case ¢x¢:

cout << ² h yz1= ²;

cin >> xz;

cout << ² h yz2= ²;

cin >> xz2;

bty=TK+biostime (0, OL);

break;

}}

return 0;

}

int main ( ) {

int S=0;

int gdriver=DETECT, gmode;

init graph (& gdriver, & gmode, ²c:BC31BGI²);

clrset ( );

inicial ( );

class REG1 pidp1;

REG2 pidp 2;

update ( );

pidp 1_init (40, getADC (1), 2/tк, 0, 0);

pidp 2_init (40, getADC (0), 14, 9, 3, 68/tк, 0, 0);

bty=TK+biostime (0, 0L);

mm:

if (bty-biostime (0,0L) {

bty=TK+biostime (0, 0L);

S++;

if (S<=krat)  pidp2.  АУ2( )

if (S==krat) {pidp1. АУ1( ). S=0; }

}

if (ch2=27 return 0;

goto mm;

return 0;

}

1 Особенности программы

В программе имеются два канала управления:

1) медленный – работает с периодом ТК*krat, т. е. 1*4=4 тика (в нашем случае;

2) быстродействующий – работает с периодом ТК, т. е. 1 тик.

В обоих случаях реализованы типовые ПИД-регуляторы, работающие по схеме И+ПД: И-составляющая – идет по ошибке, а П- и Д-состаляющие – по выходному сигналу, что исключает броски выходного сигнала пр смене задания (плавные переходные процессы).

Алгоритм позволяет изменять задания по обоим каналам, причем реализация этого осуществляется в блоке АУ2, работающем с периодом ТК.

Выход из режима непосредственного цифрового управления осуществляется по клавише ESC.

4.3. Модальные алгоритмы цифрового управления,

их достоинства и недостатки

4.3.1. Модальный  цифровой регулятор состояния

Наиболее совершенной структурой является так называемый регулятор состояния. Расчет его параметров возможен тремя методами:

1. Параметрическая оптимизация коэффициентов регулятора состояния по какому-либо критерию. Например, по критерию вида  . Критерий носит не аналитический вид, что заставляет использовать численные методы для его оптимизации. При большой размерности вектора   (вектор коэффициентов усиления регулятора состояния) длительность расчетов резко возрастает.

2.      Расчет  путем оптимизации интегрального квадратичного (суммарного) критерия качества . Коэффициенты  вычисляется через решение дискретного уравнения типа Рикатти. Однако решение самого уравнения типа Рикатти возможно лишь в численном виде итеративными процедурами, что резко затрудняет практическое применение метода.

3.      Расчет  можно осуществить методами теории модального управления, когда задаются нужным расположением корней характеристического уравнения Z1…Zn и рассчитывают вектор  так, чтобы обеспечить это расположение корней.

                           Z2      

                Z1   x

Koc                            x  x

                                    x    Z4

                                         Z3

Установлено, что в отличие от предыдущих случаев для нахождения  модального регулятора состояния необходимо решать систему линейных алгебраических уравнений, что чрезвычайно упрощает процедуру расчетов. Однако встает проблема установления взаимосвязи между динамикой замкнутой системой и расположением корней ее характеристического уравнения. Особенно задача усложняется для многомерных СУ.

4.3.2.  Модальный  цифровой  регулятор  для  объекта  первого  порядка  с  запаздыванием

Потребуем,  чтобы модальный регулятор был астатическим.  Для этого в структуру объекта введем модуль дискретного оператора. Процедура синтеза распадается на две части:

1) вычисление вектора    модального регулятора для объекта с запаздыванием  М=0;

2) формирование упрежденного вектора состояния

1. Определим    методом теории модального управления. Запишем дискретную модель объекта 1-го порядка.

Для получения характеристического уравнения замкнутой системы подставим управление u(k) в уравнение объекта.

 

 - характеристическое уравнение замкнутого цифрового ОУ.

Потребуем чтобы система имела заданное расположение корней (z1, z2, z3).

Для упрощения расчетов и облегчения выбора нужного расположения корней предлагается поместить все корни в одну точку:   

Установлено, что при расположении корней в правой полуплоскости колебательность переходного процесса уменьшается по сравнению с аналогичным расположением в левой полуплоскости.

  

Два полинома равны, если равны коэффициенты при соответствующих степенях  Z.

Произведем некоторые преобразования.

Далее

 

Найдем  k1 и kp    

Получим выражения для нахождения коэффициентов:

Величина bp - корень характеристического уравнения замкнутой цифровой системы управления. Рекомендуется выбирать в диапазоне от 0 до 1, причем с уменьшением значения bp коэффициенты регулятора возрастают, что приводит к повышению быстродействия в системе, в частности при bp =0 процессы в такой системе заканчиваются за три такта (так называемый апериодический регулятор). Однако в реальных условиях модель объекта приближенно описывает динамику истинного управления, поэтому величину bp рекомендуется выбирать >0; а конкретное значение определить путем моделирования, либо на реальном процессе цифрового управления.

4.3.3. Описание программы модального управления в реальном времени

Программа модального цифрового управления написана на языке высокого уровня С++. Ее листинг приведен в приложении. Для трансляции программы используется компилятор Borland C++ версии 2.0.

В начале программы определены стандартные библиотеки, часть функций из которых будет использоваться в программе. Далее определяется ряд переменных, необходимых для работы  специального  драйвера с именем  INTERRUP.EXE,  который  обслуживает  плату  ЦАП-АЦП. Этот драйвер загружается лишь один раз в оперативную память ЭВМ до начала компиляции  программы  управления  MP1Y-PB.cpp.  Кроме этого, для инициализации  платы ЦАП-АЦП  служит функция inicial( ), а для ввода и вывода информации – функции  getADC( ), setDAC( ), update( ).

В классе  МОУ1 определена функция koefmo1() вычисления коэффициентов модели объекта А1,В1,В2. В классе МРУ1 определены переменные KP, K1, KI – коэффициенты модального регулятора. Здесь же определен  конструктор инициализации МРУ1() и функции koefmp() вычисления коэффициентов модального регулятора и mreg() вычисления управления.

В основной части программы (после main( )) сначала происходит инициализация графического режима работы дисплея, что позволяет наблюдать графики изменения во времени. Далее задается период  ТК квантования (опроса) в тиках таймера  BIOSа  ЭВМ. Минимальное значение периода может быть установлено  ТК=1тику =1/18.2 с = 0.0549 с. Столь малый период квантования и высокое быстродействие современных ЭВМ позволяет управлять малоинерционными объектами, которыми являются тепловые объекты.

При инициализации с помощью конструктора МРУ1() создается объект с именем mp.

Программа разрешает также вводить с клавиатуры в любой момент времени новые значения величин  XZ – сигнал задания, КР – коэффициент регулятора, bp – корень характеристического уравнения, u – сигнал задания, что позволяет провести комплекс исследований динамики замкнутой системы управления. При этом за счет переопределения величины bt не происходит срыва работы системы в реальном времени.

Программа позволяет перейти в режим ручного управления. Для этого необходимо путем нажатия клавиши  « u »  ввести сигнал задания. Для перехода в автоматический режим путем нажатия клавиши  « k » ввести значение коэффициента регулятора КР

 Элементом новизны в программе является такое использование функции  biostime( ) возвращающей  текущее время машины, которое позволяет запускать регулятор и все дополнительные операторы строго через заданный период квантования ТК. Реализуется эта идея с помощью конструкции

bt = TK+biostime(0,0L);

if  (bt – biostime(0,0L) = = 0L)

     {

       bt = TK + biostime(0,0L);

       операторы;

     }

где  bt = TK+ biostime(0,0L) –  упрежденное на величину ТК текущее  время машины. Как видно из программы, операторы выполняются лишь в момент достижения текущим временем величины bt. Заметим что при таком подходе сохраняется текущее время машины.

Для облегчения понимания работы программы в ее листинге имеются комментарии, поясняющие назначение отдельных операторов.

Приложение

//MP1Y-PB.cpp  Мод. регулятор с наблюдателем и упредителем

//Необходимо упреждать на М+1 такт

#include <math.h>

#include <bios.h>

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <conio.h>

#include <iostream.h>

#include <graphics.h>

#include "drv-pb.cpp"

#include "class-GR.cpp"

#define ZERO_INIT(Object)

         memset(((Object*)this), 0, sizeof(*this));

//*****************************************************

         float A,B1,B2;

         int M;

class MOY1

{

public:

         void koefmo1(float,float,float,float);

};

void MOY1::koefmo1(float K,float T,float H,float TK)

{

         float G=H/TK;     M=H/TK;

            float C=G-M;       A=exp(-TK/T);

         B1=K*(1-pow(A,(1-C)));

         B2=-K*(A-pow(A,(1-C)));

}

//******************************************************

class MPY1

{

         float MI,W[100];

public:

         float KP,KI,K1;//Для вывода в main

         MPY1();

         void koefmp(float);

         float mreg(float,float);

};

         MPY1::MPY1()//Применять обязательно

         { ZERO_INIT(MPY1);}

void MPY1::koefmp(float BR)

{

         KI=pow((1-BR),3)/(B1+B2);

         KP=(A+A*A-3*A*BR+BR*BR*BR+B2*KI)/(A*B1+B2);

         K1=1+A-B1*KP-3*BR;

}

         float MPY1::mreg(float X,float X3)

{

         float E,EL,E1,EY,MIY,U;//Переменные разового действия

         E=X-X3;EL=E;

         MIY=MI;E1=E;

         if(M>0)

         {

                   for (int J=0;J<=M-1;J++)

                   {

                   EY=A*E1+B1*W[1+J]+B2*W[J];

                   MIY=MIY+E1;E1=EY;

                   }

         }

         if(M==0) EY=E;

         U=-KP*EY-KI*MIY-K1*W[M];

         if(U>100){U=100;EL=0;}

         if(U<0){U=0;EL=0;}

         MI=MI+EL;

         for (int t=0;t<=M+1;t++)

         W[t]=W[1+t];

         W[M]=U;

         return U;

}

//************************************************************

void main()

{

         int gdriver = DETECT, gmode;

         initgraph(&gdriver, &gmode, "C:\BC31\BGI");

         inicial();   //Инициализация платы

         long TK=10;

         float tk=TK/18.2;                // Tk в с!

         char ch=0;

         float BR=.7,mt=2.5,Ko=1.1206,To=35.8,Ho=1.331;

//      ИНИЦИАЛИЗАЦИЯ ОБЪЕКТОВ

         GR             graph=GR(mt);//Масштаб по t

         MOY1            moy;

         MPY1           mp=MPY1();

         moy.koefmo1(Ko,To,Ho,tk);M=M+1;//Упр. на М+1

         mp.koefmp(BR);

         cout.precision(3);

         float U,y,xz=40,WF=0;

         graph.osi(tk);

         long bty;

         bty=TK+biostime(0,0L);

         while(ch!=27)

         {

                   if (bty-biostime(0, 0L)==0)

                    {

                     bty=TK+biostime(0, 0L);

                     gotoxy(48,2);

                     printf("Y=%.1f  U=%.1f     ",y,U);

                     gotoxy(46,3);

                     printf("Ko=%.3f To=%.1f Ho=%.2f",Ko,To,Ho);

                     gotoxy(52,1);

                     printf(" tk=%.4f ",tk);

                     update();

                     y=getADC(1);

                     U=mp.mreg(y,xz);

                     setDAC(U+WF, 2);

                     update();

                     gotoxy(13,1);

                     cout <<"M"<<"t"<<"A"<<"t"<<"B1"<<"t"<<"B2  ";

                     cout.precision(4);

                     gotoxy(13,2);

                     cout <<M<<"t"<<A<<"t"<<B1<<"t"<<B2;

                     gotoxy(15,3);

                     cout <<"Ki"<<"t"<<"Kp"<<"t"<<"K1"<<"t"<<"Bp";

                     gotoxy(15,4);

                     cout <<mp.KI<<"t"<<mp.KP<<"t"<<mp.K1<<"t   "<<BR;

                     graph.Grafic(y,U,0,0,0,0,0,tk);

                     if(kbhit())

                                      {

                                       ch=getch();

                                       switch(ch)

                                               {

                                                case 'x':

                                                case 'X':

                                                gotoxy(8,5);

                                                cout << "XZ=" <<xz << endl;

                                                gotoxy(8,6);

                                                cout << "XZ=      " <<endl;

                                                gotoxy(8,6);

                                                cout << "XZ=";

                                                cin >> xz;

                                                bty=TK+biostime(0, 0L);

                                                break;

                                                case 'f':

                                                case 'F':

                                                gotoxy(24,5);

                                                cout << "WF=" <<WF << endl;

                                                gotoxy(24,6);

                                                cout << "WF=      " <<endl;

                                                gotoxy(24,6);

                                                cout << "WF=";

                                                cin >> WF;

                                                bty=TK+biostime(0, 0L);

                                                break;

                                               }

                                      }

                   }

         }

                   setDAC(40, 2);

                   update();

}

4.4 Учет особенностей программной реализации алгоритмов управления и переменного запаздывания при разработке САУ на базе ЭВМ

4.4.1. Сложности при математическом описании систем с запаздыванием.

В настоящее время для управления САУ широко применяют ЭВМ. Это обеспечивает: легкость реализации сложных алгоритмов управления и возможность управлять объектами с очень высокой точностью. Часто одна ЭВМ способна обслуживать несколько объектов управления. Благодаря сетям ЭВМ достигается еще большая эффективность применения из-за распределения задач между ЭВМ, обеспечивается высокая отказоустойчивость без резервирования ЭВМ на каждом объекте управления. Но при синтезе и анализе САУ с применением ЭВМ возникает ряд проблем, которых чаще всего не было в классических САУ:

· приходится рассматривать САУ как системы с запаздыванием;

· появились сложности, связанные с анализом и разработкой не только устройств, но и программ.

Математическое описание систем с запаздыванием значительно сложнее, чем систем без него: в случае применения преобразования Лапласа к системе с запаздыванием вместо полиномов получаются выражения,  содержащие е-рТ , где  р - оператор Лапласа, изменяются критерии управляемости и наблюдаемости и т.д. В результате простые инженерные методы, используемые при анализе и синтезе объектов без запаздывания, перестают работать. Приближенная замена    е-рТ ее разложением в ряд Тейлора (замена элемента запаздывания апериодическими звеньями ) не всегда решает проблему и не всегда возможна:

· бывает сложно определить, сколько членов ряда Тейлора е-рТ надо взять, чтобы при замене элемента задержки система сохранила такие свойства исходной системы, как устойчивость, управляемость, наблюдаемость и т.д., а прочие характеристики исходной и новой систем различались бы не более чем на заранее указанные величины;

· если задержка не является постоянной величиной, заменить элемент запаздывания апериодическим звеном нельзя.

Переменное запаздывание может возникать в том случае, если в САУ некоторые элементы реализованы в виде алгоритмов на ЭВМ, так как время выполнения алгоритма в общем случае - непостоянная величина. Переменное запаздывание способно появляться и в распределенных САУ, в которых передача сигналов между элементами реализуется не по прямым каналам, а по сети, обслуживающей сразу несколько элементов. Оно может возникать и при использовании различных устройств, например некоторых видов АЦП, а также быть обусловлено самой структурой САУ, в частности особенностями технологического процесса, который обслуживается данной САУ.

Наращивание ресурсов САУ ( повышение быстродействия ЭВМ, увеличение пропускной способности сети, использование наиболее совершенных и быстродействующих устройств и т.д.) с целью сделать влияние переменного запаздывания несущественным может привести к резкому увеличению стоимости САУ или не позволит использовать уже имеющуюся инфраструктуру , а в том случае, если переменное запаздывание вызвано особенностями технологического процесса, такой подход может вообще не дать результатов. Сведение системы с переменным запаздыванием к системе с постоянным запаздыванием (например, максимальным) не всегда целесообразно и даже возможно, так как при этом не удается учитывать особые эффекты, вызываемые переменным запаздыванием.

Особенности систем с переменным запаздыванием в классической теории автоматического управления (ТАУ) исследованы очень мало. Вообще системы с переменным запаздыванием приобретают новые малоизученные свойства. Например, если частота изменения времени запаздывания совпадает с частотой системы, то наблюдается явление, похожее на резонанс, и качество системы резко ухудшается или она (при определенных условиях) может стать неустойчивой несмотря на то, что ее коэффициент усиления <1. Возможны и другие аналогичные явления.

Чтобы избежать отрицательного переменного запаздывания, предлагается ввести  в систему устройство, которое будет перехватывать управляющий сигнал, приходящий с переменным запаздыванием, и выдавать его с постоянной частотой, равной 1/Тмах , где Тмах - максимально допустимое время запаздывания.

Кроме того, если сигнал передается по сети со сложной структурой, то в результате изменения времени запаздывания сигнал, относящийся к моменту времени Тi , может прийти  позднее  сигнала, относящегося к моменту времени Тi+1 . В этом случае на подобное устройство ложится задача по сортировке управляющих сигналов по времени. Однако, если время максимального запаздывания существенно больше, чем время запаздывания, подобное устройство может значительно ухудшить качество системы. Тогда можно рассмотреть возможность применения еще одного устройства - предсказателя.

Люди также интересуются этой лекцией: 3 Структуры и модели данных.

Его функция заключается в том, чтобы в случае превышения максимального времени запаздывания подать на вход регулятора сигнал не с реального устройства, а с устройства, математически эквивалентного реальному ( лучше всего его выполнить на той же управляющей ЭВМ в виде программы моделирования управляемого устройства ). В этом случае сигнал на входе будет отличаться от реального сигнала из-за помех, воздействующих на реальное устройство, и из-за неточности математической модели. Таким образом, можно выиграть в качестве управления в ущерб его точности. Из всего сказанного можно сделать вывод, что при разработке систем с запаздыванием приходится использовать сложные математические методы. Кроме того, при разработке САУ с запаздыванием можно столкнуться с эффектами, о которых при разработке САУ не подозревали.

Основную сложность при управлении объектами с помощью ЭВМ представляет обеспечение управления в жестком реальном времени. Прежде всего сложности возникают из-за того, что в общем случае время выполнения алгоритма - случайная величина. Хорошо, если удастся определить максимальное время выполнения данного алгоритма на данной ЭВМ ( сети ЭВМ ), но чаще всего это довольно сложно. Для оценивания этого времени алгоритма обычно используют математический аппарат теории  систем ( сетей ) массового обслуживания, но он дает лишь ответ, с какой вероятностью данный алгоритм на данной ЭВМ ( сети ЭВМ ) будет реализован за заданное время, а обычно требуется узнать за какое время алгоритм будет выполнен на данной ЭВМ с гарантией.

Для оптимизации времени решения задач на многопроцессорной ЭВМ или сети ЭВМ  используется теория расписаний.

Применение сетей ЭВМ позволяет не только сократить общее число задействованных ЭВМ путем оптимальной загрузки каждой из них, но и обеспечить бесперебойное функционирование системы при использовании резервирования ЭВМ и каналов при меньшем числе ЭВМ по сравнению с тем, когда каждым объектом управляла бы своя группа ЭВМ. При этом при кратности резервирования ³3 и активном резервировании можно частично отказаться от установки дорогостоящей диагностической аппаратуры на ЭВМ. Полученный многомашинный вычислительный комплекс сможет сам выявлять сбои и отказы в своих ЭВМ, а при кратности резервирования  ³4 - устранять последствия сбоев. Особенно эффективно подобные комплексы можно реализовывать при помощи транспьютеров. Но для эффективного использования сетей и многопроцессорных комплексов надо распараллеливать программы, что зачастую довольно сложно, а программное обеспечение подобных систем очень дорого.

Особо следует сказать о каналах передачи данных. При использовании выделенного канала приходится решать задачи помехозащищенности и скорости передачи данных. Кроме того, при передаче информации между ЭВМ можно сжимать данные и добавлять в них корректирующие коды, что эквивалентно повышению пропускной способности и помехозащищенности каналов. К настоящему времени эти вопросы уже разрешены  или не представляют особой сложности, кроме того, такой канал легко описывается методами ТАУ. Но в сложных системах часто используют не выделенный канал к каждому устройству, а сеть. В результате возникают такие проблемы, как гарантированное время доставки данных, усложняется расчет надежности системы.

Итак, несмотря на широкое применение ЭВМ в САУ, при разработке подобных систем появляются проблемы, которые до сих пор решены не полностью.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5139
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее