Просмотр полной версии : Запись данных (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
вот видите, всё просто) ну я как нибудь стрим с такой темой сделаю. потому что там всё не так просто как кажется на первый взгляд.
если отправили почту и не отправилась - нет интернета - что делать?
С этим согласен - буду разбираться.
Стрим с решением подобной задачи очень бы помог.
Спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot