SimulinkRealTime.fileScope

Данные временного интервала записи по файловой системе целевого компьютера

Описание

Средства управления и свойства доступов осциллографов файла.

Осциллограф получает блок данных от ядра и хранит данные в файле в файловой системе целевого компьютера. В зависимости от установки WriteMode размер файла или постоянно не обновляется. Можно передать данные другому компьютеру для исследования или графического вывода.

Параметр NumSamples работает с установкой авторестарта.

  • Авторестарт включен — Когда осциллограф инициировал, осциллограф начинает собирать данные в буфер памяти. Фоновая задача исследует буфер и записывает данные к диску постоянно, добавляя новые данные в конец файла. Когда осциллограф достигает количества выборок, которые вы задали, это начинает собирать данные снова, перезаписывая буфер памяти. Если фоновая задача не может идти в ногу со сбором данных, данные могут быть потеряны.

  • Авторестарт прочь — Когда осциллограф инициировал, осциллограф начинает собирать данные в буфер памяти. Это останавливается, когда это собрало количество выборок, которые вы задали. Фоновая задача исследует буфер и записывает данные к диску постоянно, добавляя новые данные в конец файла.

Следующие ограничения существуют:

  • У вас может быть самое большее 128 файлов, открытых на целевом компьютере одновременно.

  • Самый большой один файл, который можно создать на целевом компьютере, составляет 4 Гбайт.

  • Полностью определенное имя папки может иметь максимум 248 символов, включая букву диска, двоеточие и наклонную черту влево.

  • Полностью определенное имя файла в операционной системе на целевом компьютере может иметь максимум 260 символов. Если имя файла более длительно, чем формат "восемь точек три" (восемь символьных имен файла, точка, три символьных расширения), операционная система представляет имя файла в усеченной форме (например, шесть символов, сопровождаемых '~1'). Команды MATLAB могут получить доступ к файлу с помощью полностью определенного имени файла или усеченного представления имени. Некоторые параметры блоков, такие как блок Scope параметр filename, требуют 8,3 форматов для имени файла.

  • Не записывайте данные к папке private на вашем целевом компьютере. Это резервируется для внутреннего пользования Simulink® Real-Time™.

Прежде чем вы рассмотрите использование Файла В реальном времени Осциллографы, которые могли произвести файл, больше, чем 2 Гбайт, использовать любой из этих подходов:

  • Вместо Осциллографа Файла используйте Инспектора Данных моделирования в буферизированном режиме для регистрации данных.

  • При использовании Осциллографа Файла используйте DynamicFileName, включил опцию и установил MaxWriteFileSize меньше чем на 2 Гбайт.

Следующие лексические правила существуют:

  • Имена функций являются чувствительными к регистру. Введите целое имя.

  • Имена свойства не являются чувствительными к регистру. Вы не должны вводить целое имя, пока символы, которые вы вводите, уникальны для свойства.

Можно вызвать некоторые свойства объектов осциллографа и функции из командной строки целевого компьютера, когда вы загрузили приложение реального времени.

Создание

addscope

Свойства

развернуть все

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

Получить значение читаемого свойства объекта осциллографа от объекта scope:

scope_object = getscope(target_object, scope_number);
value = scope_object.scope_object_property

Получить Decimation осциллографа 3:

scope_object = getscope(tg, 3);
value = scope_object.Decimation

Устанавливать значение перезаписываемого свойства scope от объекта scope:

scope_object = getscope(target_object, scope_number);
scope_object.scope_object_property = new_value

Установить Decimation осциллографа 3:

scope_object = getscope(tg, 3);
scope_object.Decimation = 10

Не все свойства перезаписываемы пользователем. Например, после того, как вы создаете осциллограф, свойство Type не перезаписываемо.

Свойства осциллографа файла

Возможные значения:

  • 'on' — Осциллограф собирает данные до NumSamples, и затем запускается снова, добавляя новые данные в конец файла данных сигнала.

  • 'off' Осциллограф собирает данные до NumSamples, и затем останавливается.

Если именованный файл данных сигнала существует, когда вы запускаете приложение реального времени, программное обеспечение перезаписывает старые данные с новыми данными сигнала.

Чтобы использовать свойство DynamicFileName, установите AutoRestart на 'on'.

Позволяет осциллографу файла создать несколько файлов журнала динамически.

Чтобы использовать свойство DynamicFileName, установите AutoRestart на 'on'.

Сконфигурируйте Filename, чтобы создать инкрементно пронумерованные имена файлов для нескольких файлов журнала. Если вы не конфигурируете Filename как требуется, программное обеспечение генерирует ошибку, когда вы пытаетесь запустить осциллограф.

Можно включить создание до 99 999 999 файлов (<%%%%%%%%>.dat). Длина имени файла, включая спецификатор, не может превысить восемь символов.

