Документация Engee

From File

Чтение данных из файла.

Тип: EngeeFunction

Путь в библиотеке:

/RITM/RITM From To File/From File

Описание

Для работы с блоком установите/обновите пакет поддержки блоков РИТМ.

Блок From File считывает данные из файла в Engee. Блок считывает данные из файла по частям, не потребляя памяти в процессе симуляции. На иконке блока отображается имя файла, из которого будут считываться данные. Блок поддерживает чтение данных из файлов CSV и JLD2.

Блок поддерживает работу при симуляции в Engee и на комплексе полунатурного моделирования «РИТМ». При работе на «РИТМ» файлы ищутся в папке /home/ritm/data.

Пример использования блока ritm-engee_demo_block_from_file.engee доступен в директории с примерами. Для получения примеров воспользуйтесь командой engee.package.getdemos:

engee.package.getdemos("RITM-Engee-Blocks")

Требования к формату данных в файле

Поддерживается чтение данных следующих типов:

  • Bool;

  • Int8;

  • Int16;

  • Int32;

  • Int64;

  • UInt8;

  • UInt16;

  • UInt32;

  • UInt64;

  • Float32;

  • Float64.

Поддерживается чтение данных следующих размерностей:

  • скаляр;

  • вектор;

  • двумерная матрица.

JLD2

Все сигналы в файле JLD2 должны быть записаны в переменную signals в формате DataFrames. DataFrame должен содержать скалярное поле time с типом данных Float64. Это поле трактуется блоком From File как временная метка всех остальных данных в этой строке. В процессе моделирования блок From File последовательно считывает данные из файла и возвращает в модель значения сигналов для моментов времени, удовлетворяющих условию time ≤ t, где t — текущее модельное время.

using JLD2: jldsave

using DataFrames

time = collect(range(0, stop=10.0, step=0.01))
frequencies = [1.0, 2.0, 3.0]

sines = [
    [sin(2π * f * t) for f in frequencies]
    for t in time
]

counter = UInt8.(mod.(0:length(time)-1, 5))

df = DataFrame(
    time = time,
    sines = sines,
    counter = counter,
)

jldsave(joinpath(@__DIR__, "from_file.jld2"); signals = df)

df

CSV

Блок From File использует собственное соглашение об именовании полей в CSV для поддержки векторов и матриц. Для записи в корректном формате используйте вспомогательную функцию из SignalBin — пакета, поставляемого вместе с "RITM-Engee-Blocks".

Для записи DataFrame в файл используйте:

using Main.SignalBin
SignalBin.dataframe_to_csv(df, "to_file_copy.csv")

Для чтения DataFrame из файла используйте:

using Main.SignalBin
SignalBin.csv_to_dataframe("to_file.csv")

Порты

Порты блока представляют собой динамический список выходных сигналов. Сигналы автоматически определяются в файле, который задан в параметре File name:.

Параметры

Main group

# File name: — имя входного файла

Details

Имя входного файла с расширением .jld2 или .csv.

Значение по умолчанию

joinpath(@__DIR__, "data_file.jld2")

Имя для программного использования

engee_file_name_m

Настраиваемый

Нет

Вычисляемый

Да

# Update signals list — обновление выходных сигналов

Details

При нажатии на эту кнопку блок перечитывает данные из файла и обновляет список выходных сигналов.

Значение по умолчанию

—

Имя для программного использования

update_signals_m

Настраиваемый

Нет

Вычисляемый

Нет

# Loopback mode: — циклический режим

Details

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

Значение по умолчанию

false (выключено)

Имя для программного использования

loopback_m

Настраиваемый

Нет

Вычисляемый

Да

# Sample time: — период, с которым будет вызываться блок

Details

Укажите интервал между шагами расчета как неотрицательное число. Чтобы наследовать шаг расчета, установите для этого параметра значение −1.

Значение по умолчанию

-1

Имя для программного использования

sample_time_m

Настраиваемый

Нет

Вычисляемый

Да