Используя объекты SimulinkRealTime.fileSystem

Объект fileSystem позволяет вам работать с файловой системой целевого компьютера от компьютера разработчика. Вы вводите функции целевого объекта в окно MATLAB® на компьютере разработчика или используете скрипты. Объект fileSystem имеет функции, которые позволяют вам использовать

  • cd, чтобы изменить папки

  • dir, чтобы перечислить содержимое текущей папки

  • mkdir, чтобы сделать папку

  • pwd, чтобы получить текущий рабочий путь к папке

  • rmdir, чтобы удалить папку

  • diskinfo, чтобы получить информацию о заданном диске

  • fclose, чтобы закрыть файл (подобный MATLAB fclose)

  • fileinfo, чтобы получить информацию о конкретном файле

  • filetable, чтобы получить информацию о файлах в файловой системе

  • fopen, чтобы открыть файл (подобный MATLAB fopen)

  • fread, чтобы считать файл (подобный MATLAB fread)

  • fwrite, чтобы записать файл (подобный MATLAB fwrite)

  • getfilesize, чтобы получить размер файла в байтах

  • removefile, чтобы удалить файл из целевого компьютера

Примечание: объект SimulinkRealTime.fileSystem будет удален в будущем релизе. См. информацию о версии для команд файловой системы, чтобы использовать вместо этого. Эти команды используют функцию SimulinkRealTime.openFTP и функции для объекта MATLAB ftp.

Полезные глобальные функции:

Эти процедуры принимают, что целевому компьютеру создал файл данных сигнала осциллограф файла Simulink® Real-Time™. Этот файл имеет путь C:\data.dat.

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

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

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

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

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

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

Копирование файлов от целевого компьютера до компьютера разработчика

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

Например, чтобы получить файл с именем data.dat из целевого компьютера C:\ диск (значение по умолчанию):

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.target по умолчанию переменной.

    tg = slrt;
  2. Ввод

    SimulinkRealTime.copyFileToHost(tg,'data.dat')

    Эта команда получает файл и сохранила тот файл к переменной data. Это содержимое находится в формате файла Simulink Real-Time.

Копирование файлов от компьютера разработчика до целевого компьютера

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

Например, чтобы скопировать файл с именем data2.dat от компьютера разработчика до целевого компьютера C:\ диск (значение по умолчанию),

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.target по умолчанию переменной.

    tg = slrt;
  2. Введите следующее, чтобы сохранить тот файл к переменной data.

    SimulinkRealTime.copyFileToTarget(tg,'data2.dat')

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

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

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

Например, чтобы перечислить имя текущей папки целевого компьютера 'TargetPC1':

  1. В окне MATLAB введите команду как следующее, чтобы присвоить объект SimulinkRealTime.fileSystem для компьютера по умолчанию к переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Ввод

    dir(fsys)

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

  1. В окне MATLAB введите команду как следующее, чтобы присвоить объект SimulinkRealTime.target для целевого компьютера 'TargetPC1' к переменной.

    tg1 = SimulinkRealTime.target('TargetPC1');
  2. Чтобы присвоить объект SimulinkRealTime.fileSystem переменной, введите:

    fsys = SimulinkRealTime.fileSystem(tg1);
  3. Ввод

    dir(fsys)

Чтение содержимого файла на целевом компьютере

Можно считать содержимое файла данных от целевого компьютера при помощи функций SimulinkRealTime.fileSystem на компьютере разработчика. Используйте эту процедуру в качестве альтернативы методу, описанному в Осциллографах Файла конфигурации с языком MATLAB.

Чтобы запустить функцию объекта SimulinkRealTime.fileSystem, используйте синтаксис function_name(fs_object, argument_list). Например, чтобы получить содержимое файла с именем data.dat от целевого компьютера C:\ диск (значение по умолчанию):

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.fileSystem переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Ввод

    h = fopen(fsys, 'data.dat');

    Эта команда открывает файл data.dat для чтения и присваивает идентификатор файла h.

  3. Ввод

    data2 = fread(fsys,h);

    Эта команда читает файл data.dat и хранит содержимое файла к data2. Это содержимое находится в формате файла Simulink Real-Time.

  4. Ввод

    fclose(fsys, h)

    Эта команда закрывает файл data.dat.

Прежде чем можно будет просмотреть или построить содержимое этого файла, необходимо преобразовать содержимое. Смотрите Содержимое Формата файла Simulink Real-Time Преобразования к Данным о Двойной точности.

Преобразование содержимого формата файла Simulink Real-Time к данным о двойной точности

Программное обеспечение Simulink Real-Time обеспечивает функциональный SimulinkRealTime.utils.getFileScopeData, чтобы преобразовать содержимое формата файла Simulink Real-Time (в байтах) к данным о двойной точности, представляющим сигналы и метки времени. Функция SimulinkRealTime.utils.getFileScopeData берет в данных из файла в формате Simulink Real-Time. Данные должны быть вектором байтов (uint8). Чтобы преобразовать данные в uint8, используйте команду как следующее:

