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

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

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

Чтобы избежать таких издержек, по умолчанию программное обеспечение 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 могут вызвать значительную текстовую память наверху во время процесса генерации кода. Во время наиболее распространенных задач генерации кода является ненужным иметь расширенный вектор данных в памяти и заплатить цену дополнительных издержек. Избегайте расширенных векторов данных, если никакая альтернатива не существует.

Перезапустите генерацию кода

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

Похожие темы