Подход к описанию нестационарных элементов рассмотрен в главе "Нестационарные и нелинейные функции".
Пусть коэффициент усиления K1(t) имеет зависимость, представленную на рисунке.
Тогда математически зависимость K1(t) может быть представлена следующим образом:
Реализация зависимости K1(t) в программных продуктах моделирования систем может быть выполнена следующим образом.
Реализация нестационарного коэффициента усиления в Acsocad
На лист модели системы устанавливается усилительное звено, начальная величина коэффициента усиления "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)*(t<1) + (1)*((t>=1)*(t<3)) + (5)*(t>=3);
Реализация нестационарного коэффициента усиления в MATLAB Simulink
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Clock". Этот блок присоединяется к блоку программирования пользовательских функций "Embedded MATLAB function" или "MATLAB Function", в котором и следует записать программный код функции, который следует умножить на входное воздействие U усилительного звена. Имеется несколько вариантов записи кода:
Реализация при помощи блока Fcn
((3)*(u<1) + (1)*((u>=1)*(u<3)) + (5)*(u>=3))*u(2)
На вход блока подается объединенный сигнал: первый сигнал u - время, второй сигнал u(2) - реальный вход усилительного звена.
Реализация при помощи блока (Embedded) MATLAB Function
а). Условная запись:
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)*(t<1) + (1)*((t>=1)*(t<3)) + (5)*(t>=3))*U;
Отличие записи в MATLAB Simulink от записи в Acsocad состоит в том, что следует умножить величину нестационарный коэффициент K1 на входное воздействие звена U.
Реализация нестационарного коэффициента усиления в VisSim
На лист модели помещается генератор линейного нарастающего сигнала, соответствующий времени моделирования t, который представлен в виде блока "Ramp". Этот блок присоединяется к блоку программирования пользовательских функций "expression", который расширяется на два входных сигнала и в котором следует записать программный код функции в логической форме записи. Все входные параметры последовательно обозначаются через $1, $2, $3 и так далее. Тогда код в VisSim путем замены t на $1, а U на $2 будет иметь вид:
((3)*($1<1) + (1)*(($1>=1)*($1<3)) + (5)*($1>=3))*$2