Отладьте функцию 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 Over.

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

  4. Усовершенствовать выполнение к первой линии вызванной локальной функции avg, выберите Step In.

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

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

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

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

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

    Значение len кажется смежным с указателем.

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

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

    debug>> len
    len =
         4
    debug>>
    

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

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

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

  9. Кликните по точке останова, чтобы удалить его и нажать Stop, чтобы завершить симуляцию.

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

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

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

Укажите диапазон

Чтобы указать диапазон для входных и выходных данных, выполните эти шаги:

  1. В Model Explorer выберите ввод или вывод функции MATLAB интереса.

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

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