Как обратиться к отдельному биту регистра в PMP20?
В PMP20 есть два встречных механизма: обращение к биту внутри регистра и обращение к группе меркеров как к целому слову. Оба записываются прямо в операнде команды, отдельных инструкций упаковки не требуется.
Бит регистра. Запись вида D0.0 означает младший бит регистра D0, D0.15 — старший. Такой операнд подставляется туда, где ожидается бит: контакт, катушка, условие. Это удобно, когда панель оператора или ведущее устройство пишет в один регистр набор флагов, а программе нужен каждый флаг по отдельности.
Слово из битов. Запись вида DM0 означает слово, собранное из меркеров M0…M15, где M0 — младший бит. Аналогично собираются слова из других битовых областей. Механизм нужен для обратной задачи: набор дискретных признаков надо передать одним регистром в панель или по Modbus.
Что учитывать при использовании:
- Границы слова считаются от указанного номера, а не от круглого адреса: DM3 — это M3…M18. Пересечение двух таких слов в одной программе даёт трудноуловимые взаимные помехи.
- Бит регистра и сам регистр — одна и та же память. Если один участок программы пересылает в D0 значение целиком, а другой устанавливает D0.5, порядок выполнения решает всё.
- В командах смещения значение индекса берётся только из регистра D, поэтому битовые операнды с индексом комбинируют осторожно.
Практика простая: под обмен с панелью выделяют отдельные регистры и работают с их битами, а рабочие флаги логики держат в обычных меркерах.
Прикреплённая документация
Георгий Жуков
Ведущий инженер