Прежде чем вы сможете создать приложение симуляции для модели, необходимо исправить синтаксические ошибки. Выполните следующие действия, чтобы проверить MATLAB® функциональные meanstats
для синтаксических нарушений:
Откройте функцию meanstats
внутри графика в call_stats_function_stateflow
модель, которую вы создали в Программе Функции MATLAB на графике.
Редактор автоматически проверяет код вашей функции на ошибки и рекомендует коррекции.
На вкладке Apps нажмите Simulink Coder. На вкладке C Code нажмите Build.
Если ошибок или предупреждений нет, появляется окно Builder, в котором сообщается об успехе. В противном случае перечисляются ошибки. Для примера, если вы меняете имя локальной функции avg
в несуществующую локальную функцию aug
в meanstats
, ошибки появляются в Средство Просмотра.
Диагностическое сообщение содержит подробную информацию о типе ошибки и ссылку на код, в котором произошла ошибка. Диагностическое сообщение также содержит ссылку на диагностический отчет, который предоставляет ссылки на ваши функции MATLAB и информацию о типе компиляции для переменных и выражений в этих функциях. Если ваша модель не удается создать, эта информация упрощает поиск источников сообщений об ошибке и помогает понять правила распространения типов. Для получения дополнительной информации об этом отчете смотрите Отчеты о функциях MATLAB (Simulink).
В диагностическом сообщении щелкните ссылку после имени функции meanstats
чтобы отобразить строку кода, вызывающую нарушение.
Автономная линия появляется подсвеченной в редакторе.
Исправьте ошибку, изменив aug
назад к avg
и перекомпилировать. Ошибок не найдено, и компиляция успешно завершена.
Вы используете симуляцию, чтобы протестировать функции MATLAB на ошибки времени выполнения, которые не обнаруживаются Stateflow®. Когда вы симулируете модель, ваши функции MATLAB проходят диагностические тесты на отсутствующую или неопределенную информацию и возможные логические конфликты, как описано в разделе «Проверка функций MATLAB на синтаксические ошибки». Если ошибок не обнаружено, начинается симуляция вашей модели.
Выполните следующие шаги, чтобы моделировать и отлаживать meanstats
функция во время выполнения условий:
В редакторе функций кликните штрих (-
) символ в левом поле этой линии:
len = length(vals);
На поле этой линии появляется небольшой красный мяч, указывающий, что вы установили точку останова.
Запустите симуляцию для модели.
Если вы получаете какие-либо ошибки или предупреждения, внесите коррекции, прежде чем вы попытаетесь повторить симуляцию. В противном случае симуляция останавливается, когда выполнение достигает заданной точки останова. Небольшая зеленая стрела в левом поле указывает на эту паузу.
Чтобы перейти выполнение к следующей линии, выберите Step.
Заметьте, что эта линия вызывает локальную функцию avg
. Если вы выбираете Step здесь, выполнение прогрессирует после выполнения локальной функции avg
. Для отслеживания выполнения линий в локальной функции avg
вместо этого выберите Step In.
Для продвижения выполнения к первой линии вызываемой локальной функции avg
, выберите Step In.
Когда вы находитесь в локальной функции, вы можете продвигаться через одну линию за раз с помощью инструмента Step. Если локальная функция вызывает другую локальную функцию, используйте инструмент Step In, чтобы войти в нее. Чтобы продолжить оставшиеся линии локальной функции и вернуться к линии после вызова локальной функции, выберите Step Out.
Выберите Step, чтобы выполнить единственную линию в avg
.
Когда avg
завершает его выполнение, вы видите зеленую стрелу, указывающую вниз под его последней линией.
Выберите Step, чтобы вернуться к функции meanstats
.
Выполнение переходит к линии после вызова на avg
.
Отображение значения переменной len
, наведите указатель мыши на текст len
в редакторе функций не менее секунды.
Значение len
появляется рядом с указателем мыши.
Вы можете отобразить значение для любых данных в функции MATLAB таким образом, независимо от того, где оно появляется в функции. Для примера можно отобразить значения для вектора vals
путем размещения указателя на него в качестве аргумента функции length
, или как аргумент в заголовке функции.
Можно также сообщить значения данных функции MATLAB в Командном окне MATLAB во время симуляции. Когда вы достигаете точки останова, debug>>
В Командном Окне MATLAB появится командная строка (чтобы увидеть Enter). В этой подсказке можно проверить данные, определенные для функции, путем ввода имени данных, как показано в этом примере:
debug>> len len = 4 debug>>
В качестве другой альтернативы отладки можно отобразить результат выполнения линии функции, опуская оконечную точку с запятой. Если это так, результаты выполнения появляются в Командном Окне MATLAB во время симуляции.
Чтобы оставить функцию до повторного вызова и достижения точки прерывания, выберите Continue.
В любой точке функции можно продвинуться вперед через выполнение остальных линий функции с помощью инструмента Continue. Если вы находитесь в конце функции, выбор Step делает то же самое.
Щелкните точку останова, чтобы удалить ее и выберите Quit Debugging, чтобы завершить симуляцию.
В модели вычисленные значения mean
и stdev
теперь появится в блоках Display.
Чтобы управлять проверкой области значений данных, установите Simulation range checking в панели Diagnostics: Data Validity диалогового окна Параметры конфигурации модели (Model Configuration Parameters).
Чтобы задать область значений для входных и выходных данных, выполните следующие шаги:
В Model Explorer выберите функцию MATLAB вход или выход, представляющий интерес.
Диалоговое окно Свойства данных откроется на панели Dialog Model Explorer.
В диалоговом окне «Свойства данных» перейдите на вкладку General и введите предел области значений, как описано в Предел Области значений.