exponenta event banner

Проверка и изменение данных и сообщений при отладке

Пока диаграмма Stateflow ® находится в режиме отладки, можно проверить состояние диаграммы, проверив значения данных, сообщений и выражений временной логики. Можно также проверить структуру диаграммы путем изменения значений данных и отправки локальных и выходных сообщений. В этой таблице представлены интерфейсы, которые можно использовать для выполнения этих задач отладки. Дополнительные сведения см. в разделе Отладка диаграмм статусов.

Задача отладкиРедактор потока состоянийОбласть символовТочки останова и окно наблюденияОкно команд MATLAB ®
Проверка значений данных и сообщенийДаДаДаДа
Проверка выражений временной логикиДаНетНетНет
Изменение значений данных и сообщенийНетДаНетДа
Отправка сообщенийНетНетНетДа

Просмотр данных в редакторе Stateflow

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

Тип объектаИнформация всплывающей подсказки
Состояния и переходные процессыЗначения данных, сообщений и выражений временной логики, используемых объектом
Графическая таблица, таблица истинности и функции MATLABЗначения локальных данных, сообщений, входов и выходов в области действия функции

Например, точка останова на этой диаграмме приостанавливает моделирование, когда second состояние оценивает его during действия. Указание на сверхсостояние gear отображает подсказку, отображающую значения:

  • Выражения временной логики duration(speed >= up_threshold) и duration(speed <= down_threshold).

  • Данные, в том числе speed, up_threshold, и up.

Примечание

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

Просмотр и изменение данных в области символов

Пока диаграмма находится в режиме отладки, на панели Символы (Symbols) отображается значение каждого объекта данных и сообщения в диаграмме. Например, когда эта диаграмма приостанавливается в точке останова, можно увидеть значения всех данных диаграммы, перечисленных в столбце Значение. Выделенные значения изменились на последнем шаге времени.

На панели «Символы» можно изменить значение:

  • Память хранения данных, локальные и выходные данные.

  • Локальные и выходные сообщения.

Щелкните поле Значение для объекта данных или сообщения, чтобы ввести новое значение.

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

Дополнительные сведения см. в разделе Управление данными, событиями и сообщениями в области символов.

Просмотр данных в окне точек останова и наблюдения

В окне Точки останова и контроль состояния (Stateflow Breakpoints and Watch) можно просмотреть текущие данные и значения сообщений, пока моделирование приостановлено в точке останова. Чтобы открыть окно Breakpoints and Watch, на вкладке Debug щелкните Breakpoints List. Либо откройте диалоговое окно Точки останова (Breakpoints) и щелкните ссылку Список точек останова (Breakpoints List).

Отслеживание данных в контрольном списке

Окно Точки останова и Наблюдение можно использовать для:

  • Добавление объектов данных и сообщений в контрольный список.

  • Отслеживание значений, измененных с момента последнего шага времени.

  • Разверните сообщение для просмотра значений очереди сообщений и данных сообщения.

Например, можно добавить speed, up_threshold, и up в контрольный список и отслеживать их значения по мере выполнения моделирования. Выделение указывает, что значения speed и up_threshold изменено во время последнего временного шага.

Чтобы добавить объект данных или сообщения в контрольный список, откройте инспектор свойств или обозреватель моделей. Выберите данные или объект сообщения, который требуется просмотреть, и щелкните ссылку Добавить в окно просмотра.

Кроме того, в редакторе потока состояний щелкните правой кнопкой мыши состояние или переход, в котором используются данные или сообщение. Выберите Добавить в окно наблюдения и выберите имя переменной из раскрывающегося списка.

Просмотр формата

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

Удалить данные из контрольного списка

Чтобы удалить объект данных или сообщения из списка отслеживания, укажите путь к данным наблюдения и щелкните значок Удалить этот контроль, который отображается слева от имени переменной.

Сохранить и восстановить данные отслеживания

Просмотр данных продолжается во время сеанса MATLAB. При закрытии модели ее список данных наблюдения остается в окне Точки останова (Breakpoints) и Окно наблюдения (Watch Window). При повторном открытии модели во время той же сессии MATLAB список данных наблюдения для этой модели восстанавливается.

Можно сохранить точки останова и просмотреть списки данных и перезагрузить их в более позднем сеансе MATLAB. Чтобы сохранить снимок списка точек останова и данных наблюдения, в верхней части окна точек останова и наблюдения щелкните значок Сохранить текущие точки останова и наблюдения. Чтобы восстановить снимок, щелкните значок Загрузить точки останова и наблюдения.

Просмотр и изменение данных в окне команд MATLAB

