Дайте мне адресный индекс, и я оптимизирую проект
Адресный индекс — простое решение по оптимизации отображения значений регистров на экране. В данной статье подробно описано, как и зачем использовать адресные регистры. Проект, использующийся в статье, вы можете скачать по ссылке в конце статьи.
Был создан простой проект. В окне №11 «Таблица» представлена таблица регистров с целочисленными значениями:
![](https://weintek.pro//ndnqlezvzhzd/add1aa4c-9464-11ee-b4dd-b13a044120e8/1.jpeg)
Но что если мы не можем или не хотим отображать все шесть регистров? Предположим, у нас есть задача отображать по три регистра одновременно. Очевидным решением будет создание двух окон. Но новое окно занимает память проекта и требует дополнительного времени, поэтому более оптимальным решением будет использование адресного индекса.
Адресный индекс — это число, добавляющееся к базовому номеру регистра. Так как это число можно менять, это позволяет динамично изменять отображаемый регистр в рамках одного объекта. Давайте разберемся, как его использовать.
Взглянем на окно №10 «Индекс»:
![](https://weintek.pro//ndnqlezvzhzd/b7a64262-9464-11ee-92e1-e58bfb06e66d/2.jpeg)
Рассмотрим параметры числового поля, подписанного как «LW0+IND0»:
![](https://weintek.pro//ndnqlezvzhzd/c1768db0-9464-11ee-9635-8368a474a85e/eLUQniXFpO8.jpg)
При задании адреса выставляем базовый адрес — у первого поля это LW0. Затем кликнем по кнопке «Параметры…» и в открывшемся окне поставим галочку напротив фразы «Индексный регистр». В выпадающем списке выберем используемый индекс для этого объекта — всего можно использовать 32 разных индекса — 16 по 16 бит, 16 по 32 бита. В данном объекте используется Index 0. Теперь к базовому адресу LW0 будет прибавляться значение индексного регистра Index 0, и объект будет ссылаться по получившемуся адресу. Как задать значение индекса? Взглянем на параметры числового поля, подписанного как «Значение индекса»:
![](https://weintek.pro//ndnqlezvzhzd/cd27e208-9464-11ee-aa22-3b4470b49adf/s63mWy32NO8.jpg)
Кликнем по кнопке «Параметры…» в поле ввода адреса, и поставим галочку напротив слов «Системная метка». После этого в выпадающем меню найдите LW-9200 — это и будет регистр значения индекса 0. Там же вы найдете регистры для остальных индексов. Сохраните настройки — вот и все! Проект готов к использованию. Запустим его в режиме симуляции и протестируем.
Первым делом зайдем в окно «Таблица» и проставим значения всех шести регистров:
![](https://weintek.pro//ndnqlezvzhzd/dc893990-9464-11ee-978d-1d990e8dd70a/9baYaSvvDs4.jpg)
Теперь вернемся на главное окно и посмотрим на числовые поля. Очевидно, что в них показываются значения регистров LW0, LW1 и LW2:
![](https://weintek.pro//ndnqlezvzhzd/e7306f6c-9464-11ee-a454-83f707d8cfb9/11.jpeg)
Наша задача — отобразить регистры LW3, LW4 и LW5. Для этого присвоим регистру индекса необходимую разницу — 3:
![](https://weintek.pro//ndnqlezvzhzd/f113305a-9464-11ee-92a8-47837cf36c4d/12.jpeg)
Смещение адресов, на которые ссылаются числовые поля, наглядно. Таким образом мы отобразили в два раза больше регистров, не используя новые окна или множество объектов. Для шести регистров это, возможно, излишество, а вот для шестисот данная функция может быть полезна.
Ссылка на скачивание проекта, используемого в статье (скопируйте в окно браузера полностью): ftp://weintek:weintek@avtomatika.nnz.ru/Weintek/Demo/index_example.cmtp