Реализуйте управляющую логику с конечным автоматом
Stateflow
Конечный автомат является представлением событийно-управляемой (реактивной) системы. В событийно-управляемой системе система отвечает на событие путем создания перехода от одного состояния (режим) другому. Этот переход происходит, если условие, задающее изменение, верно.
График Stateflow® является графическим представлением конечного автомата. Состояния и переходы формируют базовые элементы системы. Можно также представлять блок-схемы не сохраняющие состояние.
Например, можно использовать диаграммы Stateflow, чтобы управлять физическим объектом в ответ на события, такие как датчики температуры и давления, часы и управляемые пользователями события.
Можно также использовать конечный автомат, чтобы представлять автоматическую коробку передач автомобиля. Передача имеет эти операционные состояния: припаркуйте, инвертируйте, нейтральный, диск, и низко. Когда драйвер переключает от одного положения до другого, система делает переход от одного состояния до другого, например, от парка, чтобы инвертировать.
Диаграмма Stateflow может использовать MATLAB или C как язык действия, чтобы реализовать управляющую логику.
Эта блок-схема представляет машину на сборочном конвейере, который кормит сырьем другие части линии. Это содержит график, Feeder
, с MATLAB как язык действия.
Чтобы открыть график, дважды кликните Feeder
блокируйтесь в модели.
Для примера на этой модели см. Модель Фидер Сборочного конвейера.
Port_1
— Input portКогда вы создаете входные данные в окне Symbols, Stateflow создает входные порты. Входные данные, которые вы создаете, имеют соответствующий входной порт, который появляется, если вы создаете данные.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
| enumerated
| bus
Port_1
— Выходной портКогда вы создаете выходные данные в окне Symbols, Stateflow создает выходные порты. Выходные данные, которые вы создаете, имеют соответствующий выходной порт, который появляется, если вы создаете данные.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
| enumerated
| bus
Параметры на вкладке Code Generation требуют 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
— Задайте временной интервал
(значение по умолчанию) | [Ts 0]
Задайте, должны ли все блоки в этом графике запуститься на том же уровне или могут запуститься на различных уровнях.
Если блоки в графике могут запуститься на различных уровнях, задайте шаг расчета графика, как наследовано (-1
).
Если все блоки должны запуститься на том же уровне, задайте шаг расчета, соответствующий этому уровню как значение параметра Sample time.
Если какой-либо из блоков в графике задает различный шаг расчета (кроме -1
или inf
), Simulink отображает сообщение об ошибке, когда вы обновляете или симулируете модель. Например, предположите, что все блоки в графике должны запустить 5
времена секунда. Чтобы убедиться на этот раз, задайте шаг расчета графика как 0.2
. В этом примере, если какой-либо из блоков в графике задает шаг расчета кроме 0.2
, -1, или
inf
, Simulink отображает ошибку, когда вы обновляете или симулируете модель.
Определение наследованной частоты дискретизации. Если блоки в графике могут запуститься на различных уровнях, используйте этот шаг расчета.
[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 (Simulink) установка параметра. Можно назвать сгенерированную функцию и файл с помощью Имени функции параметров (Simulink) и Имя файла (никакое расширение) (Simulink). Эти функции не повторно используемы.
Reusable function
Simulink Coder генерирует функцию с аргументами, которая позволяет повторное использование кода графика, когда модель включает несколько экземпляров графика.
Эта опция генерирует функцию с аргументами, которая позволяет коду графика быть снова использованным в сгенерированном коде иерархии модели - ссылки, которая включает несколько экземпляров графика через модели, на которые ссылаются. В этом случае график должен быть в библиотеке.
Когда это необходимо, несколько экземпляров графика представляли как одна допускающая повторное использование функция, можно определять каждого из них как Auto
или как Reusable function
. Лучше использовать тот, потому что использование обоих создает две допускающих повторное использование функции, один для каждого обозначения. Результаты этого выбора отличаются только, когда повторное использование не возможно. Выбор Auto
не допускает управление функции или имени файла для кода графика.
Reusable function
и Auto
опции и определяют, существуют ли несколько экземпляров графика и код, может быть снова использован. Опции ведут себя по-другому, когда невозможно снова использовать код. В этом случае, Auto
урожаи встроили код, или если обстоятельства запрещают встраивание, отдельные функции для каждого экземпляра графика.
Если вы выбираете 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
Раздел Memory для инициализирует/отключает функции (требует Embedded Coder и основанного на ERT системного конечного файла),
Раздел Memory для функций выполнения (требует 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-коде, который показывает активное состояние, выберите Create output port for monitoring в Окне свойств графика. Выход является перечислимым типом данных. Смотрите Упрощают диаграммы Stateflow путем Слияния Активного Выхода состояния.
Чтобы вставить выходной регистр, который задерживает график, выведенный циклом симуляции, используйте свойство блока OutputPipeline (HDL Coder).
ConstMultiplierOptimization | Каноническая цифра со знаком (CSD) или учтенная оптимизация CSD. Значением по умолчанию является |
ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
DistributedPipelining | Конвейерно обработайте распределение регистра или повторную синхронизацию регистра. Значением по умолчанию является |
InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
InstantiateFunctions | Сгенерируйте VHDL® |
LoopOptimization | Разверните, передайте потоком или не оптимизируйте циклы. Значением по умолчанию является |
MapPersistentVarsToRAM | Сопоставьте персистентные массивы с RAM. Значением по умолчанию является |
OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
ResetType | Подавите генерацию логики сброса. Значением по умолчанию является |
SharingFactor | Количество функционально эквивалентных ресурсов, чтобы сопоставить с одним совместно используемым ресурсом. Значением по умолчанию является 0. См. также Разделение ресурсов (HDL Coder). |
UseMatrixTypesInHDL | Сгенерируйте 2D матрицы в HDL-коде. Значением по умолчанию является |
VariablesToPipeline | Предупреждение
Вставьте конвейерный регистр при выходе заданной переменной MATLAB® или переменных. Задайте список переменных как вектор символов с пробелами, разделяющими переменные. |
Этот блок поддерживает генерацию кода для комплексных сигналов.
Чтобы узнать об ограничениях использования графиков, смотрите Введение в генерацию HDL-кода Stateflow (HDL Coder).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.