Программа настроила ошибки времени выполнения и предупреждения
assert (
predicate_condition
, message
,
Action);
equations
раздел может содержать assert
создайте, который позволяет вам задать настроенные ошибки времени выполнения и предупреждения:
assert (
predicate_condition
, message
,
Action);
predicate_condition | Выражение, которое будет оценено во время выполнения. Это может быть функция времени, входных параметров, параметров и переменных. |
message | Дополнительная текстовая строка (с одинарными кавычками), который говорит пользователю блока, почему ошибка времени выполнения или предупреждение инициированы. |
Action | Дополнительный атрибут, который задает ли инициирование утверждать результаты в предупреждении или ошибке в процессе моделирования. Действие по умолчанию является ошибкой. |
Action
атрибут позволяет вам задать утверждать действие на основе перечислимого значения параметров. Встроенное перечисление simscape.enum.assert.action
позволяет три возможных действия, когда утверждение инициировано: error
, warn
, и none
. Можно ввести перечисляемое значение непосредственно к Action
атрибут:
assert(u > 0, Action = simscape.enum.assert.action.warn)
или создайте перечислимый параметр и позвольте контролю за работой пользователей блока утверждать действие:
parameters assert_action = simscape.enum.assert.action.warn end equations assert(u > 0, Action = assert_action) end
Можно использовать assert
создайте в:
Уравнения верхнего уровня, включая начальные уравнения.
if-elseif-else
ветви условного выражения.
Пункт выражения и правая сторона пункта объявления let
выражение.
Когда вы используете assert
создайте в ветви условного выражения, это не считается к количеству выражений в ветви и поэтому освобождено от общего правила, что общее количество выражений уравнения, их размерности и их порядка должно быть тем же самым для каждой ветви if-elseif-else
оператор. Например, следующее допустимо:
if x>1 y == 1; else assert(b > 0); y == 3; end
Осциллограф assert
построение задано осциллографом его ветви. В предыдущем примере, условие предиката b > 0
оценен только когда else
ветвь в действительности, то есть, когда x
меньше чем или равно 1.
Когда вы включаете assert
построения в начальных уравнениях, их условия предиката проверяются только однажды после решения для начальных условий (прежде чем запуск симуляции, смотрите Расчет Начальных условий). Используйте эти утверждения, чтобы охранять против инициализации модели с нефизическими значениями.
Сгенерируйте ошибку времени выполнения, если объем жидкости в резервуаре становится отрицательным:
assert( V >= 0, 'Insufficient fluid volume for proper operation' );
В процессе моделирования, если внутренняя переменная V (соответствие объему жидкости в резервуаре) принимает отрицательную величину, остановки симуляции и выводит сообщение об ошибке, содержащее следующую информацию:
Время симуляции, когда утверждение было инициировано
message
строка (в этом примере, Insufficient fluid volume for proper operation
)
Активная ссылка на блок, который инициировал утверждение. Нажмите Block path
соединитесь, чтобы подсветить блок в диаграмме модели.
Активная ссылка на утверждать местоположение в исходном файле компонента. Нажмите Assert location
соединитесь, чтобы открыть исходный файл Simscape™ компонента с курсором в начале нарушенного условия предиката. Поскольку Simscape защитил файлы, Assert location
информация не использована из сообщения об ошибке.
Если вы не хотите, чтобы симуляция остановила, но все еще хотела вывести предупреждение, что определенное условие было нарушено, установил Action
припишите simscape.enum.assert.action.warn
. Например, если гидравлические перепады давления ниже уровня давления насыщения пара в какой-то момент, это условие может привести к кавитации и делать недействительным предположения моделирования, используемые в блоке. Можно добавить следующий assert
создайте к гидравлическим уравнениям компонента:
assert( p > p_cav, 'Pressure is below vapor level; cavitation possible', Action = simscape.enum.assert.action.warn);
В этом случае, если условие предиката нарушено, симуляция продолжается, но выводит предупреждающее сообщение. Формат предупреждающего сообщения эквивалентен сообщения об ошибке, описанного в предыдущем примере.
Предупреждающее сообщение появляется однажды на первом временном шаге, когда условие предиката нарушено. В этом примере предупреждающее сообщение появляется на первом временном шаге когда перепады давления ниже уровня пара. Пока давление остается ниже того уровня, сообщение не повторяется на последующих временных шагах. Однако в то время как симуляция продолжается, если давление повышает выше уровня насыщенности пара и с другой стороны опускается ниже того уровня, утверждение повторно активировано, и предупреждающее сообщение появляется еще раз.
Если вы хотите позволить контролю за работой пользователей блока действие после инициирования утверждения, создать перечислимый параметр и установить Action
припишите, чтобы быть основанными на значении этого параметра.
Например, в блоке Stepper Motor, можно позволить пользователю блока выбрать желаемое действие, когда двигатель уменьшается. Объявите, что параметр управления, на основе встроенного утверждают перечисление действия и добавляют следующий assert
создайте к уравнениям компонента:
parameters assert_action = simscape.enum.assert.action.warn % Action on slipping end equations assert(slipping<1,'Stepper motor slip',Action = assert_action) end
В этом случае действие по умолчанию является также предупреждением времени выполнения, как в предыдущем примере. Однако диалоговое окно блока содержит перечислимый параметр, Action on slipping, с тремя возможными значениями: error
, warn
'none'
. Этот параметр позволяет пользователю блока решить, должна ли симуляция остановиться с ошибкой, продолжить предупреждение или проигнорировать моторные промахи полностью.