Зарегистрирован: Mar 25, 2009 Сообщения: 10 Рейтинг: +0/-0
Добавлено: Вт 12 Янв, 2010 7:18:00 Заголовок сообщения: WinCC, как разложить по битам слово длиной в 32 бита?
Здравствуйте!
Проблема в следующем:
WinCC как OPC клиент получает дискретные сигналы в запакованном виде Unsigned 32-bit value. Как этот тэг разобрать по битам? Чтобы можно было каждый бит(соответсвующее событию или состоянию) в AlarmLogging прописать, и на GraficsDesigner нарисовать?
А вообще стандартная задача, регистровый сдвиг, AND, сравнение результата, например, на 0, и так до конца.
Вот только насчет возможностей именно WinCC, увы, не знаю, что там можно использовать для этого.
P.S. Еще для разнообразия:
Код:
//Возвращает значение бита в целом
function Bit(Value, Index: Integer): Boolean;
asm
bt eax, edx
setc al
and eax, 0FFh
end;
//Устанавливает бит в слове ABit-номер бита
function SetBit(AWord: word; ABit: byte; AState: boolean = true): word;
begin
if AState then
Result := AWord or (1 shl ABit)
else
Result := AWord and (not (1 shl ABit));
end;
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.126 секунды