Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: tonyk от 15 Июля 2016, 13:14:00

Название: Экспорт данных
Отправлено: tonyk от 15 Июля 2016, 13:14:00
  Здравствуйте!

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

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

Второй способ: можно сохранять данные в свои текстовые файлы, используя функции скриптов для текстовых файлов (http://simple-scada.com/scripts_manual?section=file-work). Работа с текстовыми файлами проста и ограничивается 5 методами: открыть/создать файл, закрыть его, проверить достигнут ли конец файла, записать строку в файл, считать строку из файла.
Название: Re: Экспорт данных
Отправлено: tonyk от 15 Июля 2016, 22:25:26
Цитировать
в следующем обновлении

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

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

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

P.S. Очень приятно, что так быстро и дружелюбно отвечают новичкам, хотя те ещё просто присматриваются к вашему продукту.
Название: Re: Экспорт данных
Отправлено: Simple-Scada от 17 Июля 2016, 18:13:37
Цитировать
Когда? Мне до Нового года нужно сдаться. Успеем?
Скорее всего в ближайшие две-три недели.

Цитировать
А вот как извлечь данные трендов? Ткните пальцем, где почитать.
Сейчас это возможно функциями экспорта в Excel. Смотрите процедуру ToExcel (http://simple-scada.com/scripts_manual?section=script_variable) у переменных. Например:

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

  { экспортировать в Excel все значения тренда переменной MyVariable за последний месяц }
  MyVariable.ToExcel('MyFile', aBegin, aEnd, evtAll, False);   
end.
Название: Re: Экспорт данных
Отправлено: comander_3 от 13 Апреля 2017, 11:20:47
Здравствуйте.
Сохраняю данные (текущее время и значение переменной) в текстовый файл, для последующего импорта в Excel.
Какими средствами добавить разделитель между значениями (пробел или ";")?
Код
TextFileWriteLn(TimeToStr(Now)+(?)+IntToStr(VrRes.Value));
Название: Re: Экспорт данных
Отправлено: Simple_Scada от 13 Апреля 2017, 12:00:29
Здравствуйте!

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

Код
TextFileWriteLn(TimeToStr(Now) + String(';') + IntToStr(VrRes.Value));  // точка с запятой
TextFileWriteLn(TimeToStr(Now) + String(' ') + IntToStr(VrRes.Value));  // пробел
Название: Re: Экспорт данных
Отправлено: comander_3 от 13 Апреля 2017, 13:31:37
Спасибо, то что с одним символом можно работать через WideChar в других источниках находил, но смог получить только коды символов. Было бы замечательное, если бы эта информация о преобразовании добавилась в мануал. Спасибо за скорый ответ.
Название: Re: Экспорт данных
Отправлено: comander_3 от 13 Апреля 2017, 16:38:37
К сожалению, проблема не решилась. Символ не добавляется, результат выводится в виде:
18:37:590
18:37:090

где 0 - значение переменной (оно таким и должно быть), время в формате hh:mm:ss;
Версия 2.1.1.24 (24.10.2016)
Название: Re: Экспорт данных
Отправлено: Simple-Scada от 13 Апреля 2017, 17:10:30
да, действительно. Есть проблема с передачей WideChar. В следующем обновлении добавим функцию для сложения строки и символа. Сейчас остается использовать такой вариант:

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

Т.е. сначала объявить строку и записать в неё нужный символ, а затем использовать его при сложении.
Название: Re: Экспорт данных
Отправлено: igorigor07 от 18 Июня 2017, 13:34:16
Добрый день!

Глупый вопрос задам - для экспорта в формате excel сам MSOffice (excel в частности) должен быть установлен?
И если да, есть варианты альтернативного экспорта (без работы руками в текстовые файлы)?
Название: Re: Экспорт данных
Отправлено: Simple-Scada от 19 Июня 2017, 09:15:42
Цитировать
Глупый вопрос задам - для экспорта в формате excel сам MSOffice (excel в частности) должен быть установлен? И если да, есть варианты альтернативного экспорта (без работы руками в текстовые файлы)?
Здравствуйте. Да, Excel должен быть установлен. Другой способ - экспорт через отчеты. Можно сделать отчет по интересующим Вас переменным и использовать процедуры ReportExportAll и ReportExportClient (http://simple-scada.com/scripts_manual?section=script_reports) для экспорта в различные форматы. Ещё один способ - запись в файл, но для этого придется писать скрипты.