Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: sokave от 11 Декабря 2017, 16:20:59

Название: Типа "Широковещательная рассылка"
Отправлено: sokave от 11 Декабря 2017, 16:20:59
Добрый день
Можно ли реализовать такое: во всех контроллерах есть адрес 111, в который по выполнению определенного действия нужно записать некоторое значение сразу во все контроллеры, возможно ?
Спасибо
Название: Re: Типа "Широковещательная рассылка"
Отправлено: Simple_Scada от 11 Декабря 2017, 16:54:24
Здравствуйте!

Допустим имеется пять контроллеров, на которые необходимо записывать какое-то значение в адрес 111. На OPC-сервере это будет пять разных переменных с адресом 111. В скаде это также будет пять разных переменных. Записать значение одновременно в несколько переменных можно через скрипты, например:
Код
begin
  MyVariable1.Value := 10;
  MyVariable2.Value := 10;
  // и т.д.
end.

где "MyVariable1" - имя Вашей первой переменной, "MyVariable2" - имя второй и т.д.
Название: Re: Типа "Широковещательная рассылка"
Отправлено: sokave от 11 Декабря 2017, 16:59:31
а если у меня таких контролллеров штук 200? например что то типа я-ля цикл "repeat ... until" ?
Название: Re: Типа "Широковещательная рассылка"
Отправлено: Simple-Scada от 11 Декабря 2017, 19:54:58
Да, можно циклом, если переменные с однотипными именами. Например так:

Код
var
  I: Integer;
  aVar: TM_Variable;
begin
  for I := 1 to 200 do // цикл по I от 1 до 200
  begin
    aVar := GetVariableByName('MyVaribale' + IntToStr(I)); // ищем переменную по имени
    if aVar <> nil then   // если переменная найдена
      aVar.Value := 10;
  end;
end.
Название: Re: Типа "Широковещательная рассылка"
Отправлено: sokave от 12 Декабря 2017, 08:39:59
спасибо