Используйте 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
Если модель содержит этот блок Variable Resistor, и сигнал 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 страница с описанием для специфических особенностей синтаксиса и большего количества примеров.