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

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

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

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


Сообщения - AndrewNA

Страницы: [1] 2
1
Переспрошу про возможность преобразования переменной с OPC со знаком минус в положительную (отображает значение как и на оборудовании), только через скрипт?



2
Ваши вопросы / Re: Время, таймер и так далее
« : 27 Февраля 2026, 15:05:04 »
Доброго дня. Помогите справиться с задачей:
По тех процессу на одном из этапов варки (itap_varki) мы должны 20 мин варить продукт при температурном диапазоне 124,8-126,8°С
Скрипт таймера 1сек имеет вид, но температура естественно измеряемый параметр и если она выйдет за допустимый интервал то таймер остановиться.
Код: (delphi)
  if (itap_varki.AsInt = 4) and (temperature.AsInt > 123) and (CompareTime(vrTimer.AsDateTime, 0) > 0) then
  begin
    vrTimer.Value := IncSecond(vrTimer.AsDateTime, -1);  // уменьшаем таймер на 1 секунду
 
    if CompareTime(vrTimer.AsDateTime, IncMinute(0, 5)) = 0 then   // если осталось 5 минут, то
      AddMessage(Now, mkAlarm, 'До окончания таймера 4 этапа осталось 5 минут' + ' варка: ' + fld_VarkaAdd.Text, True, True)
    else
      if CompareTime(vrTimer.AsDateTime, 0) <= 0 then
        // КОД РАЗМЕЩЕННЫЙ ЗДЕСЬ БУДЕТ ВЫПОЛНЯТЬСЯ ПО ТАЙМЕРУ
        AddMessage(Now, mkAlarm, 'Таймер 4 этапа Окончено. Охлаждение реактора.' + ' варка: ' + fld_VarkaAdd.Text, True, True);
  end;
end.

Может у кого то уже реализовано, как правильно запустить таймер допустим сравнив показания температуры 20 сек назад по времени, а потом стартовать таймер?

3
Ваши вопросы / Re: Время, таймер и так далее
« : 17 Февраля 2026, 16:58:11 »
Пытаюсь заполнить таблицу, SecondsBetween не работает, ткните почему пожулуйста
Код: (delphi)
var
Timer:TDateTime;
begin

      tblSchedule.GetCell(1, 1).Text := txt_l1m1_time_bt_start_1.Text;
      tblSchedule.GetCell(4, 1).Text := txt_l1m1_time_bt_stop_1.Text;
      tblSchedule.GetCell(2, 1).Text := TimeToStr(StrToTime(tblSchedule.GetCell(1, 1).Text) + StrToTime(tblSchedule.GetCell(3, 1).Text));

      //Timer := SecondsBetween(StrToTime(tblSchedule.GetCell(4, 1).Text), StrToTime(tblSchedule.GetCell(2, 1).Text));
      //tblSchedule.GetCell(5, 2).Text := TimeToStr(Timer); // не работает, выводит только нули

      tblSchedule.GetCell(5, 1).Text := TimeToStr(StrToTime(tblSchedule.GetCell(2, 1).Text) - StrToTime(tblSchedule.GetCell(4, 1).Text));
      //tblSchedule.GetCell(4, 1).Text := TimeToStr(StrToTime(tblSchedule.GetCell(1, 1).Text) + StrToTime(tblSchedule.GetCell(3, 1).Text));

end.

4
Ваши вопросы / Re: Расписание. Schedule
« : 17 Февраля 2026, 15:29:56 »
Тут скорее отображение прогалов между этапами процесса в графическом виде в стиле айфоновского календаря которым тыкал меня директор))

Процессы ежедневные, состоящие из одинаковых временных этапов по технологии. Оператор запускает и завершает процессы кнопками, иногда он может завершить этап раньше соответственно, если он выгрузит продукт раньше появиться доп время напокурить

5
Ваши вопросы / Re: Работа с таблицами
« : 17 Февраля 2026, 09:32:42 »
Благодарю за пример, разбираюсь. Пока в ожидаемом времени ничего не отображается.

Попробую ответить:
1. Источник исходных данных таблицы: БД вполне подойдет, в проекте используется БД добавить таблицу можно
2. изменения продолжительности после команды старт: да так как техпроцесс меняется
3. Интервалы/продолжительности в пределах 24 часов или более. - максимальная продолжительность 1го процесса 2ч, но производство работает и в ночную смену, есть переход на сл сутки
4. При восстановлении таблицы последний интервал может превысить заданную продолжительность. Действия: просто перейти к следующему, прекратить выполнение, запросить у оператора (к следующему, прекратить выполнение) - на данный момент реализация следующая, оператор начал процесс с первого этапа, запустился таймер и после нажатия кнопки окончено мы знаем затраченное время. Не знаю как вам ответить.
5. Сохранять результаты работы (фискальный архив): да (БД/файл)
6. Непротиворечивое по сравнению с картинкой описание столбцов. - в вашем примере все есть, спасибо. Время начала, продолжительность (задаваемая), расчетное время окончания, оставшееся время

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

