PDA

Просмотр полной версии : Запись данных (float) с меткой времени в файл (csv или подобный)



Sergey_Tr
19.09.2022, 12:45
Добрый день
Стоит следующая задача - писать данные получаемые с модуля аналогового ввода (REAL) и меткой времени с частотой допустим раз в секунду в CSV (ну или в любой другой формат) файл
Чтобы строки добавлялись друг за другом (все это должно работать на ПЛК - Овен110-60 или м3000-т).
После чего данный файл допустим раз в день отправляется на электронную почту и после чего перезаписывается новыми значениями... И далее все заново

Пример как выглядит файл (Данные нужно писать в виде):

Перем1 Перем2 Перем3 Дата Время

12,72 33,33 -333,44 03.02.22 12:12:12

12,62 33,23 -323,44 03.02.22 12:12:13



Прошу помочь разобраться как данную задачу решит более оптимально.

Данную задачу попробовал решить через StringToFile(Input:= OBJECT_TO_STRING). Проект во вложении 62707

Но столкнулся с проблемами:

1. Как преобразовать время в DT из вот такого числа в файле - "SourceTime":133080437021487025

2. Все данные находятся в оперативной памяти что при больших объемах данных крайне не удобно, так как запись данных нужна в момент работы технологического процесса которым и управляет ПЛК.

3. Как реализовать данную запись в файл построчно с добавлением каждой записи с новой строки.

4. Как правильно создать массив чтобы данные были представлены в виде:

Перем1 Перем2 Перем3 Дата Время

12,72 33,33 -333,44 03.02.22 12:12:12



https://youtu.be/9X-KBS-Gb74

Юрий Горелый2
20.09.2022, 10:56
Добрый день
Стоит следующая задача - писать данные получаемые с модуля аналогового ввода (REAL) и меткой времени с частотой допустим раз в секунду в CSV (ну или в любой другой формат) файл
Чтобы строки добавлялись друг за другом (все это должно работать на ПЛК - Овен110-60 или м3000-т).
После чего данный файл допустим раз в день отправляется на электронную почту и после чего перезаписывается новыми значениями... И далее все заново

Пример как выглядит файл (Данные нужно писать в виде):

Перем1 Перем2 Перем3 Дата Время

12,72 33,33 -333,44 03.02.22 12:12:12

12,62 33,23 -323,44 03.02.22 12:12:13



Прошу помочь разобраться как данную задачу решит более оптимально.

Данную задачу попробовал решить через StringToFile(Input:= OBJECT_TO_STRING). Проект во вложении 62707

Но столкнулся с проблемами:

1. Как преобразовать время в DT из вот такого числа в файле - "SourceTime":133080437021487025

2. Все данные находятся в оперативной памяти что при больших объемах данных крайне не удобно, так как запись данных нужна в момент работы технологического процесса которым и управляет ПЛК.

3. Как реализовать данную запись в файл построчно с добавлением каждой записи с новой строки.

4. Как правильно создать массив чтобы данные были представлены в виде:

Перем1 Перем2 Перем3 Дата Время

12,72 33,33 -333,44 03.02.22 12:12:12



https://youtu.be/9X-KBS-Gb74

Здравствуйте.
Мне кажется решить такую задачу можно несколькими способами:
1) в линуксе подключиться к базе данных sqllite и периодически вычитывая данные делать с ними то, что хочется
2) сделать в библиотеке структуру из трёх переменных флоат и одной дата -время, и потом добавить в объект безразмерный массив из такой структуры и периодически добавлять в массив переменные,
после чего преобразовывать object to string и стринг в json файл (но размер переменной стринг может и огоричить)
3) можно раз в секунду вызывать команду командной строки линукса( sysprocesscreate). строку формировать в программе фбд - конкатинацией -
"echo "тут переменная 1 точка с запятой, переменная2 ...." > /tmp/file.csv" - и в этот файл будет оно падать. потом соответственно формировать посылку емайла ( а я бы в телеграмм кидал), проверять что файл ушел, удалять его и запускать новый. возможно крайние два три значения будут при этом потеряны.
4) можно постоянно скидывать переменные и формировать обработку уже на линукс и python если есть... (( в плк110 его нет((( )

Sergey_Tr
20.09.2022, 11:17
Здравствуйте.
Мне кажется решить такую задачу можно несколькими способами:
1) в линуксе подключиться к базе данных sqllite и периодически вычитывая данные делать с ними то, что хочется
2) сделать в библиотеке структуру из трёх переменных флоат и одной дата -время, и потом добавить в объект безразмерный массив из такой структуры и периодически добавлять в массив переменные,
после чего преобразовывать object to string и стринг в json файл (но размер переменной стринг может и огоричить)
3) можно раз в секунду вызывать команду командной строки линукса( sysprocesscreate). строку формировать в программе фбд - конкатинацией -
"echo "тут переменная 1 точка с запятой, переменная2 ...." > /tmp/file.csv" - и в этот файл будет оно падать. потом соответственно формировать посылку емайла ( а я бы в телеграмм кидал), проверять что файл ушел, удалять его и запускать новый. возможно крайние два три значения будут при этом потеряны.
4) можно постоянно скидывать переменные и формировать обработку уже на линукс и python если есть... (( в плк110 его нет((( )

Добрый день, Юрий.
Пока данную задачу решил следующим образом:
Создаю массив строк в который по условию записываю строки с подготовленными заранее значениями.
И далее при достижении допустим 60 записей сохраняю это все в CSV файл.
Но проблема в том что данное решение тратит очень много оперативной памяти - а еще по мимо записи надо и управлять технологическим процессом.

https://youtu.be/n6rXsdy9xF8

Подскажите как реализовать построчную запись в файл допустим через C# на котором можно писать код в ПЛК
Например как реализована запись в файл в данном видео:

https://youtu.be/CBnB2fvfu_I

И про ПЛК-110 уже понял что проект будет реализовываться на М3000Т


3) можно раз в секунду вызывать команду командной строки линукса( sysprocesscreate). строку формировать в программе фбд - конкатинацией -
"echo "тут переменная 1 точка с запятой, переменная2 ...." > /tmp/file.csv" - и в этот файл будет оно падать. потом соответственно формировать посылку емайла ( а я бы в телеграмм кидал), проверять что файл ушел, удалять его и запускать новый. возможно крайние два три значения будут при этом потеряны.

Очень интересен в реализации вариант 3 - который вы предложили... Сможите более детально подсказать как его реализовать?

Sergey_Tr
20.09.2022, 12:36
Юрий спасибо с примером 3 разоблася ;)

На выходе получился вот такой файл:
62726
С построчной записью.

Юрий Горелый2
20.09.2022, 16:13
Юрий спасибо с примером 3 разоблася ;)

На выходе получился вот такой файл:
62726
С построчной записью.

вот видите, всё просто) ну я как нибудь стрим с такой темой сделаю. потому что там всё не так просто как кажется на первый взгляд.
если отправили почту и не отправилась - нет интернета - что делать?

Sergey_Tr
21.09.2022, 07:00
вот видите, всё просто) ну я как нибудь стрим с такой темой сделаю. потому что там всё не так просто как кажется на первый взгляд.
если отправили почту и не отправилась - нет интернета - что делать?

С этим согласен - буду разбираться.
Стрим с решением подобной задачи очень бы помог.
Спасибо.