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