Обеспечьте имя для файла, который содержит данные сигнала. Для осциллографов файла, которые вы создаете через интерфейс MATLAB®, никакое имя первоначально не присвоено FileName. После того, как вы запускаете осциллограф, программное обеспечение присваивает имя для файла, который должен получить данные сигнала. Это имя обычно состоит из имени объекта осциллографа, ScopeId и начинающихся букв от первого сигнала, добавленного к осциллографу.

Если вы устанавливаете DynamicFileName и AutoRestart к 'on', конфигурируете Filename, чтобы постепенно увеличиться динамически. Используйте основное имя файла, подчеркивание (_) и спецификатор < >. В спецификаторе введите один - восемь символов %. Каждый символ % представляет десятичное местоположение в имени файла. Спецификатор может появиться где угодно в имени файла. Например, следующее значение для Filename, C:\work\file_<%%%>.dat создает имена файлов со следующим шаблоном:

file_001.dat
file_002.dat
file_003.dat

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

Обеспечьте максимальный размер Filename в байтах. Это значение должно быть кратным WriteSize.

Когда размер файла журнала достигает MaxWriteFileSize, программное обеспечение постепенно увеличивает номер в имени файла и данных логов к новому файлу. Данные логов программного обеспечения к последовательным файлам, пока это не заполняет файл с самым высоким номером документа, который вы задали. Если программное обеспечение не может создать дополнительные файлы журнала, оно перезаписывает первый файл журнала.

Задайте, когда запись таблицы размещения файлов (FAT) будет обновлена. Оба режима 'Lazy' и 'Commit' пишут данные сигнала в файл. С режимом 'Commit' каждая операция записи файла одновременно обновляет запись FAT для файла.

Режим 'Commit' медленнее, чем режим 'Lazy'. Файловая система поддерживает фактический размер файла. С режимом 'Lazy' запись FAT обновляется только, когда файл закрывается а не во время каждой операции записи файла. Если система прекращает отвечать, прежде чем файл закрывается, файловая система не обязательно знает фактический размер файла. Содержимое файла неповреждено, но не легкодоступно.

Введите размер блока, в байтах, фрагментов данных. Этот параметр указывает, что буфер памяти, длины NumSamples, собирает данные во множителях WriteSize. Используя размер блока, который совпадает с размером сектора диска, обеспечивает лучшую производительность.

Если ваша система прекратит отвечать, можно ожидать терять объем данных, равный размеру WriteSize.

Общие свойства осциллографа

Имя только для чтения приложения реального времени сопоставлено с этим объектом scope.

Числовой индекс только для чтения, уникальный для каждого осциллографа.

Значение состояния только для чтения:

  • 'Acquiring' — Осциллограф получает данные.

  • 'Ready for being Triggered' — Осциллограф ожидает триггера.

  • 'Interrupted' — Осциллограф не запускается (прерванный).

  • 'Finished' — Осциллограф закончил получать данные.

Свойство только для чтения, которое определяет, как осциллограф собирает и отображает свои данные:

  • 'Host' — Осциллограф собирает данные по целевому компьютеру и отображает его на компьютере разработчика.

  • 'Target' — Осциллограф собирает данные по целевому компьютеру и отображает его на мониторе целевого компьютера.

  • 'File' — Осциллограф собирает и хранит данные на целевом компьютере.

Количество непрерывных выборок получено во время приобретения блока данных.

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

Количество выборок, собранных прежде или после триггерного события. Ввод отрицательной величины собирает выборки перед триггерным событием. Ввод положительного значения собирает выборки после триггерного события. Если вы устанавливаете TriggerMode на 'FreeRun', это свойство не имеет никакого эффекта на сбор данных.

Если 1, осциллограф получает каждую выборку. Если больше, чем 1, осциллограф получает каждый Decimation th выборка.

Инициируйте режим для осциллографа:

  • 'freerun' — Осциллограф включает каждый шаг расчета.

  • 'software' — Осциллограф инициировал из Командного окна.

  • 'signal' — Осциллограф инициировал, когда обозначенный сигнал изменяет состояние.

  • Осциллограф Осциллограф инициировал, когда обозначенный осциллограф инициировал.

Если TriggerMode является 'Signal', этот параметр идентифицирует выходной сигнал блока, чтобы использовать для инициирования осциллографа. Идентифицируйте сигнал с индексом сигнала из свойства Signal целевого объекта.

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

Если TriggerMode является 'Signal', TriggerSlope указывает на поведение сигнала, которое инициировало осциллограф.

  • 'Either' — Сигнал инициировал осциллограф, когда это пересекает TriggerLevel или в повышении или в падающих направлениях.

  • 'Rising' — Сигнал инициировал осциллограф, когда это пересекает TriggerLevel в возрастающем направлении.

  • 'Falling' — Сигнал инициировал осциллограф, когда это пересекает TriggerLevel в падающем направлении.

