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

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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Savir

Страницы: [1]
1
Здравствуйте коллеги, вопрос, есть ли возможность реализовать такой вариант хранения/извлечения отчетов,данных:
Имеем процедуру длительностью около недели +-, в течении которой каждые 5 мин. происходит запись значения датчиков температур, и положения вентиляционных заслонок, данные представленны в виде тренда. Т.е. при запуске партии сохраняется файл с датой в имени, ну как пример,а после закрытия партии, он доступен для просмотра в виде тренда как и ряд последующих потом отчетов/файлов.

2
Может кому пригодится.
скрипт типа таймер интервал 600сек (в моем случае)
komp база данных созданная с тремя столбцами tme, temp, part (время, температура, номер партии),
VALUES (NOW() - время сейчас
QuotedStr(b1sr.AsStr) значение переменной b1sr (температура)
QuotedStr(b1part.AsStr) значение переменной b1part (партия)

Код: (delphi)
var
  aQuery: string;
begin
 aQuery := 'INSERT IGNORE INTO `komp` (`tme`, temp, part) VALUES (NOW(), ' + QuotedStr(b1sr.AsStr) + ', '+QuotedStr(b1part.AsStr)+');';
 RunSQL(aQuery, nil, 0);
end.
в итоге каждые 10 мин, записывается строка.

скрипт типа нажали кнопку
Код: (delphi)
var
  KompQuery: string;
begin
  KompQuery :=  'SELECT COUNT(*) AS total FROM komp WHERE temp BETWEEN ' + QuotedStr(TempKompOt.AsStr) +
  ' AND ' + QuotedStr(TempKompDo.AsStr) + ' AND part = '+ QuotedStr(TempKompPart.AsStr) + ' ;';
  RunSQL(KompQuery, nil, 2);
end.
подсчет суммы значений столбца temp, с условиями

скрипт для вывода значение в поле
Код: (delphi)
var
Chas: Integer;
Minuty: string;
begin
  if DataSet.IsEmpty then Exit;
  if DataSet.Tag = 2 then
  begin
  Minuty :=  DataSet.Fields[0].AsStr;
  Chas := StrToInt(Minuty);
  field67.Visible := True;
  field67.Value := Round(chas/6);
  end;
end.
уверен можно лучше и элегантнее, но как для примера понимания, на мой взгляд норм

3
Здравствуйте, спасибо за ответ, это ценное решение части вопроса, также я решил сделать тестовую таблицу с тремя колонками, порядковый номер, температура и номер партии, раз в 10 мин. (этого достаточно будет выполнять скрипт дообавлющий в бд строки с текущими данными), потом при необходиомсти запроса (on click) выполнятеся скрипт:
Код: (delphi)
var
  aQuery: string;
begin
  aQuery :=  'SELECT COUNT(*) AS total FROM Staf WHERE temp BETWEEN ' + QuotedStr(TempOt.AsStr) +
  ' AND ' + QuotedStr(TempDo.AsStr) + ' AND part = '+ QuotedStr(Partia.AsStr) + ' ;';
  RunSQL(aQuery, nil, 1);
end.
в данном случае использую тестовую таблицу(из экселя импорт) я делаю выборку и подсчет количесва строк, зная что каждая строка 10 мин получаем суммарное время нахождения при заданной температуре ОТ и ДО и номера партии, остальное уже детали.
Следущий этап это создание записи в БД, но мысли реализации есть, позже добавлю пост. Вообщемто все есть в ваших мануалах главное фантазию спроецировать на свои требования.
спасибо

4
Здравствуйте уважаемые коллеги, прошу натолкнуть на путь реализации отчёта/вывода:
Есть партия материала которая несколько дней находится поочередно в разных камерах где замеряется ее температура, данной партии присваивается номер, и далее она перемещается под этим номером раз в несколько дней в разные камеры, задача в любой момент времени сформировать отчёт или просто, даже лучше на отдельной вкладке отображать какое количество часов при определенной температуре например 20 грудусов совокупно была эта конкретная партия. Спасибо

Страницы: [1]