Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 02 Октября 2018, 13:51:25

Название: Побитовое AND
Отправлено: Серега от 02 Октября 2018, 13:51:25
Добрый день!
Столкнулся со "странной" работой оператора AND.
Есть ряд переменных.
1 группа - тестовые, заведены в симуляцию в arOPC и скаду. val1 и val2, тип smallint.
2 группа - реальные, из ПЛК, заведены в arOPC и скаду. val1_1 и val2_1, тип smallint.
3 группа - одна переменная для вывода значения функции, summa:longword и одна переменная временная test:smallint.
Есть 1 секундный скрипт. В нем ряд действий.
1-ое. Определение функции и ее вызов.
2-ое. Сложение двух переменных через AND
Код: (delphi)
  function Read (Place:smallint; Ready:smallint):longword;
  var
    PlaceReady := longword;
    medium: integer;
  begin
    medium := Place AND Ready;
    PlaceReady := medium Shl 24;
    if (Ready > 0) AND (Place > 0) then
      Result:= PlaceReady
    else
      Result:= 0;
  end;
begin
  count := count +1;
  if count = 5 then count := 0;
  case count of
    1: summa.value := Read (val1.value, val2.value);
    2: summa.value := Read (val1_1.value, val2_1.value);
  end;
  test.value := val1.value AND val2.value;                           // [b]2-ое[/b]
  test.value := val1_1.value AND val2_1.value;                       // [b]действие[/b]
end.
Вопрос следующий.
2-ое действие работает и с переменными из 1-ой группы и со 2-ой группы
1-ое действие работает только с 1-ой группой переменных.
Подскажите что делаю не так?
Название: Re: Побитовое AND
Отправлено: Серега от 02 Октября 2018, 15:53:59
Ребята зря Вас тревожил.
Данный пример работать будет.
У меня был косяк в определении индексов для case.
Вопрос закрыт.