Во время приостановки моделирования в точке останова в командной строке MATLAB изменяется на debug>>. По этому запросу можно проверять и изменять значения данных Stateflow, отправлять локальные и выходные сообщения и взаимодействовать с рабочей областью MATLAB.

Например, предположим, что предыдущая диаграмма достигла точки останова. Для просмотра данных, видимых в текущей области, используйте whos команда.

whos
  Name                Size            Bytes  Class       Attributes

  TWAIT               1x1                 1  uint8                 
  down                1x1                 1  logical               
  down_th             1x1                 8  double                
  down_threshold      1x1                 8  double                
  gear                1x1                 4  gearType              
  speed               1x1                 8  double                
  throttle            1x1                 8  double                
  up                  1x1                 1  logical               
  up_th               1x1                 8  double                
  up_threshold        1x1                 8  double                

Проверка значений speed и up_threshold, введите:

speed
speed =

   26.3383
up_threshold
up_threshold =

   41.3601

Изменение данных с помощью запроса отладки

По запросу отладки можно изменить значение памяти хранилища данных, локальных и выходных данных. Например, на предыдущей диаграмме можно изменить значение up_threshold, up, и gear:

up_threshold = 25;
up = true;
gear = gearType.third;
Следуйте этим правилам при изменении данных в запросе отладки.

  • Чтобы изменить векторы и матрицы, используйте синтаксис MATLAB для индексирования независимо от свойства языка действий диаграммы. См. раздел Индексирование нотации.

    Например, чтобы изменить элемент в диагонали матрицы 2 на 2 u, введите:

    u(1,1) = 6.022e23;
    u(2,2) = 6.626e-34

  • Размеры данных переменного размера можно изменять до тех пор, пока новый размер находится в пределах границ размеров, заданных для данных. Например, предположим, что v является массивом переменного размера с максимальным размером [16 16]. Изменение значения v в массив 5 на 7, введите:

    v = ones(5,7);

  • Чтобы изменить перечисляемые данные, явно укажите перечисляемый тип с помощью префиксных идентификаторов. См. раздел Нотация для перечисляемых значений.

    Например, предположим, что w имеет перечисляемый тип данных Colors. Изменение значения w к перечисляемому значению Red, введите:

    w = Colors.Red

  • Чтобы изменить числовые данные, приведите их к явному типу данных с помощью функции преобразования типа MATLAB. Явная заливка не требуется для данных типа double. См. раздел Операции литейной формы.

    Например, предположим, что x имеет тип single, y имеет тип int32, и z имеет тип fixdt(1,16,12). Для изменения значения этих объектов данных введите:

    x = single(98.6);
    y = int32(100);
    z = fi(0.5413,1,16,12);

  • Невозможно изменить значения констант, параметров или входных данных в запросе отладки.

Примечание

Изменение данных типа int64 или uint64, используйте функцию fi (Конструктор фиксированных точек) для приведения нового значения к типу фиксированных точек.

Отправка сообщений с помощью запроса отладки

По запросу отладки можно отправлять локальные и выходные сообщения. Например, на этой диаграмме локальное сообщение M определяет, какое состояние становится активным после состояния DecisionPoint. Если диаграмма получает сообщение M с положительным значением, состояние Received становится активным, и диаграмма выводит значение true. В противном случае состояние Missed становится активным, и диаграмма выводит значение false .

Начальное значение сообщения равно нулю. Чтобы изменить значение поля данных на положительное и отправить сообщение в локальную очередь, введите:

M = 5;
send(M);
При переходе к следующему шагу моделирования сообщение инициирует переход к состоянию. Received. Дополнительные сведения см. в разделе Выполнение контрольной диаграммы после точки останова.

При отправке сообщений из запроса отладки следуйте следующим правилам:

  • Для чтения или записи в поле данных действительного сообщения используйте имя объекта сообщения. Не используйте синтаксис точечных обозначений.

  • Сообщение из запроса отладки можно отправить только тогда, когда диаграмма явно отправит сообщение, вызвав send оператор.

  • Нельзя отправлять входные сообщения из запроса отладки.

Дополнительные сведения см. в разделе Активность управляющего сообщения в диаграммах потока состояний.

Доступ к рабочей области MATLAB во время отладки

В запросе отладки можно ввести другие команды MATLAB, но результаты выполняются в рабочей области Stateflow. Например, можно сохранить все переменные диаграммы в MAT-файле с помощью save функция:

save(chartVars)

Для ввода команды в базовое рабочее пространство MATLAB используйте команду evalin команда с первым аргументом 'base'. Например, чтобы перечислить переменные в рабочем пространстве MATLAB, используйте команду:

evalin('base','whos')

См. также

| | |

Связанные темы