6
Ваши вопросы / Re: Расписание. Schedule
« : 13 Февраля 2026, 16:55:52 »
Автор: pan2000 отличная работа, а можете переделать проект что бы были ни дни недели а временные метки можно выставлять одного дня но временных меток множество

7
Ваши вопросы / Re: Работа с таблицами
« : 13 Февраля 2026, 16:00:17 »
Здравствуйте, помогите осуществить задуманное:
Есть тех процесс состоящий из этапов. Оператор начиная этап (нажатие кнопки старт) запускает таймер этапа. Этапы идут друг за другом.

Нужно отображать таблицу (пример во вложении) в которой в 1й колонке перечислены этапы, во второй время начала этого этапа, в третьей колонке можно задавать продолжительность, 4й предположительное время окончания и 5й колонке оставшееся время.

8
Добрый день, используя Примеры по работе с БД мы можем отправлять/получать данные. В примере формы добавления нового рецепта, есть проверка на наличие введенных пользователем данных во 2й столбец "Имя", но если пользователь вводит второй раз эти же данные в столбец "имя" данные не записываются тк "IGNORE пропускает вставку, если нарушается уникальное" ограничение.

Будте добры, подскажите с кодом скрипта в котором есть проверка на наличие введенных пользователем данных и проверка на наличие уже этих данных в БД с выводом предупреждения о наличии данных в столбце "Имя"

заранее благодарность коллеги.

 

9
Через таймерные процедуры нельзя запустить обратный отсчет. Это можно реализовать используя скрипт с типом события "Таймер" и методы для работы с датой/временем. Например, чтобы уменьшить время на 1 секунду, можно использовать функцию "IncSecond" с параметром -1. Пример проекта во вложении.

Доброго дня, к сожалению не могу разобраться не получается завести таймер на 2ч в этом примере.
И второе условие за 15 мин до окончания вывести сообщение
Спасибо. Расскажите как надо.

10
Отлично, спасибо за труды, попробовал ваш пример работает.

В руководстве имеются примеры по работе с БД. Подскажите как осуществить проверку записи в БД?
Спасибо.

11
Доброго времени суток, подскажите приобретена лицензия на Лицензионная версия Simple-Scada 2.7.3.1 Проф. полный функционал. Имеем в штате 2 программиста. Могут ли они работать над одним проектом одновременно?

Дополню. Заготовка проекта имеется и будет развернута на сервере. Нужно одновременно производить изменения.

12
В руководстве имеется описание Глобальные процедуры и функции > Время и дата > Таймеры

Подскажите, а как запустить обратный таймер?

13
Ваши вопросы / Re: Элемент Флажок
« : 05 Декабря 2025, 14:18:21 »
Доброго дня народ, продолжаю разбираться со скадой и в частности с элементами Флажок

1. Как можно отобразить системное время Отмеченного флажка.
2. Как исключить повторное отжатие флажка, не используя его скрытие с экрана
3. Либо фиксировать время нажатия и отжатия флажков
4. Как посчитать время между 2 мя последующими флажками

получились вопросы по временным функциям, спасибо за ответы

14
Ваши вопросы / Re: Элемент Флажок
« : 19 Ноября 2025, 09:01:02 »
Отлично спасибо, использовал if ... then, а переменная IsAllDone как индикатор выполненного задания на начальном этапе:
Код: (delphi)
var
  IsAllDone: Boolean;

begin

if not ChBox1_l1m1_1.Checked then
    begin
      Text29.Text := 'ЗАДАНИЕ 1 ПРОЦЕССА 1 НЕ ВЫПОЛНЕНО';
      IsAllDone := False;
    end;

   if not ChBox1_l1m1_2.Checked then
    begin
      Text29.Text := 'ЗАДАНИЕ 2 ПРОЦЕССА 1 НЕ ВЫПОЛНЕНО';
      IsAllDone := False;
    end;

    if not ChBox1_l1m1_3.Checked then
    begin
      Text29.Text := 'ЗАДАНИЕ 3 ПРОЦЕССА 1 НЕ ВЫПОЛНЕНО';
      IsAllDone := False;
    end;

    if IsAllDone then
    begin
      itap_varki_l1m1.Value := 2  ;
      Text29.Text := 'ЗАДАНИЕ ПРОЦЕССА 2';
      TimerPause(vrTimer_1);      // Пауза таймера 1
      TimerStart(vrTimer_2, 0);  // Старт таймер 2
      Window_ChBox_l1m1_1.CloseAll;
      end

  else

  begin itap_varki_l1m1.Value := 1;

 end;

end.         

itap_varki_l1m1 как следует из названия этапы

15
Ваши вопросы / Элемент Флажок
« : 18 Ноября 2025, 10:05:46 »
Доброго дня, помогите с кодом на элемент флажок пожалуйста. Задача пользователь отмечая флажки отмечает этапы выполненных действий, если какой либо флажок не отмечен выводится сообщение в элемент текст о конкретно не выполненном действие.

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