Учебно-методический сайт
Василия Щербакова
 

Нестационарные внешние воздействия

Подход к описанию нестационарных элементов рассмотрен в главе "Нестационарные и нелинейные функции".

Например, внешнее воздействие имеет вид.

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

Реализация нестационарного внешнего воздействия в Acsocad

На лист модели системы устанавливается внешнее воздействие, начальная величина внешнего воздействия "1" убирается и вместо неё записывается символьное название функции, например, "G1". В появившейся панели программирования "G1" необходимо запрограммировать на языке Си функцию, для этого в переменную 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)*(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

На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Clock". Этот блок присоединяется к блоку программирования пользовательских функций "Embedded MATLAB function" или "MATLAB Function", в котором и следует записать программный код функции.
Имеется несколько вариантов записи кода:
Реализация при помощи блока Fcn
(3)*(u<1.5) + (3-(u-1.5))*((u>=1.5)*(u<2.5)) + (2+(u-2.5))*((u>=2.5)*(u<4.5)) + (4)*(u>=4.5)

Реализация при помощи блока (Embedded) 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)*(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 от записи в Acsocad состоит в том, что тело оператора "if" необходимо завершить оператором "end;", а также в Simulink следует определить начальное значение функции, иначе компилятор выдаст ошибку.

Реализация нестационарного внешнего воздействия в 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)

 
Рейтинг@Mail.ru
Все материалы сайта принадлежат лично Василию Щербакову.
Допускается использование материалов в некоммерческих или учебных целях с указанием ссылки на этот сайт.