Дайте мне адресный индекс, и я оптимизирую проект

14 мая 2020 г.

Адресный индекс — простое решение по оптимизации отображения значений регистров на экране. В данной статье подробно описано, как и зачем использовать адресные регистры. Проект, использующийся в статье, вы можете скачать по ссылке в конце статьи.

Был создан простой проект. В окне №11 «Таблица» представлена таблица регистров с целочисленными значениями:

Но что если мы не можем или не хотим отображать все шесть регистров? Предположим, у нас есть задача отображать по три регистра одновременно. Очевидным решением будет создание двух окон. Но новое окно занимает память проекта и требует дополнительного времени, поэтому более оптимальным решением будет использование адресного индекса.

Адресный индекс — это число, добавляющееся к базовому номеру регистра. Так как это число можно менять, это позволяет динамично изменять отображаемый регистр в рамках одного объекта. Давайте разберемся, как его использовать.

Взглянем на окно №10 «Индекс»:

Рассмотрим параметры числового поля, подписанного как «LW0+IND0»:

При задании адреса выставляем базовый адрес — у первого поля это LW0. Затем кликнем по кнопке «Параметры…» и в открывшемся окне поставим галочку напротив фразы «Индексный регистр». В выпадающем списке выберем используемый индекс для этого объекта — всего можно использовать 32 разных индекса — 16 по 16 бит, 16 по 32 бита. В данном объекте используется Index 0. Теперь к базовому адресу LW0 будет прибавляться значение индексного регистра Index 0, и объект будет ссылаться по получившемуся адресу. Как задать значение индекса? Взглянем на параметры числового поля, подписанного как «Значение индекса»:

Кликнем по кнопке «Параметры…» в поле ввода адреса, и поставим галочку напротив слов «Системная метка». После этого в выпадающем меню найдите LW-9200 — это и будет регистр значения индекса 0. Там же вы найдете регистры для остальных индексов. Сохраните настройки — вот и все! Проект готов к использованию. Запустим его в режиме симуляции и протестируем.

Первым делом зайдем в окно «Таблица» и проставим значения всех шести регистров:

Введем случайный набор чисел, никак не связанных с поп-культурой и таинственными островами.

Теперь вернемся на главное окно и посмотрим на числовые поля. Очевидно, что в них показываются значения регистров LW0, LW1 и LW2:

Наша задача — отобразить регистры LW3, LW4 и LW5. Для этого присвоим регистру индекса необходимую разницу — 3:

Смещение адресов, на которые ссылаются числовые поля, наглядно. Таким образом мы отобразили в два раза больше регистров, не используя новые окна или множество объектов. Для шести регистров это, возможно, излишество, а вот для шестисот данная функция может быть полезна.

Ссылка на скачивание проекта, используемого в статье (скопируйте в окно браузера полностью): ftp://weintek:weintek@avtomatika.nnz.ru/Weintek/Demo/index_example.cmtp