При оценке рекомендаций по моделированию для проекта важно понимать архитектуру модели контроллера, такую как уровни функций/подфункций, уровень спецификации, уровень управляющего потока, уровень сечения и уровень потока данных.
В этом разделе представлен общий обзор иерархического структурирования в базовой модели с использованием модели контроллера в качестве примера. Эта таблица определяет концепции слоев в иерархии.
| Концепция слоя | Назначение слоя | |
Наверх Слой | Функциональный уровень | Широкое функциональное разделение |
| Слой спецификации | Выражение времени выполнения (выборка, порядок) | |
Основание Слой | Уровень подфункции | Детальное разделение функций |
| Слой управляющего потока | Разделение в соответствии с порядком обработки (ввод → оценка → вывод и т.д.) | |
| Слой выбора | Разделение (выбор выхода с объединением) на формат, который переключает и активирует активную подсистему | |
| Уровень потока данных | Слой, выполняющий один расчет, который нельзя разделить |
При применении понятий слоев:
Концепции слоев присваиваются слоям, а подсистемы разделяются соответствующим образом.
Если концепция слоя не нужна, ее не нужно назначать слою.
Концепции нескольких слоев могут быть назначены одному слою.
При построении иерархий следует избегать разделения на подсистемы с целью экономии пространства в пределах слоя.
Методы компоновки верхнего уровня включают в себя:
Простая модель управления - представляет слой функций и слой спецификации в одном слое. Здесь функция является исполнительным блоком. Например, модель управления имеет только один цикл выборки, и все функции расположены в порядке выполнения.
Комплексная управляющая модель Тип α - слой спецификации расположен вверху. Этот метод упрощает интеграцию с кодом, но функции делятся, а читаемость модели ухудшается.
Комплексная модель управления Тип β - Функциональные слои расположены в верхней части, а уровни спецификации расположены под отдельными функциональными слоями.

При моделировании уровней функций и подфункций:
Подсистемы должны быть разделены на функции с соответствующими подсистемами, представляющими одну функцию.
Одна функция не всегда является исполнительным блоком, поэтому по этой причине соответствующая подсистема не обязательно является атомной подсистемой. В приведенном ниже примере типа β подсистема функционального уровня является виртуальной подсистемой. Алгебраические петли создаются при переходе в атомарные подсистемы.
Должны быть описаны отдельные функциональные блоки.
Если модель включает несколько больших функций, рассмотрите возможность использования привязок модели для каждой функции для секционирования модели.

При планировании уровней:
Должны быть установлены интервалы отбора проб системы и приоритет выполнения. При настройке нескольких интервалов выборки следует соблюдать осторожность. В подключенных системах с различными интервалами выборки убедитесь, что система разделена на каждый интервал выборки. Это минимизирует ОЗУ, необходимое для хранения предыдущих значений в ситуации, когда обработка значений сигналов отличается для быстрых циклов и медленных циклов.
Устанавливается ранжирование приоритета. Это важно при проектировании нескольких независимых функций. По возможности, последовательность вычислений для всех подсистем должна основываться на соединениях подсистем.
Устанавливаются два различных типа ранжирования приоритетов: один для различных интервалов отбора проб, а другой для одинаковых скоростей отбора проб.
Существует два типа методов, которые могут использоваться для установки интервалов выборки и ранжирования приоритетов:
Для подсистем и блоков задайте время выборки параметров блока и приоритет свойств блока.
При использовании условных подсистем установите независимые рейтинги приоритетов в соответствии с планировщиком.
Шаблоны существуют для множества различных условий, таких как параметры конфигурации для пользовательских интервалов выборки, настройки атомной подсистемы и использование привязок модели. Использование определенного шаблона тесно связано с методом внедрения кода и значительно различается в зависимости от статуса проекта. Модели, которые обычно затрагиваются, включают в себя:
Модели с несколькими интервалами выборки
Модели, имеющие несколько независимых функций
Использование ссылок на модели
Количество моделей (и существует ли более одного набора сгенерированного кода)
Для сгенерированного кода затронутые факторы включают в себя:
Применимость операционной системы реального времени
Непротиворечивость используемых интервалов выборки и циклов вычислений, которые должны быть внедрены
Применимая область (область применения или базовое программное обеспечение)
Тип исходного кода: AUTOSAR совместим - не совместим - не поддерживается.
В иерархии уровень управления выражает всю обработку ввода, промежуточную обработку и обработку вывода с помощью одной функции. На этом уровне важно расположение блоков и подсистем. Множественные, смешанные небольшие функции должны быть сгруппированы путем их разделения между тремя наибольшими этапами обработки входных данных, промежуточной обработки и обработки выходных данных, что составляет концептуальную основу управления. Общая конфигурация происходит близко к уровню потока данных и представлена в горизонтальной линии. Отличием уровня потока данных является его построение из множества подсистем и блоков.
В слоях потока управления горизонтальное направление указывает на обработку с различной значимостью; блоки с одинаковой значимостью расположены вертикально.

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

