From File
Чтение данных из файла.
Тип: EngeeFunction
|
Путь в библиотеке:
|
Описание
| Для работы с блоком установите/обновите пакет поддержки блоков РИТМ. |
Блок 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.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
# Update signals list — обновление выходных сигналов
Details
При нажатии на эту кнопку блок перечитывает данные из файла и обновляет список выходных сигналов.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
# Loopback mode: — циклический режим
Details
Если установлен этот флажок, то после достижения последней временной точки в файле блок начнет выдачу временного ряда заново.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
# Sample time: — период, с которым будет вызываться блок
Details
Укажите интервал между шагами расчета как неотрицательное число. Чтобы наследовать шаг расчета, установите для этого параметра значение −1.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
