Доброго всем!
Новичок в программировании в LD на ScadaPack.
Контроллер получает слово (16 бит) со слейв устройства - его состояние - и записывает в регистр (пусть будет 48300). Стоит задача изменить N-ый бит (например, 2-ой) этого регистра контроллера. Не спрашивайте для чего это нужно )) Подскажите, как это можно реализовать?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
ScadaPack 357. Как изменить N-ый бит регистра?
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 17 окт 2023, 13:51
- Имя: Беликов Петр
- Страна: Россия
- город/регион: Элиста
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
ScadaPack 357. Как изменить N-ый бит регистра?
Доброго!
1. ScadaPack использует не LD, а RLL - похоже, но не одно и то же
2. Не во всех средах существует прямой доступ к битам.
В этом случае помогает знание булевой алгебры и использование операторов AND и OR для сложения с маской
Попробуйте для установки бита 2 (начинается с нулевого, этот будет третий по счёту) использовать OR с маской 4 (0000 0000 0000 0100)
Для сброса 2 бита попробуйте использовать AND с маской, где все единицы, а на нужном месте ноль (1111 1111 1111 1011)
1. ScadaPack использует не LD, а RLL - похоже, но не одно и то же
2. Не во всех средах существует прямой доступ к битам.
В этом случае помогает знание булевой алгебры и использование операторов AND и OR для сложения с маской
Попробуйте для установки бита 2 (начинается с нулевого, этот будет третий по счёту) использовать OR с маской 4 (0000 0000 0000 0100)
Для сброса 2 бита попробуйте использовать AND с маской, где все единицы, а на нужном месте ноль (1111 1111 1111 1011)
СВ