Управляющие слои потока могут сосуществовать с блоками, имеющими функцию. Они расположены между уровнем подфункции и уровнем потока данных. Управляющие слои потока используются в следующих случаях:
Количество блоков становится слишком большим
Все описано на уровне потока данных
Единицы, которым можно придать минимальное частичное значение, делятся на подсистемы
Размещение в иерархии упорядочивает конфигурацию внутреннего уровня и облегчает ее понимание. Это также улучшает ремонтопригодность, избегая создания ненужных слоев.
Когда модель состоит исключительно из блоков и не включает в себя смесь подсистем, если горизонтальная компоновка может быть разделена на обработку ввода/промежуточного/вывода, она считается уровнем управляющего потока.
При моделировании слоев выбора:
Слои выделения должны быть написаны вертикально или бок о бок. Нет никакого значения тому, какая ориентация выбрана.
Слои отбора должны смешиваться с слоями контрольного потока.
Если подсистема имеет функции переключения, которые позволяют запускать только одну подсистему в зависимости от потока условного управления внутри красной границы, она называется уровнем выбора. Он также описан как уровень потока управления, поскольку он структурирует обработку ввода/промежуточную обработку (условный поток управления )/обработку вывода .
В слое потока управления горизонтальное направление указывает обработку с различной значимостью. Параллельная обработка с одинаковой значимостью структурирована вертикально. В слоях выбора значение не привязывается к горизонтальному или вертикальному направлению, но они показывают слои, в которых может выполняться только одна подсистема. Например:
Переключение связанных функций на выполнение вверх или вниз, изменение хронологического порядка
Переключение настройки, в которой тип вычисления переключается после первого раза (сразу после сброса) и второго раза
Переключение между пунктом назначения A и пунктом назначения B

Уровень потока данных - это уровень ниже уровня управляющего потока и уровня выбора.
Уровень потока данных представляет одну функцию в целом; обработка ввода, промежуточная обработка и обработка вывода не разделены. Например, системы, выполняющие одно непрерывное вычисление, которое невозможно разделить.
Уровни потока данных не могут сосуществовать с подсистемами, отличными от подсистем, в которых применяются условия исключения. Условия исключения включают в себя:
Подсистемы, в которых установлены многократно используемые функции
Маскированные подсистемы, зарегистрированные в стандартной библиотеке Simulink ®
Маскированные подсистемы, зарегистрированные пользователем в библиотеке
Пример простого уровня потока данных.

Пример сложного уровня потока данных.

Когда обработка входных данных и промежуточная обработка не могут быть четко разделены, как описано выше, они представлены в виде уровня потока данных.
Уровень потока данных усложняется, когда и прямой ответ, и ответ обратной связи от одного и того же сигнала вычисляются одновременно. Даже когда количество блоков в данном типе случаев велико, создание подсистемы не должно включаться в конструкцию, когда функции не могут быть четко разделены. Когда значение присоединено через разделение, оно должно быть спроектировано как слой управляющего потока.
Запуск фактического микроконтроллера требует встраивания кода, генерируемого моделью Simulink, в микроконтроллер. Это требование влияет на конфигурацию модели Simulink и зависит от:
Степень, в которой модель Simulink будет моделировать функции
Как встраивается созданный код
Настройки расписания на встроенном микроконтроллере
На конфигурацию существенно влияет, когда задачи встроенного микроконтроллера отличаются от задач, смоделированных Simulink.
Планировщик во встроенном ПО имеет настройки для одной задачи и нескольких задач.
Параметры расписания для одной задачи
Планировщик с одним заданием выполняет всю обработку с использованием базовой выборки. Поэтому, когда требуется обработка более длинной выборки, функция разделяется так, чтобы нагрузка ЦП распределялась максимально равномерно, а затем обрабатывалась с использованием базовой выборки. Однако, поскольку равное разделение не всегда возможно, функции не могут быть присвоены всем циклам.
Например, базовая выборка составляет 2 миллисекунды, и в модели существуют частоты выборки 2 миллисекунды, 8 миллисекунд и 10 миллисекунд. Функция 8 миллисекунд выполняется один раз в каждые четыре 2 миллисекундных цикла, а функция 10 миллисекунд выполняется один раз в каждые пять. Число выполнений подсчитывается каждые 2 миллисекунды, и выполняется функция дискретизации, заданная этой частотой. Необходимо обратить внимание на то, что все 2-миллисекундные, 8-миллисекундные и 10-миллисекундные циклы вычисляются с использованием тех же 2-миллисекундных циклов. Поскольку все вычисления должны быть завершены в течение 2 миллисекунд, функции 8 миллисекунд и 10 миллисекунд разбиваются на несколько и корректируются так, чтобы все вычисления 2 миллисекунд были почти равного объема.
На следующей диаграмме показана 8-миллисекундная функция, разделенная на 4, и 10-миллисекундная функция, разделенная на 5.
| Функции | Основная частота | Смещение |
| 8millisecond | 0millisecond | |
| 2-2 | 8millisecond | 2millisecond |
| 2-3 | 8millisecond | 4millisecond |
| 2-4 | 8millisecond | 6millisecond |
| 3-1 | 10millisecond | 0millisecond |
| 3-2 | 10millisecond | 2millisecond |
| 3-3 | 10millisecond | 4millisecond |
| 3-4 | 10millisecond | 6millisecond |
| 3-5 | 10millisecond | 8millisecond |

