1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

CCW преобразование WORD

Ответить

Автор темы
b3g1nasutp
здесь недавно
здесь недавно
Сообщения: 39
Зарегистрирован: 29 авг 2022, 06:28
Имя: Александр Дубинин
Страна: Россия
город/регион: Абинск
Благодарил (а): 43 раза
Поблагодарили: 2 раза

CCW преобразование WORD

Сообщение b3g1nasutp »

Всем доброго времени суток. Такой вопрос. Вытягиваю Micro850-ым через Modbus RTU данные типа:
1) 2 значения типа REAL;
2) 3 значения = 3 бита (Бит как состояние/индикация лампочки. Соответственно 3 лампочки) .
CCW складывает принятые данные в массив типа WORD.
Если REAL с WORD все понятно( никакого преобразования делать не надо), то вот с принятыми битами не совсем. (Понятно, что WORD это 16 бит данных. Соответственно вытягиваю один регистр модбаса. (16 бит). Но мне нужно всего 3 бита данных) Я вижу, что принимаю данные, но конкретно какой бит не могу понять. Как сделать преобразование или разложить WORD на биты в CCW? Надеюсь вопрос понятен . Спасибо за ответы.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

CCW преобразование WORD

Сообщение Михайло »

С Rockwell не работал. Ищите инструкции/команды для работы с битами в составе Word. Это могут быть сдвиговые операции, а также ANDW, ORW, XORW. В конце концов положить слово в MW1000 и считать отдельные биты как M1000.0-M1001.7.

Автор темы
b3g1nasutp
здесь недавно
здесь недавно
Сообщения: 39
Зарегистрирован: 29 авг 2022, 06:28
Имя: Александр Дубинин
Страна: Россия
город/регион: Абинск
Благодарил (а): 43 раза
Поблагодарили: 2 раза

CCW преобразование WORD

Сообщение b3g1nasutp »

Инструкции для работы с битами есть, но не именно для WORD. Не могли Вы привести пример использования побитового сдвига с WORD. Знаком лишь в теории с этим, на практике не применял. Спасибо.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

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

Автор темы
b3g1nasutp
здесь недавно
здесь недавно
Сообщения: 39
Зарегистрирован: 29 авг 2022, 06:28
Имя: Александр Дубинин
Страна: Россия
город/регион: Абинск
Благодарил (а): 43 раза
Поблагодарили: 2 раза

CCW преобразование WORD

Сообщение b3g1nasutp »

Благодарю,буду разбираться.

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

CCW преобразование WORD

Сообщение Ryzhij »

Почему Вы не хотите обращаться сразу к биту в слове?
Зачем всё эти телодвижения с логическими операциями?
По-битная адресация в контроллерах Rockwell никуда не исчезала.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Автор темы
b3g1nasutp
здесь недавно
здесь недавно
Сообщения: 39
Зарегистрирован: 29 авг 2022, 06:28
Имя: Александр Дубинин
Страна: Россия
город/регион: Абинск
Благодарил (а): 43 раза
Поблагодарили: 2 раза

CCW преобразование WORD

Сообщение b3g1nasutp »

Ryzhij писал(а): 03 мар 2024, 20:34 Почему Вы не хотите обращаться сразу к биту в слове?
Зачем всё эти телодвижения с логическими операциями?
Я бы с удовольствием, но пока не пойму, как это сделать... В RSLogix5000 вроде всё понятно, он сам раскладывает на биты, а вот в Connected Components Workbench что-то не очень.

automaticj
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 12 май 2020, 06:21
Имя: Андрей
Страна: Россия
город/регион: Новосибирск
Благодарил (а): 9 раз
Поблагодарили: 26 раз

CCW преобразование WORD

Сообщение automaticj »

Вы можете:
1) Попробовать обратиться к битам слова, поставив в конце слова .0 (".1", ".2",".3",...".15");
2) Попробовать использовать инструкцию COP и скопировать слово в INT, тогда у Вас появится раскрывающийся список и Вы сможете вставлять описания к каждому биту (descriptions).

Автор темы
b3g1nasutp
здесь недавно
здесь недавно
Сообщения: 39
Зарегистрирован: 29 авг 2022, 06:28
Имя: Александр Дубинин
Страна: Россия
город/регион: Абинск
Благодарил (а): 43 раза
Поблагодарили: 2 раза

CCW преобразование WORD

Сообщение b3g1nasutp »

Спасибо большущее всем!
Ответить

Вернуться в «Общие вопросы»