Используйте assert
создайте для реализации ошибок времени выполнения и предупреждающих сообщений для пользовательского блока. В файле компонента указывается условие, которое должно быть оценено, а также сообщение об ошибке, выводимое в случае нарушения этого условия. Когда пользовательский блок, основанный на этом файле компонента, используется в модели, он выводит это сообщение, если условие нарушено во время симуляции. Необязательный Action
атрибут assert
конструкция определяет, останавливается ли симуляция, когда условие предиката нарушено, продолжает с предупреждением или игнорирует нарушение.
В следующем файле компонента реализован переменный резистор, где входной физический сигнал R подает значение сопротивления. The 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
Сообщение об ошибке содержит следующую информацию:
Время симуляции, когда приведение в действие
The message
строка (в этом примере Negative resistance is not modeled
)
Активная ссылка на блок, который инициировал проверку типа «assertion». Нажмите на Block path
ссылка для подсветки блока в диаграмме модели.
Активная ссылка на расположение assert в исходном файле компонента. Нажмите на Assert location
ссылка для открытия Simscape™ исходного файла компонента с помощью курсора в начале нарушения условия предиката. Для файлов, защищенных Simscape, Assert location
информация опускается из сообщения об ошибке.
Смотрите assert
страница с описанием для синтаксических спецификаций и других примеров.