Для установки задания с разделением по частоте:
Установите параметр конфигурации Tasking mode for periodic sample time в значение SingleTasking для настройки задачи Simulink.

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

Параметры планировщика многозадачности
Многозадачная выборка выполняется с помощью ОС реального времени, которая поддерживает многозадачную выборку. При однозадачной выборке выравнивание нагрузки ЦП не производится автоматически, но человек делит функции и распределяет их по назначенной задаче. При многозадачной выборке CPU выполняет вычисления автоматически в соответствии с текущим состоянием; нет необходимости устанавливать подробные настройки. Вычисления выполняются и результаты выводятся начиная с задачи с наивысшим приоритетом, но приоритеты задачи задаются пользователем. Как правило, быстрым задачам присваивается наивысший приоритет. Порядок выполнения для этой задачи задан пользователем.

Важно, чтобы вычисления выполнялись в рамках цикла, включая медленные задачи. Когда обработка высокоприоритетного вычисления завершается и CPU доступен, начинается вычисление для системы со следующим ранжированием приоритета. Высокоприоритетный процесс вычисления может прервать низкоприоритетное вычисление, которое затем прерывается, так что высокоприоритетный процесс вычисления может выполняться первым.
Если подсистема B с интервалом дискретизации 20 миллисекунд использует выходной сигнал подсистемы A с интервалом дискретизации 10 миллисекунд, выходной результат подсистемы A может изменяться, пока подсистема B выполняет вычисления. Если значения меняются частично, результаты вычислений подсистемы B могут быть не такими, как ожидалось. Например, сравнение производится в первом вычислении подсистемы В с выходом подсистемы А, и результат вычисляется с помощью условного определения, основанного на этом выходе. На данном этапе результат сравнения является истинным. Затем его снова сравнивают в конце подсистемы В; если выходные данные из А отличаются, то результат сравнения может быть ложным. Обычно в этом типе развития функции это может произойти, что логика, созданная с истинным, истинным, стала верной, ложной, и произведен неожиданный результат вычисления. Чтобы избежать этого типа неисправности, при изменении задачи выходные результаты подсистемы A фиксируются непосредственно перед их использованием подсистемой B, поскольку они используются в ОЗУ, отличном от того, которое используется подсистемой A выходных сигналов. Другими словами, даже если значения подсистемы А изменяются во время процесса, значения, на которые подсистема В смотрит, находятся в другом ОЗУ, поэтому эффект не виден.
Когда модель создается в Simulink и подключается подсистема с другим интервалом выборки в Simulink, Simulink автоматически резервирует требуемую оперативную память.
Однако, если входные значения получены с другим интервалом выборки посредством интеграции с кодированным вручную кодом, инженер, выполняющий работу по встраиванию, должен разработать эти настройки. Например, в концепции RTW с использованием AUTOSAR различные RAM определяются на стороне приема и экспорта.

Параметры планировщика с одним заданием
Значения сигнала одинаковы в пределах одного и того же 2-миллисекундного цикла, но при наличии других 2-миллисекундных циклов вычислительное значение отличается от предыдущего. Если функции 2-1 и 2-2 используют сигнал A функции 1, следует иметь в виду, что функции 2-1 и 2-2 используют результаты различных времен.
Параметры планировщика многозадачности
Для многозадачности нельзя указать, в какой момент использовать результат вычисления. С многозадачностью всегда храните сигналы для различных задач в новой оперативной памяти.
Перед выполнением новых вычислений в рамках задачи копируются все значения.