data2 = uint8(data2');

Этот раздел принимает, что у вас есть переменная, data2, который содержит данные в формате файла Simulink Real-Time (см. Чтение Содержимого Файла на Целевом компьютере).

  1. В окне MATLAB измените папку на папку, которая содержит файл формата Simulink Real-Time.

  2. Ввод

    new_data2 = SimulinkRealTime.utils.getFileScopeData(data2);

    SimulinkRealTime.utils.getFileScopeData преобразовывает формат data2 от формата файла Simulink Real-Time до массива байтов. Это также создает структуру для того файла в new_data2, которого один из элементов является массивом, удваивается, data. Участник data также добавлен с вектором метки времени. Данные возвращены, как удваивается, которые представляют реальные значения исходных Сигналов Simulink в требуемые времена во время целевого выполнения.

Можно просмотреть или исследовать данные сигнала. Можно также отобразить данные на графике с plot(new_data2.data).

Если вы используете Simulink Real-Time в автономном режиме, можно извлечь данные из файла данных:

  • Сначала определите размер заголовка файла. Чтобы получить размер заголовка файла, проигнорируйте первые 8 байтов файла. Следующие 4 байта хранят размер заголовка как беззнаковое целое.

  • После количества размера заголовка байтов, хранилища файлов сигналы последовательно, как удваивается. Например, примите, что осциллограф имеет три сигнала, x, y и z. Примите, что x[0] является значением x в демонстрационном 0, x[1] является значением в демонстрационном 1 и т.д. Также примите t[0], t[1] значения времени симуляции на выборках 0, 1, и т.д. Файл сохраняет данные с помощью следующего шаблона:

    x[0] y[0] z[0] t[0] x[1] y[1] z[1] t[1] x[2] y[2] z[2] t[2]...
    x[N] y[N] z[N] t[N]

    N является количеством полученных выборок. Файл сохраняет x, y, z и t, как удваивает на уровне байтов 8 каждого.

Удаление файла от целевого компьютера

Можно удалить файл из целевого компьютера при помощи функций Simulink Real-Time на компьютере разработчика для объекта SimulinkRealTime.fileSystem. Если вы уже не сделали так, закройте этот файл сначала с fclose.

Чтобы запустить функцию объекта SimulinkRealTime.fileSystem, используйте синтаксис function_name(fs_object, argument_list). Например, чтобы удалить файл с именем data2.dat из целевого компьютера C:\ диск (значение по умолчанию),

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.fileSystem переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Введите следующее, чтобы удалить заданный файл из целевого компьютера.

    removefile(fsys,'data2.dat')

Получение списка открытых файлов на целевом компьютере

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

Чтобы запустить функцию объекта SimulinkRealTime.fileSystem, используйте синтаксис function_name(fs_object, argument_list). Например, чтобы получить список открытых файлов для объекта fsys файловой системы,

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.fileSystem переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Ввод

    filetable(fsys)
    

    Если файловая система имеет открытые файлы, список как следующее отображен:

    ans =
    Index    Handle  Flags     FilePos  Name
    ------------------------------------------
        0  00060000  R__          8512  C:\DATA.DAT
        1  00080001  R__             0  C:\DATA1.DAT
        2  000A0002  R__          8512  C:\DATA2.DAT
        3  000C0003  R__          8512  C:\DATA3.DAT
        4  001E0001  R__             0  C:\DATA4.DA
  3. Таблица возвращает открытые дескрипторы файлов в шестнадцатеричном. Преобразовывать указатель на тот, что другой SimulinkRealTime.fileSystem функционирует, такие как fclose, может использовать, использовать функцию hex2dec. Например,

    h1 = hex2dec('001E0001')
    h1 =
    1966081
  4. Чтобы закрыть тот файл, используйте функцию fclose SimulinkRealTime.fileSystem. Например,

    fclose(fsys, h1)

Получение информации о файл на целевом компьютере

Можно отобразить информацию для файла в файловой системе целевого компьютера при помощи функций объекта SimulinkRealTime.fileSystem на компьютере разработчика.

Чтобы запустить функцию объекта SimulinkRealTime.fileSystem, используйте синтаксис function_name(fs_object, argument_list). Например, чтобы отобразить информацию для идентификатора файла fid1,

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.fileSystem переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Ввод

    fid1 = fopen(fsys, 'data.dat');

    Эта команда открывает файл data.dat для чтения и присваивает идентификатор файла fid1.

  3. Ввод

    fileinfo(fsys, fid1)

    Это возвращает данные о диске как следующее для файловой системы диска C:\.

    ans =        
                   FilePos: 0
             AllocatedSize: 12288
             ClusterChains: 1
        VolumeSerialNumber: 1.0450e+009
                  FullName: 'C:\DATA.DAT'

Получение информации о диск на целевом компьютере

Можно отобразить информацию для диска в файловой системе целевого компьютера при помощи функций объекта SimulinkRealTime.fileSystem на компьютере разработчика.

Чтобы запустить функцию объекта SimulinkRealTime.fileSystem, используйте синтаксис function_name(fs_object, argument_list). Например, чтобы отобразить данные о диске для диска C:\,

  1. Если вы уже не сделали так в окне MATLAB, введите следующее, чтобы присвоить объект SimulinkRealTime.fileSystem переменной.

    fsys = SimulinkRealTime.fileSystem;
  2. Ввод

    diskinfo(fsys, 'C:\');

    Это возвращает данные о диске как следующее для файловой системы диска C:\.

    ans = 
    
      struct with fields:
    
                DriveLetter: 'C'
                      Label: 'FREEDOS'
                   Reserved: '   '
               SerialNumber: -857442364
        FirstPhysicalSector: 63
                    FATType: 32
                   FATCount: 2
              MaxDirEntries: 0
             BytesPerSector: 512
          SectorsPerCluster: 64
              TotalClusters: 1831212
                BadClusters: 0
               FreeClusters: 1827614
                      Files: 938
                 FileChains: 942
                 FreeChains: 1
           LargestFreeChain: 1827614
                  DriveType: DRIVE_FIXED