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

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

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

Чтобы избежать таких накладных расходов, по умолчанию Simulink® программное обеспечение не записывает весь вектор значений данных в model.rtw. Вместо этого он запишет ключ под названием data reference, который может использоваться во время генерации кода для доступа к данным непосредственно из 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 файл, содержащий ссылки на данные, нельзя использовать изолированно для перезапуска пользовательского процесса генерации кода. Ссылки на данные в нем становятся устаревшими после завершения процесса генерации кода. Попытка запустить процесс генерации кода, используя только этот файл, может привести к непредсказуемому поведению и отказам сегментации памяти.

Похожие темы