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

ScadaPack 357. Как изменить N-ый бит регистра?

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

Модератор: Специалисты SE

Ответить

Автор темы
loshooligans
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 17 окт 2023, 13:51
Имя: Беликов Петр
Страна: Россия
город/регион: Элиста

ScadaPack 357. Как изменить N-ый бит регистра?

Сообщение loshooligans »

Доброго всем!
Новичок в программировании в LD на ScadaPack.
Контроллер получает слово (16 бит) со слейв устройства - его состояние - и записывает в регистр (пусть будет 48300). Стоит задача изменить N-ый бит (например, 2-ой) этого регистра контроллера. Не спрашивайте для чего это нужно )) Подскажите, как это можно реализовать?

ogorsv
завсегдатай
завсегдатай
Сообщения: 578
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 121 раз
Поблагодарили: 103 раза

ScadaPack 357. Как изменить N-ый бит регистра?

Сообщение ogorsv »

Доброго!
1. ScadaPack использует не LD, а RLL - похоже, но не одно и то же
2. Не во всех средах существует прямой доступ к битам.
В этом случае помогает знание булевой алгебры и использование операторов AND и OR для сложения с маской
Попробуйте для установки бита 2 (начинается с нулевого, этот будет третий по счёту) использовать OR с маской 4 (0000 0000 0000 0100)
Для сброса 2 бита попробуйте использовать AND с маской, где все единицы, а на нужном месте ноль (1111 1111 1111 1011)
СВ
Ответить

Вернуться в «ПЛК»