Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Битовая маска

  1. #1

    По умолчанию Битовая маска

    Есть переменная AlarmFlags. Тип данных uint16.
    Требуется создать событие по выставлению битов в переменной AlarmFlags. Например,
    бит 0 равен 1 -> Событие: "авария №1"
    бит 1 равен 1 -> Событие: "авария №2"
    бит 2 равен 1 -> Событие: "авария №3"

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

    С помощью битовой маски можно создать 16 отдельных переменных с булевыми значениями. Но городить столько лишних переменных крайне не хочется.

  2. #2
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    839

    По умолчанию

    AlarmFlags.0=1 >> Событие: "авария №1"
    AlarmFlags.1=1 >> Событие: "авария №2"
    AlarmFlags.2=1 >> Событие: "авария №3"

    Так пробовали?

  3. #3

    По умолчанию

    Попробовал, результат:
    Bad Request (#400): Выражение содержит ошибки.

  4. #4
    Banned
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    6,671

    По умолчанию

    Если правильно понял из предыдущих тем, логические операторы не умеют работать с битами в Овен клауд. Сделали только создание переменных выдергивая биты и только.

  5. #5
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    839

    По умолчанию

    Bad Request (#400)
    Полный текст хотя бы одной строчки можете привести? Интересует синтаксис.

  6. #6

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Полный текст хотя бы одной строчки можете привести? Интересует синтаксис.
    Скрин
    Выражение содержит ошибки.png

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,632

    По умолчанию

    Цитата Сообщение от Lisithea Посмотреть сообщение
    можно попробовать так, умножение это удаление не нужных старших разрядов, деление это удаление младших ненужных разрядов потом сравнение с состоянием требуемого разряда. Авария пришла на скрине видно, хотя я в это и не верил )
    Изображения Изображения
    • Тип файла: png owen.png (102.5 Кб, Просмотров: 22)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  8. #8
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    839

    По умолчанию

    Lisithea
    В КДС правильный синтаксис будет
    IF AlarmFlags.0=true THEN *действие 1*; END_IF;
    Но если уважаемый capzap говорит, что в облаке синтаксис через точку не работает, то значит так оно и есть.
    Ему в этом вопросе я доверяю больше чем себе.

  9. #9
    Banned
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    6,671

    По умолчанию

    capzap непонятна логика. Например пришло число 9 (1001), 3 бит выдерните ?

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,632

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    capzap непонятна логика. Например пришло число 9 (1001), 3 бит выдерните ?
    не проще прочитать как устроены SHR/SHL?
    смещение на один разряд это умножение/деление на 2, поэтому из 15 -3 = 12, два в двенадцатой степени это то число на которое надо умножить, 32766 это с 15 разряда переместить в нулевой. Но скорее всего рабоать не будет потому что в элементах для наборки выражений отсутствует деление по модулю, значит возможно отсутствует ограничение на работу только с 16битными числами и при смещении вправо все единицы находящиеся слева вернуться обратно, это можно проверить в моем варианте если сменить знак больше на равно
    В любом случае создание 16 переменных по битовой маске пока единственный работоспособный вариант
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Битовая маска для MB-110-xxx 16
    от Р.Александр в разделе Среда программирования OWEN Logic
    Ответов: 4
    Последнее сообщение: 14.03.2019, 15:16
  2. Битовая маска
    от Vitorgan в разделе ПЛК1хх
    Ответов: 22
    Последнее сообщение: 25.05.2018, 00:36
  3. Маска значений входов.
    от Вадим2881 в разделе OPC Серверы
    Ответов: 1
    Последнее сообщение: 21.11.2017, 09:31
  4. битовая маска для сми-1
    от Р.Александр в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 08.09.2009, 18:28
  5. Ответов: 7
    Последнее сообщение: 21.04.2008, 08:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •