Реализуйте логику управления с конечным конечным автоматом
Stateflow
Конечный конечный автомат является представлением управляемой событиями (реактивной) системы. В управляемой событиями системе система реагирует на событие, осуществляя переход от одного состояния (режима) к другому. Этот переход происходит, если условием, определяющим изменение, является true.
Stateflow® график является графическим представлением конечного конечного автомата. Государства и переходные процессы формируют базовый элемент системы. Можно также представлять графикам потока без гражданства.
Например, можно использовать диаграммы Stateflow для управления физическим объектом в ответ на такие события, как датчики температуры и давления, часы и управляемые пользователем события.
Можно также использовать конечный автомат, чтобы представлять автоматическую коробку передач автомобиля. Коробка передач имеет следующие рабочие состояния: парковка, задний ход, нейтраль, привод и низкий. Когда драйвер переключается из одного положения в другое, система выполняет переход от одного состояния в другое, например, от парка к реверсу.
Диаграмма Stateflow может использовать MATLAB или C в качестве языка действий для реализации логики управления.
Port_1
- Input portКогда вы создаете входные данные на панели «Символы», Stateflow создает входные порты. Входные данные, которые вы создаете, имеют соответствующий входной порт, который появляется после создания данных.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
Port_1
- Выходной портКогда вы создаете выходные данные на панели «Символы», Stateflow создает выходные порты. Созданные выходные данные имеют соответствующий выходной порт, который появляется после создания данных.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
Параметры на вкладке Генерация Кода требуют Simulink® Coder™ или Embedded Coder®.
Show port labels
- Выберите способ отображения меток портовFromPortIcon
(по умолчанию) | FromPortBlockName
| SignalName
Выберите способ отображения меток портов на значке Chart блока.
none
Не отображать метки портов.
FromPortIcon
Если соответствующий значок порта отображает имя сигнала, отобразите имя сигнала на блоке Chart. В противном случае отобразится имя блока портов.
FromPortBlockName
Отобразите имя соответствующего блока портов на блоке Chart.
SignalName
Если имя сигнала существует, отобразите имя сигнала, соединенного с портом на блоке Chart. В противном случае отобразится имя соответствующего блока портов.
Параметр: ShowPortLabels |
Тип: Вектор символов |
Значение: 'FromPortIcon' | 'FromPortBlockName' | 'SignalName' |
По умолчанию: 'FromPortIcon' |
Read/Write permissions
- Выберите доступ к содержимому графикаReadWrite
(по умолчанию) | ReadOnly
| NoReadOrWrite
Управление доступом пользователя к содержимому графика.
ReadWrite
Включите открытие и изменение содержимого графика.
ReadOnly
Включите открытие, но не изменение графика. Если график находится в библиотеке блоков, можно создавать и открывать ссылки на график и создавать и изменять локальные копии графика, но нельзя изменять разрешения или содержимое исходного образца библиотеки.
NoReadOrWrite
Отключите открытие или изменение графика. Если график проживает в библиотеке, Вы можете создать ссылки к графику в модели, но Вы не можете открыть, изменить, разрешения изменения, или создать местные копии графика.
Параметр: Permissions |
Тип: Вектор символов |
Значение: 'ReadWrite' | 'ReadOnly' | 'NoReadOrWrite' |
По умолчанию: 'ReadWrite' |
Treat as atomic unit
- Управление выполнением подсистемы как одного модуляПри определении порядка выполнения блочных методов заставляет Simulink рассматривать график как модуль.
При определении порядка выполнения блочного метода обрабатывайте все блоки на графике как находящиеся на том же уровне иерархии модели, что и график. Эта обработка иерархии может привести к тому, что выполнение методов блоков на графике будет перемежаться с выполнением методов блоков за пределами диаграммы.
При определении порядка выполнения блочных методов обрабатывайте график как модуль. Для примера, когда Simulink нужно вычислить выход диаграммы, Simulink вызывает методы выхода всех блоков на графике, прежде чем вызывать методы выхода других блоков на том же уровне, что и блок диаграммы.
Если вы выбираете этот параметр, вы включаете параметры Minimize algebraic loop occurrences, Sample time и Function packaging. Function packaging требуется программное обеспечение Simulink Coder.
Параметр: TreatAsAtomicUnit |
Тип: Вектор символов |
Значение: 'off' | 'on' |
По умолчанию: 'off' |
Minimize algebraic loop occurrences
- Управление устранением алгебраических цикловНе пытайтесь устранить какие-либо искусственные алгебраические циклы, которые включают атомарную субдиаграмму.
Попытайтесь исключить любые искусственные алгебраические циклы, которые включают атомарную субдиаграмму.
Чтобы включить этот параметр, выберите параметр Treat as atomic unit.
Параметр: MinAlgLoopOccurrences |
Тип: Вектор символов |
Значение: 'off' | 'on' |
По умолчанию: 'off' |
Sample time
- Задайте временной интервал-1
(по умолчанию) | [Ts 0]
Укажите, должны ли все блоки на этом графике запускаться с одной скоростью или могут запускаться с различными скоростями.
Если блоки на графике могут запускаться с различными скоростями, задайте шаг расчета на графике как унаследованное (-1
).
Если все блоки должны запускаться с одной скоростью, задайте шаг расчета, соответствующее этой скорости, как значение параметра Sample time.
Если какой-либо из блоков на графике задает другой шаг расчета (кроме -1
или inf
), Simulink отображает сообщение об ошибке, когда вы обновляете или симулируете модель. Например, предположим, что все блоки на графике должны запускаться 5
раз в секунду. Чтобы гарантировать это время, задайте шаг расчета графика следующим 0.2
. В этом примере, если любой из блоков на графике задает шаг расчета, отличное от 0.2
, -1
, или inf
Simulink отображает ошибку при обновлении или симуляции модели.
-1
Задайте унаследованный шаг расчета. Если блоки на графике могут запускаться с различными скоростями, используйте этот шаг расчета.
[Ts 0]
Задайте периодические шаги расчета.
Чтобы включить этот параметр, выберите параметр Treat as atomic unit.
Параметр: SystemSampleTime |
Тип: Вектор символов |
Значение: '-1' | '[Ts 0]'
|
По умолчанию: '-1' |
Treat as grouped when propagating variant conditions
- Управление обработки подсистемы как модули on
(по умолчанию) | off
При распространении вариантов условий из блоков Variant Source или в блоки Variant Sink, Simulink обрабатывает график как модуль.
Simulink рассматривает график как модуль при распространении вариантов условий из блоков Variant Source или в блоки Variant Sink. Например, когда Simulink вычисляет условие варианта диаграммы, это условие распространяется на все блоки на графике.
Simulink рассматривает все блоки на графике как находящиеся на том же уровне иерархии модели, что и сам график, при определении их вариантного условия.
Параметр: TreatAsGroupedWhenPropagatingVariantConditions |
Тип: Вектор символов |
Значение: 'on' | 'off' |
По умолчанию: 'on' |
Function packaging
- Выберите формат кодаAuto
(по умолчанию) | Inline
| Nonreusable function
| Reusable function
Выберите формат сгенерированного кода для атомарной (невиртуальной) субдиаграммы.
Auto
Simulink Coder выбирает оптимальный формат для вашей системы на основе типа и количества образцов графика, которые существуют в модели.
Inline
Simulink Coder строит график безоговорочно.
Nonreusable function
Simulink Coder явным образом генерирует отдельную функцию в отдельном файле. Графики с этим параметром генерируют функции, которые могут иметь аргументы в зависимости от настройки параметра Function interface (Simulink). Вы можете назвать сгенерированную функцию и файл с помощью параметров Имени функции (Simulink) и File имени (без расширения) (Simulink). Эти функции не являются повторяющимися.
Reusable function
Simulink Coder генерирует функцию с аргументами, которая позволяет повторно использовать код графика, когда модель включает несколько образцы графика.
Эта опция генерирует функцию с аргументами, которая позволяет повторно использовать график код в сгенерированном коде иерархии модели-ссылки, которая включает несколько образцы графика между ссылочными моделями. В этом случае график должен находиться в библиотеке.
Когда вы хотите, чтобы несколько образцы графика были представлены как одна переиспользуемая функция, можно обозначить каждый из них как Auto
или как Reusable function
. Лучше всего использовать один, потому что использование обоих создает две переиспользуемые функции, по одной для каждого обозначения. Результаты этого выбора различаются только тогда, когда повторное использование невозможно. Выбор Auto
не позволяет управлять функцией или именем файла для кода графика.
The Reusable function
и Auto
опции определяют, существует ли несколько образцов графика, и код может быть использован повторно. Опции ведут себя по-разному, когда невозможно повторно использовать код. В этом случае Auto
приводит к inlined код, или если обстоятельства запрещают inlining, отдельные функции для каждого образца графика.
Если вы выбираете Reusable function
пока ваш сгенерированный код находится под системой контроля версий, установите File name options равным Use subsystem name
, Use function name
, или User specified
. В противном случае имена файлов кода изменяются каждый раз, когда вы изменяете модель, что препятствует системе контроля версий в файлах.
Этот параметр требует Simulink Coder.
Чтобы включить этот параметр, выберите Treat as atomic unit.
Установка этого параметра на Nonreusable function
или Reusable function
включает следующие параметры:
Function name options
File name options
Раздел памяти для инициализации/завершения функций (требует Embedded Coder и системного целевого файла на основе ERT)
Раздел памяти для функций выполнения (требует Embedded Coder и системного целевого файла на основе ERT)
Установка этого параметра на Nonreusable function
включает Function with separate data (требует лицензии для Embedded Coder и системного целевого файла на основе ERT).
Параметр: RTWSystemCode |
Тип: Вектор символов |
Значение: 'Auto' | 'Inline' | 'Nonreusable function' | 'Reusable function' |
По умолчанию: 'Auto' |
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Этот блок имеет одну архитектуру HDL по умолчанию.
Чтобы сгенерировать в HDL-коде выхода порт, показывающий активное состояние, в окне Properties графика выберите Create output for monitoring. Выходные выходы являются перечисленным типом данных. См. «Упрощение диаграмм Stateflow путем включения Выхода активного состояния».
Чтобы вставить регистр выхода, который задерживает вывод графика циклом симуляции, используйте свойство блока OutputPipeline (HDL Coder).
ConstMultiplierOptimization | Canonical signed digit (CSD) или факторизованная оптимизация CSD. Значение по умолчанию является |
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
DistributedPipelining | Распределение регистров трубопроводов или синхронизация регистров. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
InstantiateFunctions | Сгенерируйте VHDL® |
LoopOptimization | Разворачивайте, потокуйте или не оптимизируйте циклы. Значение по умолчанию является |
MapPersistentVarsToRAM | Сопоставить постоянные массивы с ОЗУ. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
ResetType | Подавьте генерацию логики сброса. Значение по умолчанию является |
SharingFactor | Количество функционально эквивалентных ресурсов для сопоставления с одним общим ресурсом. Значение по умолчанию 0. См. также раздел «Совместное использование ресурсов» (HDL Coder). |
VariablesToPipeline | Предупреждение
Вставьте регистр трубопровода в выход указанного MATLAB® переменная или переменные. Задайте список переменных в качестве вектора символов с пространствами, разделяющими переменные. |
Этот блок поддерживает генерацию кода для сложных сигналов.
Чтобы узнать об ограничениях использования графиков, смотрите Введение в Генерацию HDL-кода Stateflow (HDL Coder).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.