Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

iFix и битовые операции

 Ответить Ответить
Автор
Сообщение
Alecsey Смотреть выпадающим
Новичок
Новичок


Присоединился: 23 Март 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 16
Свойства публикации Свойства публикации   Ответить, цитируя автора - Alecsey Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: iFix и битовые операции
    Опубликовано: 06 Апрель 2007 14:46

Пришел в Fix c Genesisa.

Пытаюсь по привычке на полученное значение наложить маску и сравнить с заданным значением.

Например одно из условий раскраски в анимации Genesis выглядит так: x=((Status & 7)==1), что означает что из первых 3 бит установлен только первый...

Можно ли сделать подобное в Fix-е? Документация пока не дала однозначного ответа...

У кого есть опыт, подскажите!

Наверх
HelpFix Смотреть выпадающим
Новичок
Новичок


Присоединился: 06 Апрель 2007
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - HelpFix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Апрель 2007 15:35

А в какой тип  тега вы используете для хранения битов - DI или какой другой?

Наверх
Alecsey Смотреть выпадающим
Новичок
Новичок


Присоединился: 23 Март 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 16
Свойства публикации Свойства публикации   Ответить, цитируя автора - Alecsey Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Апрель 2007 16:06

Тэг берется напрямую с OPC-сервера, минуя базу...

Если бы я делал через базу, то завел бы блок AI.

Слово статуса на которое мне нужно наложить маску и сравнить имеет тип WORD.

Наверх
HelpFix Смотреть выпадающим
Новичок
Новичок


Присоединился: 06 Апрель 2007
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - HelpFix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 07 Апрель 2007 08:03

Просветите (просто никогда с ними не работал) - ваше слово статуса типа WORD - это текстовая величина, представляющая последовательность битов?
Что хранится в этих битах?

Не вижу смысла формировать слово статуса на контроллере,
чтобы затем его разбирать в SCADA (может только из-за ограничений по объему и скорости передачи между
контроллером и SCADA)

Тег типа AI работает с аналоговыми значениями - я думаю он вам не подойдет.
Блок Аналогового ввода отсылает и принимает аналоговые данные от драйвера ввода-вывода или OPC сервера


Посмотрите тип тега DR (дискретный регистр) - и справку по нему...
Вы можете отображать множество точек ввода-вывода с помощью блока Дискретного регистра путем добавления связи Данные в рисунок. Источник, задаваемый для каждой связи, указывает на значение со смещением относительно адреса ввода-вывода этого блока. Вы можете ввести в источники данных значения A_ и F_, в соответствии с требованиями.

Тип DI - в iFix - это лишь одно дискретное значение, например "Сигнализация задвижка - закрыта", соответственно чтобы отобразить этот сигнал в рисунке, необходимо сослаться на поле .F_CV этого тега.
Также и при сохранении в архив HTRDATA этого значения.

А вам сохранение значений битов в архиве HTRDATA не требуется?

 

Наверх
Alecsey Смотреть выпадающим
Новичок
Новичок


Присоединился: 23 Март 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 16
Свойства публикации Свойства публикации   Ответить, цитируя автора - Alecsey Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Апрель 2007 15:57
Первоначально опубликовано HelpFix

Просветите (просто никогда с ними не работал) - ваше слово статуса типа WORD - это текстовая величина, представляющая последовательность битов?
Что хранится в этих битах?

К примеру вентилятор... Слово статуса содержит след.информацию
№бита
0 \
1 -> Состояние Вкл=1, Откл=2, Запускается=3, Останавливается=4
2 /

3\
4-> Режим работы АВТОМАТ=8, РЕЗЕРВ=16, РУЧНОЙ=24, РЕМОНТ=32, 
5/

6 - неисправность
7 - наличие напряжения
8 - наличие давления на выходе


Получая в SCADA одно слово имеем практически полную информацию...
Это удобно и с успехом применяется в Genesis.
Для отображения состояния вентилятора я беру слово состояния накладываю маску = 7 (первые 3 бита)
и далее крашу мнемознак соответствующим значению цветом.
Для отображения режима вентилятора я беру слово состояния накладываю маску = 56 (первые 3,4,5 биты)
и далее пишу текст соответствующий значению.
И т.д.

Fix имеет идеологические отличия, поэтому возникают сложности с накладыванием масок... нет битовых операций

Да, блок DR уже теплее, но если не ошибаюсь он не позволяет записать... к примеру приведенном выше бит9 - режим имитации, нужно менять с верха...

Наверх
HelpFix Смотреть выпадающим
Новичок
Новичок


Присоединился: 06 Апрель 2007
Online Status: Offline
Публикации: 5
Свойства публикации Свойства публикации   Ответить, цитируя автора - HelpFix Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Апрель 2007 15:03

Я для таких случаев завожу на каждый сигнал тег типа DI, который можно дополнительно писать в архив, писать в протокол и выдавать тревожные сообщения.

Может вам тоже пойти по такому пути, т.е. для каждого статусного слова (единицы оборудования) создать несколько тегов типа DI, каждый из которых будет адресоваться к определенному биту слова.

А затем уже анимацией (возможно используя выражения) отображать состояние оборудования.

Например можно использовать такую анимацию...

-------------------------------------

Fix32.Node.DI_01.F_CV - сигнализация Задвижка ОТКРЫТА
Fix32.Node.DI_02.F_CV - сигнализация Задвижка ЗАКРЫТА

----------------------------------------

Выражение для анимации (объект анимации - Таблица)
Fix32.Node.DI_01.F_CV + Fix32.Node.DI_02.F_CV * 2
0 - промежуточное положение
1 - открыта
2 - закрыта
3 - ошибка

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz