Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 12 Сентября 2018, 18:28:45
Название: Внутренние и внешние теги
Отправлено: Серега от 12 Сентября 2018, 18:28:45
Добрый день! Возможно тема не для этой ветки. Можно смело переносить. Вопрос следующий. Дано: arOPC. Симуляция. 3 переменные (var1, var2, result : word). Диапазон изменения var1 и var2 0..12. SCADA: те же переменные, объявлены как внешние с привязкой к OPC. Переменная result1 объявлена как внутренняя. Надо: При установке любого бита в переменных var1 и var2 установить соответствующие биты в result либо в 1 либо в 0 согласно правилу. Например var1 принимает значение 210 (102) и var2 принимает 010. Соответственно result должен из значения 1111 1111 1111 11112 принять значение 1111 1111 1111 11012. Простой скрипт (односекудный): begin result1.value := NOT (var1.Value or var2.Value); (так же пробовали и с .AsInt) result.value := NOT (var1.Value or var2.Value); end; Вопросы: 1. result1.value := NOT (var1 or var2); - работает, но есть вопрос №2. result.value := NOT (var1 or var2); - не работает. 2. Все переменные типа word (согласно руководству Word 16 бит Положительные целые числа 0…65535). НО result1 = -1. Почему? Проверьте у себя. Возможно что- то делаю не так. Жду Ваших ответов или вопросов.
Название: Re: Внутренние и внешние теги
Отправлено: Simple-Scada от 13 Сентября 2018, 00:48:39
Здравствуйте.
Нужно явно указывать преобразование, чтобы работа со значениями велась с типом Word. Также у переменной результата нужно задать шкалу от 0 до 65535. Пример кода:
Код: (delphi)
begin vrResult.Value := Word(NOT (var1.AsInt or var2.AsInt)); end.