Используйте assert конструкция для реализации сообщений об ошибках во время выполнения и предупреждений для пользовательского блока. В файле компонента указывается условие, подлежащее оценке, а также выводится сообщение об ошибке в случае нарушения этого условия. При использовании пользовательского блока на основе этого файла компонента в модели это сообщение выводится в случае нарушения условия во время моделирования. Дополнительное Action атрибут assert конструкция определяет, останавливается ли моделирование при нарушении предикатного условия, продолжается ли оно с предупреждением или игнорируется.
В следующем файле компонентов реализован переменный резистор, где входной физический сигнал R выдает значение сопротивления. assert конструкция проверяет, что этот входной сигнал больше или равен нулю:
component MyVariableResistor
% Variable Resistor
% Models a linear variable resistor. The relationship between voltage V
% and current I is V=I*R where R is the numerical value presented at the
% physical signal port R. If this signal becomes negative, simulation
% errors out.
%
inputs
R = { 0.0, 'Ohm' };
end
nodes
p = foundation.electrical.electrical; % +:left
n = foundation.electrical.electrical; % -:right
end
variables
i = { 0, 'A' };
v = { 0, 'V' };
end
branches
i : p.i -> n.i;
end
equations
assert( R >= 0, 'Negative resistance is not modeled' );
v == p.v - n.v;
v == i*R;
end
end
Если модель содержит этот блок переменного резистора, и сигнал R становится отрицательным во время моделирования, моделирование прекращается, и открывается окно Диагностика моделирования (Simulation Diagnostics) с сообщением, подобным следующему:
At time 3.200000, an assertion is triggered. Negative resistance is not modeled. The assertion comes from: Block path: dc_motor1/Variable Resistor Assert location: between line: 29, column: 14 and line: 29, column: 18 in file: C:/Work/libraries/+MySimscapeLibrary/+ElectricalElements/MyVariableResistor.ssc
Сообщение об ошибке содержит следующую информацию:
Время моделирования при запуске утверждения
message строка (в этом примере Negative resistance is not modeled)
Активная ссылка на блок, вызвавший утверждение. Щелкните значок Block path для выделения блока на схеме модели.
Активная ссылка на расположение подтверждения в исходном файле компонента. Щелкните значок Assert location для открытия Simscape™ исходного файла компонента с курсором в начале условия нарушенного предиката. Для файлов, защищенных Simscape, Assert location информация опущена в сообщении об ошибке.
См. раздел assert справочная страница для описания синтаксиса и других примеров.