Программирование ошибок времени выполнения и предупреждений

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

Похожие темы