Программирование в продуктах моделирования позволяет встроить в систему алгоритм расчета значений выходного сигнала, реализация которого при помощи стандартных блоков существенно затруднена или невозможна вовсе.
Программирование позволяет реализовать нестационарные внешние воздействия, нестационарные коэффициенты усиления, а также нелинейные функции. В программном продукте моделирования используется либо стандартный язык программирования, либо применяется собственная разработка.
Программирование - написание кода в Acsocad
Языком программирования в продукте Acsocad является язык Си (C). Важным преимуществом программного продукта является то, что запрограммировать возможно практически любой параметр элемента без необходимости разбиения элемента на составные части.
Для этого в поле для ввода коэффициентов:
-записывается короткое математическое выражение
-ставится знак # и записывается символьное название функции, которое не должно начинаться с цифры, знака минус или точки. Других ограничений не накладывается. После указания коэффициента как функции, в нижней панели появится вкладка с соответствующей функцией.
Входные параметры процедуры:
t – текущее время моделирования, в секундах.
U – значение входного воздействия звена (для одномерных звеньев);
Up – предыдущее значение входного воздействия звена (для одномерных звеньев);
Up2 – предпредыдущее значение входного воздействия звена (для одномерных звеньев);
u[] - массив входных воздействий, нумерация осуществляется с нуля;
up[] - массив предыдущих значений входных воздействий;
up2[] - массив предпредыдущих значений входных воздействий.
Выходные параметры процедуры:
R – переменная для хранения результата выполнения процедуры;
Rp - предыдущее значение выходного сигнала;
Rp2 - предпредыдущее значение выходного сигнала.
Математические функции:
sin (X); cos (X); tan (X); sinh (X); cosh (X); tanh (X); asin (X); acos (X); atan (X); atan2 (X, Y); exp (X); log (X); log10 (X); pow (X, Y); sqrt (X); ceil (X); floor (X); fabs (X); sign(X); и другие.
Основы программирования на языке Си рассматриваются в соответствующей литературе.
Для наглядности в программе Acsocad имеется кнопка предпросмотра созданной функции, которая заменяет внешнее воздействие, коэффициент усиления или нелинейное звено на блок с изображением графической зависимости созданной функции.
Пример создания нестационарного внешнего воздействия в Acsocad. На схеме размещается элемент "Внешнее воздействие", вместо значения записывается "#G" (1), в нижней части окна на вкладке #G (2) записывается программный код (3). После этого при необходимости вместо текстового значения "#G" графически представляется сама функция в соответствии с кодом путем нажатия на кнопку "Предпросмотр функции" (4).
Видео-пример создания нестационарного внешнего воздействия в Acsocad.
Пример создания нестационарного коэффициента усиления в Acsocad.
Видео-пример создания нестационарного коэффициента усиления в Acsocad.
Примечание: На выходе формируется сигнал, равный 1*t до 1 секунды и 3*t после 1 секунды.
Пример создания нелинейной функции в Acsocad.
Видео-пример создания нелинейной функции в Acsocad.
Примечание: На выходе формируется сигнал, равный 1 при входном воздействии 1, сигнал 1*sin(t) при входной синусоиде с амплитудой 1 и ограниченный по амплитуде, равной 1, сигнал при входной синусоиде 2*sin(t).
Программирование - написание кода в MATLAB Simulink
Языком программирования в продукте MATLAB Simulink является собственный язык MATLAB. Программирование осуществляется посредством размещения блока "(Embedded) MATLAB Function" или "Fcn" с последующим внесением кода.
Реализация при помощи блока "Fcn"
Важным преимуществом "Fcn" является отсутствие необходимости компилирования кода, однако выполняемое преобразование должно быть компактным и умещаться в одно действие.
Видео-пример создания нестационарного внешнего воздействия при помощи блока "Fcn" в MATLAB Simulink.
Видео-пример создания нестационарного коэффициента усиления при помощи блока "Fcn" в MATLAB Simulink.
Видео-пример создания нелинейной функции при помощи блока "Fcn" в MATLAB Simulink.
Реализация при помощи блока "MATLAB Function"
Важным преимуществом "MATLAB Function" является возможность программирования сложных вычислительных процедур.
Видео-пример создания нестационарного внешнего воздействия при помощи блока "MATLAB Function" в MATLAB Simulink.
Видео-пример создания нестационарного коэффициента усиления при помощи блока "MATLAB Function" в MATLAB Simulink.
Видео-пример создания нелинейной функции при помощи блока "MATLAB Function" в MATLAB Simulink.