exponenta event banner

Ссылки на данные в model.rtw Файл

Обзор ссылок на данные

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

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

Ссылка на данные имеет формат SLData(index), где index - числовое значение, указывающее Simulink, на какие данные ссылаются. Директивы TLC, такие как GENERATE_FORMATTED_VALUE сохранять ссылки на данные в нерасширенном формате в памяти. Когда созданный код записывается на диск, значения данных расширяются до фактических значений.

Управление пороговым значением ссылки на данные

По умолчанию Simulink записывает ссылку на данные в model.rtw вместо вектора данных, длина которого составляет 10 или более. Чтобы изменить максимальную длину вектора, который может появиться буквально в файле, используйте:

set_param(0, 'RTWDataReferencesMinSize', maxlen)

Simulink заменяет вектор длиной или более maxlen со ссылкой на данные при создании model.rtw. Определить maxlen как целое число или как inf. Определение inf отключает ссылки на данные. Полный набор значений каждого вектора, каким бы длинным он ни был, появляется буквально в model.rtw и занимает текстовую память во время генерации кода.

Установка явного maxlen влияет только на текущий сеанс MATLAB ®. Чтобы задать значение для всех сеансов, включите set_param в вашей команде startup.m или автоматизировать выполнение команды при запуске MATLAB.

Развернуть ссылки на данные

Можно явным образом развернуть ссылку на данные с помощью GENERATE_FORMATTED_VALUE встроенная функция с дополнительной третьей expand аргумент. Команды, такие как FEVAL может привести к расширению ссылки на данные до полной формы.

Избегайте расширения ссылок на данные

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

Перезапустить создание кода

A model.rtw файл, содержащий ссылки на данные, нельзя использовать изолированно для перезапуска процесса создания пользовательского кода. Ссылки на данные в нем устаревают после завершения процесса создания кода. Попытка запустить процесс создания кода, используя только этот файл, может привести к непредсказуемому поведению и сбоям сегментации памяти.

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