Добрый день!
Столкнулся со "странной" работой оператора AND.
Есть ряд переменных.
1 группа - тестовые, заведены в симуляцию в arOPC и скаду. val1 и val2, тип smallint.
2 группа - реальные, из ПЛК, заведены в arOPC и скаду. val1_1 и val2_1, тип smallint.
3 группа - одна переменная для вывода значения функции, summa:longword и одна переменная временная test:smallint.
Есть 1 секундный скрипт. В нем ряд действий.
1-ое. Определение функции и ее вызов.
2-ое. Сложение двух переменных через AND
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-ой группой переменных.
Подскажите что делаю не так?