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

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

Автор Тема: Нужна помощь  (Прочитано 4843 раз)

Damir

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Нужна помощь
« : 24 Апреля 2017, 22:47:27 »
Добрый день! Я написал программу, когда включается солнечная батарея горит диод, если включается ветрогенератор и выключается солнечная батарея диод должен выключится,, через 2 секунды должен включится и так должен чередовать. Работаю с ардуино, и Arduino Opc Server. Подскажите

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Нужна помощь
« Ответ #1 : 26 Апреля 2017, 09:53:32 »
Здравствуйте.

Для этого можно добавить виртуальную переменную таймер vrTime с типом данных Integer. Затем создать один скрипт с типом события "Прошла секунда" и написать такой код:

Код
var
  aSetValue: Integer;
begin
  aSetValue := 0;

  { меняем переменную vrTime от 0 до 3 }
  vrTime.Value := vrTime.AsInt + 1;
  if vrTime.AsInt > 3 then
    vrTime.Value := 0;

  { если солнечная батарея выключена }
  if Sun.AsInt <= 100 then
  begin
    aSetValue := 0;

    { если выключился ветрогенератор, то включаем мигание
      диода }
    if Wind.AsInt > 100 then
      case vrTime.AsInt of
        0..1: aSetValue := 0;
        2..3: aSetValue := 150;
      end;
  end else
    { если солнечная батарея включена, то включаем диод
      без мигания и прерываем скрипт }
    aSetValue := 150;

  ArduinoSerial0_D3.Value := aSetValue;
end.

Получается следующее:
- когда солн. батарея включена диод будет гореть всегда;
- когда солн. батарея выключена и ветрогенератор включен - диод будет мигать;
- диод будет выключен когда солн. батарея выключена и ветрогенератор выключен.
« Изменён: 26 Апреля 2017, 09:58:09 от Simple-Scada »

VLAD

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Нужна помощь
« Ответ #2 : 29 Апреля 2017, 23:37:20 »
Добрый день. Как побитово прочитать теги с маски модуля дискретных выходов?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Нужна помощь
« Ответ #3 : 01 Мая 2017, 11:01:37 »
Здравствуйте.

Для извлечения битов можно использовать функцию GetBit. С её помощью можно извлечь биты из любой численной переменной. Например у нас есть переменная vrMy с типом данных Integer (целое число), которая читается OPC-сервером из контроллера в скаду. Тогда, для извлечения бита номер 3 (биты считаются с нуля), можно использовать такой скрипт:

Код
var
  aBit: Boolean;
begin
  aBit := GetBit(vrMy.AsInt, 3);  // получаем состояние бита номер 3 (с нуля) из vrMy в локальную переменную aBit.
end.

Некоторые объекты поддерживают автоматическую работу с битами и у них для этого есть отдельное свойство Бит. Например Кнопка, Флажок, Сообщение. Т.е. объект связывается с переменной, в свойство "Бит" вводится номер бита с которым нужно работать и скада сама будет извлекать заданный бит из значения переменной и работать с ним.
« Изменён: 01 Мая 2017, 20:10:15 от Simple-Scada »

VLAD

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Нужна помощь
« Ответ #4 : 01 Мая 2017, 14:38:48 »
Спасибо. Завтра попробую.