Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Экспорт данных  (Прочитано 10479 раз)

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Экспорт данных
« : 15 Июля 2016, 13:14:00 »
  Здравствуйте!

  По техническому заданию на АРМ оператора должен быть обеспечен экспорт данных о ходе технологического процесса во внешний файл. В этом файле должны содержаться метки времени и значения выбранных технологических параметров в эти моменты времени.
  Подскажите, как мне сделать это. Я только начал изучать Simple-SCADA, поэтому прошу извинить, если где-нибудь уже описан рецепт, просто ткните на него пальцем.
  Исходя из ТЗ, на выходе нужен простой текстовый файл, как вариант, CSV. Если полученный файл удастся без танцев с бубном скормить GNUplot или Exel, то буду считать задачу решённой.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Экспорт данных
« Ответ #1 : 15 Июля 2016, 21:11:45 »
Здравствуйте!

Сейчас есть возможность экспорта данных трендов и сообщений в Excel-таблицы. Т.е. это те данные, которые сейчас пишутся в БД скадой автоматически. Уже в следующем обновлении мы планируем добавить в скрипты функции для работы с Excel и базами данных (с возможностью выполнения любых запросов к БД). В такими возможностями можно было бы решить очень просто решить Вашу задачу и формировать уже полностью оформленные Excel-отчеты. Поэтому рекомендуем дождаться обновления.

Второй способ: можно сохранять данные в свои текстовые файлы, используя функции скриптов для текстовых файлов. Работа с текстовыми файлами проста и ограничивается 5 методами: открыть/создать файл, закрыть его, проверить достигнут ли конец файла, записать строку в файл, считать строку из файла.

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Экспорт данных
« Ответ #2 : 15 Июля 2016, 22:25:26 »
Цитировать
в следующем обновлении

Когда? Мне до Нового года нужно сдаться. Успеем?

Цитировать
можно сохранять данные в свои текстовые файлы

API работы с файлами традиционен до понятности. А вот как извлечь данные трендов? Ткните пальцем, где почитать.

P.S. Очень приятно, что так быстро и дружелюбно отвечают новичкам, хотя те ещё просто присматриваются к вашему продукту.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Экспорт данных
« Ответ #3 : 17 Июля 2016, 18:13:37 »
Цитировать
Когда? Мне до Нового года нужно сдаться. Успеем?
Скорее всего в ближайшие две-три недели.

Цитировать
А вот как извлечь данные трендов? Ткните пальцем, где почитать.
Сейчас это возможно функциями экспорта в Excel. Смотрите процедуру ToExcel у переменных. Например:

Код
var
  aBegin, aEnd: TDateTime;
begin
  aEnd := Now;                  // конец интервала: текущая дата;
  aBegin := IncMonth(aEnd, -1); // начало интервала: текущая дата минус 1 месяц;

  { экспортировать в Excel все значения тренда переменной MyVariable за последний месяц }
  MyVariable.ToExcel('MyFile', aBegin, aEnd, evtAll, False);   
end.

comander_3

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Экспорт данных
« Ответ #4 : 13 Апреля 2017, 11:20:47 »
Здравствуйте.
Сохраняю данные (текущее время и значение переменной) в текстовый файл, для последующего импорта в Excel.
Какими средствами добавить разделитель между значениями (пробел или ";")?
Код
TextFileWriteLn(TimeToStr(Now)+(?)+IntToStr(VrRes.Value));
« Изменён: 13 Апреля 2017, 11:21:41 от comander_3 »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Экспорт данных
« Ответ #5 : 13 Апреля 2017, 12:00:29 »
Здравствуйте!

В процедуру TextFileWriteLn необходимо передать данные в виде строки - тип String. Один символ " " или ";" будет определен компилятором как тип WideChar - это вызовет ошибку несовпадения типов. Поэтому, нужно явно привести символ " " или ";" к типу String как показано ниже:

Код
TextFileWriteLn(TimeToStr(Now) + String(';') + IntToStr(VrRes.Value));  // точка с запятой
TextFileWriteLn(TimeToStr(Now) + String(' ') + IntToStr(VrRes.Value));  // пробел

comander_3

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Экспорт данных
« Ответ #6 : 13 Апреля 2017, 13:31:37 »
Спасибо, то что с одним символом можно работать через WideChar в других источниках находил, но смог получить только коды символов. Было бы замечательное, если бы эта информация о преобразовании добавилась в мануал. Спасибо за скорый ответ.

comander_3

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Экспорт данных
« Ответ #7 : 13 Апреля 2017, 16:38:37 »
К сожалению, проблема не решилась. Символ не добавляется, результат выводится в виде:
18:37:590
18:37:090

где 0 - значение переменной (оно таким и должно быть), время в формате hh:mm:ss;
Версия 2.1.1.24 (24.10.2016)

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Экспорт данных
« Ответ #8 : 13 Апреля 2017, 17:10:30 »
да, действительно. Есть проблема с передачей WideChar. В следующем обновлении добавим функцию для сложения строки и символа. Сейчас остается использовать такой вариант:

Код
var
  aChar: string;
begin
  aChar := ';';
  TextFileOpen('My.txt', '', fomRewrite, fcpUTF8);
  TextFileWriteLn(TimeToStr(Now) + aChar + VrRes.AsStr);
  TextFileClose;
end.

Т.е. сначала объявить строку и записать в неё нужный символ, а затем использовать его при сложении.

igorigor07

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Экспорт данных
« Ответ #9 : 18 Июня 2017, 13:34:16 »
Добрый день!

Глупый вопрос задам - для экспорта в формате excel сам MSOffice (excel в частности) должен быть установлен?
И если да, есть варианты альтернативного экспорта (без работы руками в текстовые файлы)?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Экспорт данных
« Ответ #10 : 19 Июня 2017, 09:15:42 »
Цитировать
Глупый вопрос задам - для экспорта в формате excel сам MSOffice (excel в частности) должен быть установлен? И если да, есть варианты альтернативного экспорта (без работы руками в текстовые файлы)?
Здравствуйте. Да, Excel должен быть установлен. Другой способ - экспорт через отчеты. Можно сделать отчет по интересующим Вас переменным и использовать процедуры ReportExportAll и ReportExportClient для экспорта в различные форматы. Ещё один способ - запись в файл, но для этого придется писать скрипты.