Отладка функции MATLAB в графике

Проверьте функции MATLAB на синтаксические ошибки

Прежде чем вы сможете создать приложение симуляции для модели, необходимо исправить синтаксические ошибки. Выполните следующие действия, чтобы проверить MATLAB® функциональные meanstats для синтаксических нарушений:

  1. Откройте функцию meanstats внутри графика в call_stats_function_stateflow модель, которую вы создали в Программе Функции MATLAB на графике.

    Редактор автоматически проверяет код вашей функции на ошибки и рекомендует коррекции.

  2. На вкладке Apps нажмите Simulink Coder. На вкладке C Code нажмите Build.

    Если ошибок или предупреждений нет, появляется окно Builder, в котором сообщается об успехе. В противном случае перечисляются ошибки. Для примера, если вы меняете имя локальной функции avg в несуществующую локальную функцию aug в meanstats, ошибки появляются в Средство Просмотра.

  3. Диагностическое сообщение содержит подробную информацию о типе ошибки и ссылку на код, в котором произошла ошибка. Диагностическое сообщение также содержит ссылку на диагностический отчет, который предоставляет ссылки на ваши функции MATLAB и информацию о типе компиляции для переменных и выражений в этих функциях. Если ваша модель не удается создать, эта информация упрощает поиск источников сообщений об ошибке и помогает понять правила распространения типов. Для получения дополнительной информации об этом отчете смотрите Отчеты о функциях MATLAB (Simulink).

  4. В диагностическом сообщении щелкните ссылку после имени функции meanstats чтобы отобразить строку кода, вызывающую нарушение.

    Автономная линия появляется подсвеченной в редакторе.

  5. Исправьте ошибку, изменив aug назад к avg и перекомпилировать. Ошибок не найдено, и компиляция успешно завершена.

Отладка во время выполнения для функций MATLAB в графиках

Вы используете симуляцию, чтобы протестировать функции MATLAB на ошибки времени выполнения, которые не обнаруживаются Stateflow®. Когда вы симулируете модель, ваши функции MATLAB проходят диагностические тесты на отсутствующую или неопределенную информацию и возможные логические конфликты, как описано в разделе «Проверка функций MATLAB на синтаксические ошибки». Если ошибок не обнаружено, начинается симуляция вашей модели.

Выполните следующие шаги, чтобы моделировать и отлаживать meanstats функция во время выполнения условий:

  1. В редакторе функций кликните штрих (-) символ в левом поле этой линии:

    len = length(vals);

    На поле этой линии появляется небольшой красный мяч, указывающий, что вы установили точку останова.

  2. Запустите симуляцию для модели.

    Если вы получаете какие-либо ошибки или предупреждения, внесите коррекции, прежде чем вы попытаетесь повторить симуляцию. В противном случае симуляция останавливается, когда выполнение достигает заданной точки останова. Небольшая зеленая стрела в левом поле указывает на эту паузу.

  3. Чтобы перейти выполнение к следующей линии, выберите Step.

    Заметьте, что эта линия вызывает локальную функцию avg. Если вы выбираете Step здесь, выполнение прогрессирует после выполнения локальной функции avg. Для отслеживания выполнения линий в локальной функции avgвместо этого выберите Step In.

  4. Для продвижения выполнения к первой линии вызываемой локальной функции avg, выберите Step In.

    Когда вы находитесь в локальной функции, вы можете продвигаться через одну линию за раз с помощью инструмента Step. Если локальная функция вызывает другую локальную функцию, используйте инструмент Step In, чтобы войти в нее. Чтобы продолжить оставшиеся линии локальной функции и вернуться к линии после вызова локальной функции, выберите Step Out.

  5. Выберите Step, чтобы выполнить единственную линию в avg.

    Когда avg завершает его выполнение, вы видите зеленую стрелу, указывающую вниз под его последней линией.

  6. Выберите Step, чтобы вернуться к функции meanstats.

    Выполнение переходит к линии после вызова на avg.

  7. Отображение значения переменной len, наведите указатель мыши на текст len в редакторе функций не менее секунды.

    Значение len появляется рядом с указателем мыши.

    Вы можете отобразить значение для любых данных в функции MATLAB таким образом, независимо от того, где оно появляется в функции. Для примера можно отобразить значения для вектора vals путем размещения указателя на него в качестве аргумента функции length, или как аргумент в заголовке функции.

    Можно также сообщить значения данных функции MATLAB в Командном окне MATLAB во время симуляции. Когда вы достигаете точки останова, debug>> В Командном Окне MATLAB появится командная строка (чтобы увидеть Enter). В этой подсказке можно проверить данные, определенные для функции, путем ввода имени данных, как показано в этом примере:

    debug>> len
    len =
         4
    debug>>
    

    В качестве другой альтернативы отладки можно отобразить результат выполнения линии функции, опуская оконечную точку с запятой. Если это так, результаты выполнения появляются в Командном Окне MATLAB во время симуляции.

  8. Чтобы оставить функцию до повторного вызова и достижения точки прерывания, выберите Continue.

    В любой точке функции можно продвинуться вперед через выполнение остальных линий функции с помощью инструмента Continue. Если вы находитесь в конце функции, выбор Step делает то же самое.

  9. Щелкните точку останова, чтобы удалить ее и выберите Quit Debugging, чтобы завершить симуляцию.

    В модели вычисленные значения mean и stdev теперь появится в блоках Display.

Проверяйте на нарушения области значений данных

Чтобы управлять проверкой области значений данных, установите Simulation range checking в панели Diagnostics: Data Validity диалогового окна Параметры конфигурации модели (Model Configuration Parameters).

Задайте область значений

Чтобы задать область значений для входных и выходных данных, выполните следующие шаги:

  1. В Model Explorer выберите функцию MATLAB вход или выход, представляющий интерес.

    Диалоговое окно Свойства данных откроется на панели Dialog Model Explorer.

  2. В диалоговом окне «Свойства данных» перейдите на вкладку General и введите предел области значений, как описано в Предел Области значений.

Для просмотра документации необходимо авторизоваться на сайте