Основы вектора DWork

Что DWork является Вектором?

Векторы DWork являются блоками памяти, которую S-функция просит, чтобы механизм Simulink® выделил каждому экземпляру S-функции в модели. Если несколько экземпляров вашей S-функции могут произойти в модели, ваша S-функция должна использовать векторы DWork вместо глобальной памяти или статического ЗУ, чтобы сохранить специфичные для экземпляра значения переменных S-функции. В противном случае ваша S-функция рискует данными о перезаписи экземпляра, необходимыми другому экземпляру, заставляя симуляцию привести к сбою или привести к неправильным результатам. Способность отслеживать несколько экземпляров S-функции называется повторной входимостью.

Можно создать S-функцию, которая повторно используема при помощи векторов DWork, которыми механизм управляет для каждого конкретного экземпляра S-функции.

Векторы DWork имеют несколько преимуществ:

  • Обеспечьте специфичное для экземпляра устройство хранения данных для переменных в блоках

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

  • Устраните статические и глобальные переменные

  • Взаимодействуйте непосредственно с механизмом Simulink, чтобы выполнить выделение памяти, инициализацию и освобождение

  • Упростите встраивание S-функции во время генерации кода

  • Обеспечьте больше управления тем, как данные появляются в сгенерированном коде

Примечание

Векторы DWork являются наиболее обобщенным и универсальным типом вектора работы и особого внимания следующих разделов на их использовании. Продукт Simulink обеспечивает дополнительные элементарные типы векторов работы, которые поддерживают с плавающей точкой, целочисленный, указатель и данные о режиме. Можно найти, что обсуждение их работает векторы в Элементарных Векторах работы.

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

  • Тип данных

  • Размер

  • Числовой тип, или действительный или комплексный

  • Имя

  • Тип использования (см. Типы Векторов DWork),

  • Идентификатор Simulink Coder™

  • Класс памяти Simulink Coder

  • Simulink Coder C вводит спецификатор

Смотрите, Как Использовать Векторы DWork в инструкциях относительно того, как установить эти свойства. Три свойства Simulink Coder принадлежат только генерации кода и не оказывают влияния в процессе моделирования.

Векторы DWork и Engine Simulink

Главным преимуществом векторов DWork является их связь с механизмом Simulink. В течение симуляции механизм уменьшает S-функцию всех задач управления памятью, связанных с векторами DWork.

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

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

Примечание

Вы не имеете никакого контроля над тем, как механизм выделяет память для векторов DWork в процессе моделирования. При использовании программного обеспечения Simulink Coder можно использовать классы памяти, чтобы настроить выделение памяти во время генерации кода. Смотрите ssSetDWorkRTWStorageClass страница с описанием для получения дополнительной информации об использовании классов памяти.

Механизм также выполняет специальные задачи на основе типа вектора DWork, используемого в S-функции. Например, это включает векторы DWork, которые хранят информацию дискретного состояния в векторе состояния всей модели, и делает их доступными во время логгирования состояния.

Векторы DWork и продукт Simulink Coder

Векторы DWork позволяют вам настраивать, как данные появляются в сгенерированном коде. Когда код сгенерирован, генератор кода Simulink Coder включает вектор DWork в структуру данных для модели. Вектор DWork управляет именем поля, используемым в структуре. Векторы DWork также управляют классом памяти и спецификатором типа C, используемым в сгенерированном коде. Смотрите sfun_rtwdwork.c для примера.