Как работает косвенная адресация вида D0[D100] в PMP20?

Проверено экспертом Опубликовано: 06.01.2025 2325 просмотров Помогло 95%

Квадратные скобки задают смещение: адрес в скобках складывается с базовым номером. Если D100 = 9, то D0[D100] — это D9, M10[D100] — это M19, а X3[D100] — это X14.

Форматы записи: Dn[Dm], Xn[Dm], Yn[Dm], Mn[Dm]. Смещение может храниться только в регистре D. Для слова из битов работает та же логика: DXn[Dm] означает DX[n+Dm].

Обратите внимание на восьмеричность: X3 со смещением 9 даёт X14, а не X12, потому что входы и выходы считаются восьмерично, а содержимое регистра смещения — десятичное.

Типовые применения:

  • Циклический опрос модулей. Читать первый аналоговый вход модуля расширения №1 (регистр ID с номером 10000) раз в секунду и складывать значения в блок из 50 регистров, начиная с D4000, с наращиванием смещения командой INC.
  • Поочерёдное включение выходов. Один фрагмент программы вместо восьми одинаковых цепей: смещение растёт, включается Y1, Y2, Y3 и так далее.
  • Работа с рецептами. Один и тот же код обращается к разным блокам уставок в зависимости от номера рецепта в регистре смещения.

Контроль выхода за границу лежит на программе: при переполнении смещения включается системный меркер SM410, а номер виноватого регистра смещения оказывается в SD410. Это стоит проверять, если после доработки программы контроллер начал вести себя непредсказуемо.

Прикреплённая документация

Георгий Жуков Георгий Жуков Ведущий инженер

Этот ответ был полезен?

Не нашли ответ?

Инженер сервисной службы ответит на почту. Вопросы, которые повторяются, мы публикуем в базе знаний — без ваших контактов.

Вопрос из раздела Как работает косвенная адресация вида D0[D100] в PMP20?