VS
Программы
Пособия
Сейсмонитор
en
 

5. Описание параметров элементов системы

Параметры a и b передаточной функции динамического звена, коэффициент усиления K и величина внешнего воздействия G могут быть как стационарными, постоянными и не зависящими от времени протекающих процессов, так и нестационарными, изменяющимися в процессе моделирования.

Стационарные коэффициенты звеньев на структурной схеме задаются числами, а нестационарные - функциями, которые конструируются или программируются. Кроме того, у нелинейных звеньев имеются нелинейные функции НЭ, которые также конструируются.

Имеется несколько способов задания нестационарных и нелинейных функций:
1. Блочная сборка - при помощи соединения простейших блоков (алгебраические, логические) на структурной схеме.
2. Условная запись - программирование с применением оператора "if" для задания значения функции на конкретных интервалах.
3. Логическая запись - алгебраическая запись формулы в одну строку с использованием логических операций.

Необходимо отметить, что в зависимости от типа элемента, входными величинами для функции параметра элемента являются:
1. Для внешнего воздействия - время моделирования t.
2. Для усилительного звена - время моделирования t и входной сигнал звена U.
3. Для нелинейного звена - входной сигнал звена U.

Примеры описания нестационарных и нелинейных функций приведены ниже.

Пусть внешнее воздействие G1(t) имеет зависимость, представленную на рисунке 8.

Рисунок 8. Зависимость G1(t)

Тогда математически зависимость G1(t) может быть представлена следующим образом (6):
 (6)

Реализация зависимости G1(t) в программных продуктах моделирования систем может быть выполнена следующим образом.

1. Реализация в SimACS.

На лист модели системы устанавливается внешнее воздействие, начальная величина внешнего воздействия "1" убирается и вместо неё записывается символьное название функции, например, "G1". В появившейся панели программирования "G1" необходимо запрограммировать на языке Си функцию согласно (6), для этого в переменную R необходимо записать выражение с использованием переменной t и с учётом интервалов изменения функции. Имеется несколько вариантов записи кода:

а). Условная запись:
if(t<1.5) R=3;
if((t>=1.5)&&(t<2.5)) R=3-(t-1.5);

if((t>=2.5)&&(t<4.5)) R=2+(t-2.5);
if(t>=4.5) R=4;

б). Условная запись с последовательным получением результата:

R=3;
if(t>=1.5) R=3-(t-1.5);

if(t>=2.5) R=2+(t-2.5);
if(t>=4.5) R=4;

в). Логическая запись:
R=(3)*(t<1.5) + (3-(t-1.5))*((t>=1.5)*(t<2.5)) + (
2+(t-2.5))*((t>=2.5)*(t<4.5)) + (4)*(t>=4.5);

2. Реализация в MATLAB Simulink.
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Clock". Этот блок присоединяется к блоку программирования пользовательских функций "Embedded MATLAB function" или "MATLAB Function", в котором и следует записать программный код функции. Имеется несколько вариантов записи кода:

а). Условная запись:
function R = fcn(t)
R=3;
if((t>=1.5)&&(t<2.5)) R=3-(t-1.5); end;

if((t>=2.5)&&(t<4.5)) R=2+(t-2.5); end;
if(t>=4.5) R=4; end;

б). Условная запись с последовательным получением результата:

function R = fcn(t)
R=3;
if(t>=1.5) R=3-(t-1.5); end;

if(t>=2.5) R=2+(t-2.5); end;
if(t>=4.5) R=4; end;

в). Логическая запись:

function R = fcn(t)
R=(3)*(t<1.5) + (3-(t-1.5))*((t>=1.5)*(t<2.5)) + (2+(t-2.5))*((t>=2.5)*(t<4.5)) + (4)*(t>=4.5);

Отличие записи в MATLAB Simulink от записи в SimACS состоит в том, что тело оператора "if" необходимо завершить оператором "end;", а также в Simulink следует определить начальное значение функции, иначе компилятор выдаст ошибку.

3. Реализация в VisSim.
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Ramp". Этот блок присоединяется к блоку программирования пользовательских функций "expression", в котором и следует записать программный код функции в логической форме записи. Все входные параметры последовательно обозначаются через $1, $2, $3 и так далее. Тогда код в VisSim путем замены t на $1 будет иметь вид:

(3)*($1<1.5) + (3-($1-1.5))*(($1>=1.5)*($1<2.5)) + (2+($1-2.5))*(($1>=2.5)*($1<4.5)) + (4)*($1>=4.5)




Пусть коэффициент усиления K1(t) имеет зависимость, представленную на рисунке 9.

Рисунок 9. Зависимость K1(t)

Тогда математически зависимость K1(t) может быть представлена следующим образом (7):
 (7)

Реализация зависимости K1(t) в программных продуктах моделирования систем может быть выполнена следующим образом.

1. Реализация в SimACS.

На лист модели системы устанавливается усилительное звено, начальная величина коэффициента усиления "1" убирается и вместо неё записывается символьное название функции, например, "K1". В появившейся панели программирования "K1" необходимо запрограммировать на языке Си функцию согласно (7), для этого в переменную R необходимо записать выражение с использованием переменной t и с учётом интервалов изменения функции. Имеется несколько вариантов записи кода:

а). Условная запись:
if(t<1) R=3;
if((t>=1)&&(t<3)) R=1;

if(t>=3) R=5;

