- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
CCW преобразование WORD
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 64
- Зарегистрирован: 29 авг 2022, 06:28
- Имя: Александр Дубинин
- Страна: Россия
- город/регион: Абинск
- Благодарил (а): 58 раз
- Поблагодарили: 5 раз
CCW преобразование WORD
Всем доброго времени суток. Такой вопрос. Вытягиваю Micro850-ым через Modbus RTU данные типа:
1) 2 значения типа REAL;
2) 3 значения = 3 бита (Бит как состояние/индикация лампочки. Соответственно 3 лампочки) .
CCW складывает принятые данные в массив типа WORD.
Если REAL с WORD все понятно( никакого преобразования делать не надо), то вот с принятыми битами не совсем. (Понятно, что WORD это 16 бит данных. Соответственно вытягиваю один регистр модбаса. (16 бит). Но мне нужно всего 3 бита данных) Я вижу, что принимаю данные, но конкретно какой бит не могу понять. Как сделать преобразование или разложить WORD на биты в CCW? Надеюсь вопрос понятен . Спасибо за ответы.
1) 2 значения типа REAL;
2) 3 значения = 3 бита (Бит как состояние/индикация лампочки. Соответственно 3 лампочки) .
CCW складывает принятые данные в массив типа WORD.
Если REAL с WORD все понятно( никакого преобразования делать не надо), то вот с принятыми битами не совсем. (Понятно, что WORD это 16 бит данных. Соответственно вытягиваю один регистр модбаса. (16 бит). Но мне нужно всего 3 бита данных) Я вижу, что принимаю данные, но конкретно какой бит не могу понять. Как сделать преобразование или разложить WORD на биты в CCW? Надеюсь вопрос понятен . Спасибо за ответы.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
CCW преобразование WORD
С Rockwell не работал. Ищите инструкции/команды для работы с битами в составе Word. Это могут быть сдвиговые операции, а также ANDW, ORW, XORW. В конце концов положить слово в MW1000 и считать отдельные биты как M1000.0-M1001.7.
-
- здесь недавно
- Сообщения: 64
- Зарегистрирован: 29 авг 2022, 06:28
- Имя: Александр Дубинин
- Страна: Россия
- город/регион: Абинск
- Благодарил (а): 58 раз
- Поблагодарили: 5 раз
CCW преобразование WORD
Инструкции для работы с битами есть, но не именно для WORD. Не могли Вы привести пример использования побитового сдвига с WORD. Знаком лишь в теории с этим, на практике не применял. Спасибо.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
CCW преобразование WORD
1. Есть операция побитового "И". Как использовать?
Допустим надо прочесть 4-ый бит из WORD.
Проделываем операцию
1110 1001 1011 1001 ANDW 0000 00000 0000 1000 = 0000 0000 0000 1000
Сравниваем результат с 0000 0000 0000 1000. Если равны, то 4-ый бит установлен (1), иначе сброшен (0).
2. Сдвиговая операция вправо позволяет извлечь все 16 бит.
1110 1001 1011 1001 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0001
Бит 1 = 1
Сдвигаем вправо, получаем
1111 0100 1101 1100
1111 0100 1101 1100 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0000
Бит 2 = 0
Сдвигаем вправо, получаем
0111 1010 0110 1110
0111 1010 0110 1110 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0000
Бит 3 = 0
И так далее.
3. Выше - это все низкоуровневые операции.
Но, например, у Сименса есть такое:
Some_Word.b0 - первый бит слова Some_Word
Допустим надо прочесть 4-ый бит из WORD.
Проделываем операцию
1110 1001 1011 1001 ANDW 0000 00000 0000 1000 = 0000 0000 0000 1000
Сравниваем результат с 0000 0000 0000 1000. Если равны, то 4-ый бит установлен (1), иначе сброшен (0).
2. Сдвиговая операция вправо позволяет извлечь все 16 бит.
1110 1001 1011 1001 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0001
Бит 1 = 1
Сдвигаем вправо, получаем
1111 0100 1101 1100
1111 0100 1101 1100 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0000
Бит 2 = 0
Сдвигаем вправо, получаем
0111 1010 0110 1110
0111 1010 0110 1110 ANDW 0000 00000 0000 0001 = 0000 0000 0000 0000
Бит 3 = 0
И так далее.
3. Выше - это все низкоуровневые операции.
Но, например, у Сименса есть такое:
Some_Word.b0 - первый бит слова Some_Word
-
- здесь недавно
- Сообщения: 64
- Зарегистрирован: 29 авг 2022, 06:28
- Имя: Александр Дубинин
- Страна: Россия
- город/регион: Абинск
- Благодарил (а): 58 раз
- Поблагодарили: 5 раз
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
CCW преобразование WORD
Почему Вы не хотите обращаться сразу к биту в слове?
Зачем всё эти телодвижения с логическими операциями?
По-битная адресация в контроллерах Rockwell никуда не исчезала.
Зачем всё эти телодвижения с логическими операциями?
По-битная адресация в контроллерах Rockwell никуда не исчезала.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 64
- Зарегистрирован: 29 авг 2022, 06:28
- Имя: Александр Дубинин
- Страна: Россия
- город/регион: Абинск
- Благодарил (а): 58 раз
- Поблагодарили: 5 раз
CCW преобразование WORD
Я бы с удовольствием, но пока не пойму, как это сделать... В RSLogix5000 вроде всё понятно, он сам раскладывает на биты, а вот в Connected Components Workbench что-то не очень.
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 май 2020, 06:21
- Имя: Андрей
- Страна: Россия
- город/регион: Новосибирск
- Благодарил (а): 9 раз
- Поблагодарили: 29 раз
CCW преобразование WORD
Вы можете:
1) Попробовать обратиться к битам слова, поставив в конце слова .0 (".1", ".2",".3",...".15");
2) Попробовать использовать инструкцию COP и скопировать слово в INT, тогда у Вас появится раскрывающийся список и Вы сможете вставлять описания к каждому биту (descriptions).
1) Попробовать обратиться к битам слова, поставив в конце слова .0 (".1", ".2",".3",...".15");
2) Попробовать использовать инструкцию COP и скопировать слово в INT, тогда у Вас появится раскрывающийся список и Вы сможете вставлять описания к каждому биту (descriptions).
-
- здесь недавно
- Сообщения: 64
- Зарегистрирован: 29 авг 2022, 06:28
- Имя: Александр Дубинин
- Страна: Россия
- город/регион: Абинск
- Благодарил (а): 58 раз
- Поблагодарили: 5 раз