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