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

Нелинейные функции

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

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

Реализация нелинейных функций в Acsocad

На лист модели системы устанавливается нелинейное звено, записывается символьное название функции, например, "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)*(U<-1) + (0)*((U>=-1)*(U<0)) + (2*U/3)*((U>=0)*(U<3)) + (2)*(U>=3);

Реализация нелинейных функций в MATLAB Simulink

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

Реализация при помощи блока (Embedded) MATLAB Function
а). Условная запись:
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)*(U<-1) + (0)*((U>=-1)*(U<0)) + (2*U/3)*((U>=0)*(U<3)) + (2)*(U>=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)

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