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

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

Последние сообщения

Страницы: 1 2 3 [4] 5 6 ... 10
31
Ваши вопросы / Re: Вопросы по скриптам в Simple-Scada 2
« Последний ответ от aMster 02 Июня 2026, 12:31:30 »
Подскажите ( к сожалению с ходу 112 страниц не осилил)
отрабатываем индикацию аварии ( приходит с OPC в булевой переменной)
Имеется "изображение" которому по изменению переменной на 1, скриптом меняем цвет Color:=clRed, а при изменении на 0 возвращаем цвет обратно Color:=clWhite.
только пока "изображение" было белым, все было прекрасно, но вот когда добавилось "изображение" серого цвета, картинка поломалось. после запуска серое изображение становится белым, а при изменении переменной красным.
Можно ли каким-то образом вернуть цвет "по умолчанию" который прописан в редакторе? или на каждый основной цвет надо собственный скрипт делать?
32
Дело в том, что приходится переносить проект из импортной скады на Simple Scada
с сохранением функционала старой скады. Там при нажатии клавиши (F1-F10) записывается значение True в дискретный тег в PLC, а при отпускании значение False в тот же тег.
Так сделана навигация по экранам и управление анимацей на активном экране. Т.е. экраны переключает PLC, в зависимости от того, какая клавиша была нажата (отжата), и в логике исполняемой функции PLC также присутствует событие отжатия клавиши. Экраны переключаются по значению внешнего аналогового тега, значение в который и записывает PLC на основе нажатия (отжатия) клавиш F1-F10. В любом случае спасибо за оперативные ответы.
 
33
Я вас понял. Ждём.
34
Добрый день.

Планирую, ваш запрос добавлен в планы на реализацию, ждет своей очереди.

Цитировать
Да, добавить смогу, но чуть позже, пока занят более ёмкой задачей (практически закончил).
Задача оказалась более ёмкой, чем предполагал, как закончу, следующая ваша.
Но по времени, к сожалению, сориентировать не могу.


Айрат
35
Айрат, добрый день.
Проясните, пожалуйста, Вы будете дорабатывать протокол или нет. А то мы ждем, а может напрасно ждем.
Если что готовы протестировать на нашем счетчике.
36
   Здравствуйте.

Если Вашу задачу не удается перенести на ПЛК, то её можно решить с помощью трёх скриптов по изменению переменных: первые два отвечают за присвоение значения изменившейся переменной из выбранной группы (auto или manual) соответствующей переменной из выходной группы (trend), а третий - за перезапись всей группы (auto или manual) в выходную по изменению значения переменной выбора режима.
Код: (delphi)
// запись по изменению переменной из группы auto, если она выбрана
begin
  if not vrMode.AsBool then exit;    // выбрана группа manual
  with Variable do                   // запись для группы auto
    GetVariableByName(Copy(Name, 1, Length(Name) - 4) + 'trend').Value := Value;
end.
Код: (delphi)
// запись по изменению переменной из группы manual, если она выбрана
begin
  if vrMode.AsBool then exit;    // выбрана группа auto
  with Variable do               // запись для группы manual
    GetVariableByName(Copy(Name, 1, Length(Name) - 6) + 'trend').Value := Value;
end.       
Код: (delphi)
const ListName: array[1..2] of string [32] = ('Cucumber_','Alcohol_');
var i, j: integer;
    aStr: string;
begin
  for i := 1 to High(ListName) do            // цикл по реагентам
    for j := 1 to 3 do                       // цикл по номеру стадии
    begin
      aStr := ListName[i] + IntToStr(j);     // префикс имени переменной = %Название реагента%_%Номер стадии%
      if vrMode.AsBool then                  // выбор переменной-источника по переменной режима
        GetVariableByName(aStr + '_trend').Value := GetVariableByName(aStr + '_auto').Value
      else
        GetVariableByName(aStr + '_trend').Value := GetVariableByName(aStr + '_manual').Value;
    end;
end.
Пример двух реагентов по три стадии во вложении.   
37
Здравствуйте.

Подобные задачи и другую логику работы оборудования гораздо проще и надежнее решать на ПЛК, а не на скада-системе.

Вы можете прислать на support@simple-scada.com текущую версию проекта из директории "..\Simple-Scada 2\Projects\" и подробнее описать задачу: по каким именно условиям должна выполняться запись в переменную "_trend? По изменению другой переменной, отвечающей за переключение режимов работы (укажите какой)? Для каждого реагента/номера стадии используется отдельная переменная переключения режимов работы? После проверки проекта, возможно сможем предложить решение.

Если в проекте имеются конфиденциальные данные, то создайте копию проекта, удалите все лишнее и пришлите нам полученный проект.
38
Подобные задачи гораздо проще и надежнее решать на ПЛК, а не на скада-системе. Любые способы с обработкой удержаний клавиш и последующим отпусканием (аналог кнопки "без фиксации"), будут ненадежными. Например, пользователь нажал и удерживает клавишу (или кнопку "без фиксации"), в переменную записалось значение True и в этот момент произошел разрыв связи с OPC-сервером/ПЛК/ПК-сервером/ПК был обесточен и т.д. Пользователь отпустил клавишу, но в ПЛК так и останется значение True, что может привести к непредсказуемым результатам работы оборудования. Поэтому, не рекомендуем использовать такие способы. Лучше изменить логику работы: например, пользователь нажимает кнопку или сочетание клавиш, в переменную записывается True и далее в ПЛК выполняются нужные операции, задержки записи и т.д.

Цитировать
Я так понял, что комбинация клавиш, например Ctrl + F1, может обрабатываться только нажатие.
Да, событие будет вызвано при нажатии сочетания клавиш. Отследить удержание или отпускание нельзя.
39
Добрый день!
Необходимо помощь в реализации скрипта или другого решения по следующему вопросу:
Имеются почти однотипные переменные:
- %Название реагента%_%Номер стадии%_auto - Названий 6 шт., стадий в каждом названии от 1 до 7. ручной режим
- %Название реагента%_%Номер стадии%_manual - Названий 6 шт., стадий в каждом названии от 1 до 7. авто режим
- %Название реагента%_%Номер стадии%_trend - Названий 6 шт., стадий в каждом названии от 1 до 7. переменные для тренда

Необходимо попробовать реализовать так, что бы при ручном режиме переменные "*_manual" из него записывались в "*_trend", а при автоматическом режиме аналогично.
40
Очень жаль.
Придется как-то с периодическим  скриптом косвенно делать.
Я так понял, что комбинация клавиш, например Ctrl + F1, может обрабатываться только нажатие.
А пока комбинация клавиш активна (нажата), можно это событие обработать?   

Спасибо.
Страницы: 1 2 3 [4] 5 6 ... 10