б). Условная запись с последовательным получением результата:

R=3;
if(t>=1) R=1;

if(t>=3) R=5;

в). Логическая запись:
R=(3)*(t<1) + (1)*((t>=1)*(t<3)) +
(5)*(t>=3);

2. Реализация в MATLAB Simulink.
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Clock". Этот блок присоединяется к блоку программирования пользовательских функций "Embedded MATLAB function" или "MATLAB Function", в котором и следует записать программный код функции, который следует умножить на входное воздействие U усилительного звена. Имеется несколько вариантов записи кода:
 
а). Условная запись:
function R = fcn(t,U)
R=3;
if((t>=1)&&(t<3)) R=1; end;
if(t>=3) R=5; end;
R = R*U;

б). Условная запись с последовательным получением результата:

function R = fcn(t,U)
R=3;
if(t>=1) R=1; end;
if(t>=3) R=5; end;
R = R*U;

в). Логическая запись:
function R = fcn(t,U)
R=((3)*(t<1) + (1)*((t>=1)*(t<3)) + (5)*(t>=3))*U;

Отличие записи в MATLAB Simulink от записи в SimACS состоит в том, что следует домножить величину нестационарный коэффициент K1 на входное воздействие звена U.

3. Реализация в VisSim.
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Ramp". Этот блок присоединяется к блоку программирования пользовательских функций "expression", который расширяется на два входных сигнала и в котором следует записать программный код функции в логической форме записи. Все входные параметры последовательно обозначаются через $1, $2, $3 и так далее. Тогда код в VisSim путем замены t на $1, а U на $2 будет иметь вид:

((3)*($1<1) + (1)*(($1>=1)*($1<3)) + (5)*($1>=3))*$2



Пусть нелинейное звено N1(U) имеет зависимость, представленную на рисунке 10.

Рисунок 10. Зависимость N1(U)

Тогда математически зависимость N1(U) может быть представлена следующим образом (8):
 (8)

Реализация зависимости N1(U) в программных продуктах моделирования систем может быть выполнена следующим образом.

1. Реализация в SimACS.
На лист модели системы устанавливается нелинейное звено, записывается символьное название функции, например, "N1". В появившейся панели программирования "N1" необходимо запрограммировать на языке Си функцию согласно (8), для этого в переменную R необходимо записать выражение с использованием входной переменной U и с учётом интервалов изменения функции. Имеется несколько вариантов записи кода:

а). Условная запись:
if(U<-1) R=-4;
if((U>=-1)&&(U<0)) R=0;

if((U>=0)&&(U<3)) R=2*U/3;
if(U>=3) R=2;

б). Условная запись с последовательным получением результата:

R=-4;
if(U>=-1) R=0;

if(U>=0) R=2*U/3;
if(U>=3) R=2;

в). Логическая запись:
R=(-4)*(U<-1) + (0)*((U>=-1)*(U<0)) + 
(2*U/3)*((U>=0)*(U<3)) + (2)*(U>=3);

2. Реализация в MATLAB Simulink.
На лист модели помещается блок программирования пользовательских функций "Embedded MATLAB function" или "MATLAB Function", в котором следует записать программный код функции относительно входного воздействия U нелинейного звена. Имеется несколько вариантов записи кода:
 
а). Условная запись:
function R = fcn(U)
R=-4;
if((U>=-1)&&(U<0)) R=0; end;

if((U>=0)&&(U<3)) R=2*U/3; end;
if(U>=3) R=2; end;

б). Условная запись с последовательным получением результата:
function R = fcn(U)
R=-4;
if(U>=-1) R=0; end;

if(U>=0) R=2*U/3; end;
if(U>=3) R=2; end;

в). Логическая запись:
function R = fcn(U)
R=(-4)*(U<-1) + (0)*((U>=-1)*(U<0)) + (2*U/3)*((U>=0)*(U<3)) + (2)*(U>=3);

3. Реализация в VisSim.
На лист модели помещается блок программирования пользовательских функций "expression", в котором следует записать программный код функции в логической форме записи. Все входные параметры последовательно обозначаются через $1, $2, $3 и так далее. Тогда код в VisSim путем замены U на $1 будет иметь вид:

(-4)*($1<-1) + (0)*(($1>=-1)*($1<0)) + (2*$1/3)*(($1>=0)*($1<3)) + (2)*($1>=3)


Подключая в программных продуктах последовательно G1, K1 и N1, будет получена модель, внешний вид которой представлен на рисунке 11 в продукте SimACS, на рисунке 12 в MATLAB Simulink и на рисунке 13 в пакете VisSim.

Рисунок 11. Модель системы в продукте SimACS


Рисунок 12. Модель системы в продукте MATLAB Simulink


Рисунок 13. Модель системы в продукте VisSim
 
Модели в SimACS, MATLAB Simulink и VisSim
Размер: 17459 байт
Скачиваний: 117
СКАЧАТЬ
Читать далее: 6. Матричная математическая модель системы
Рейтинг@Mail.ru
Все материалы сайта принадлежат лично Василию Щербакову,
а также соответствующим авторам при указании ссылки. Администрация сайта не несет никакой ответственности за стороннюю информацию. Вы можете пожаловаться на контент, если он нарушил Ваши права. Для этого свяжитесь с администрацией.
Допускается использование материалов в некоммерческих или учебных целях с указанием ссылки на этот сайт.