Если TriggerMode является 'Scope', этот параметр идентифицирует осциллограф, чтобы использовать для триггера. Чтобы инициировать осциллограф, когда другой осциллограф инициирован, устанавливает ведомое свойство scope TriggerScope на индекс осциллографа основного осциллографа.

Если TriggerMode является 'Scope', то TriggerSample задает, на которой выборке инициирования определяют объем текущих триггеров осциллографа.

Например, если TriggerSample является 0 (значение по умолчанию), текущий осциллограф включает демонстрационный 0 (первая полученная выборка) осциллографа инициирования. В этом случае два осциллографа синхронизируются друг с другом.

Если TriggerSample является 1, текущий осциллограф включает демонстрационный 1 (вторая полученная выборка) осциллографа инициирования. В этом случае два осциллографа имеют смещение с одной выборкой.

Установка TriggerSample к -1 означает, что текущий осциллограф инициировал в конце цикла приобретения осциллографа инициирования. В этом случае инициированный осциллограф получает свою первую выборку одна выборка после последней выборки осциллографа инициирования.

Выберите минимум оси Y и максимальные пределы для осциллографа как Auto или с вектором, содержащим минимальные и максимальные значения (например, [-10, 10]).

Список индексов сигнала от целевого объекта, чтобы отобразиться на осциллографе.

Функции объекта

addsignal (fileScope,signal)Добавьте сигналы зарегистрировать осциллограф, представленный объектом scope
remsignal (fileScope,signal)Удалите сигналы из осциллографа файла, представленного объектом scope
start (fileScope)Запустите выполнение осциллографа файла на целевом компьютере
stop (fileScope)Остановите выполнение осциллографа файла на целевом компьютере
trigger(fileScope)Триггер программного обеспечения запускается сбора данных для осциллографа файла

Примеры

свернуть все

Создайте и загрузите xpcosc и выполните приложение реального времени с осциллографом файла.

Открытый, сборка и загрузка приложение реального времени.

ex_model = 'xpcosc';
open_system(ex_model);
rtwbuild(ex_model);
tg = SimulinkRealTime.target
Target: TargetPC1
   Connected            = Yes
   Application          = xpcosc
   Mode                 = Real-Time Single-Tasking
   Status               = stopped
   CPUOverload          = none

   ExecTime             = 0.0000
   SessionTime          = 7405.9356
   StopTime             = 0.200000
   SampleTime           = 0.000250
   AvgTET               = NaN
   MinTET               = Inf
   MaxTET               = 0.000000
   ViewMode             = 0

   TimeLog              = Vector(0) 
   StateLog             = Matrix (0 x 2)
   OutputLog            = Matrix (0 x 2)
   TETLog               = Vector(0) 
   MaxLogSamples        = 16666
   NumLogWraps          = 0
   LogMode              = Normal
   ProfilerStatus       = Ready

   Scopes               = No Scopes defined  
   NumSignals           = 7
   ShowSignals          = off

   NumParameters        = 7
   ShowParameters       = off

Добавьте и файл конфигурации определяют объем 1.

sc1 = addscope(tg, 'file', 1);
addsignal(sc1, 4);
addsignal(sc1, 5)
ans = 
Simulink Real-Time Scope
   Application          = xpcosc
   ScopeId              = 1
   Status               = Interrupted
   Type                 = File
   NumSamples           = 250
   NumPrePostSamples    = 0
   Decimation           = 1
   TriggerMode          = FreeRun
   TriggerSignal        = 4  : Integrator1
   TriggerLevel         = 0.000000
   TriggerSlope         = Either
   TriggerScope         = 1
   TriggerSample        = 0
   FileName             = unset
   WriteMode            = Lazy
   WriteSize            = 512
   AutoRestart          = off
   DynamicFileName      = off
   MaxWriteFileSize     = 536870912
   Signals              = 4  : Integrator1
                          5  : Signal Generator

Запустите приложение реального времени в течение 10 секунд.

tg.StopTime = 10;
start(sc1);
start(tg);
pause(10);
stop(tg);
stop(sc1);

Загрузите и отобразите данные об осциллографе файла.

fsys = SimulinkRealTime.fileSystem(tg);
fh = fopen(fsys, sc1.FileName);
data = fread(fsys, fh);
uint8_data = uint8(data);
plottable_data = ...
     SimulinkRealTime.utils.getFileScopeData(uint8_data);
plot(plottable_data.data)

Разгрузите приложение реального времени.

unload(tg)
Target: TargetPC1
   Connected            = Yes
   Application          = loader

Введенный в R2014a