PDA

Просмотр полной версии : Индексирование системных переменных



Назаров Александр
17.03.2009, 18:16
Уважаемые господа! Есть ли возможность присваивать имена системных переменных как элемент массива?
Когда много МДВВ и используются запись/чтение по маске, то кожется резонным обращаться с ними, как элементами массива - программы получаются более универсальными и структурированными:)

SergeyNG
17.03.2009, 19:04
А если ,например, вот так:
InReg AT %IW8.1.0.0: ARRAY [1..4] OF WORD;
OutReg AT %QW8.1.4.0: ARRAY [1..4] OF WORD;

Сам раньше делал обращение через указатель, попробовал такую запись, вроде получается для последовательности регистров одного устройства!
Но если создать тип данных в точности повторяющий распределение для нескольких устройств и сделать массив из этого типа данных, то должно получиться для нескольких устройств.

SergeyNG
17.03.2009, 19:36
Не получится в одном типе данных указывать и входные переменные и выходные, они располагаются в памяти не в перемешку, а раздельно. Поэтому если в устройстве есть и входные и выходные переменные придется делать отдельно массив для входных и отдельно для выходных

Филоненко Владислав
17.03.2009, 19:47
1. Создайте массивы указателей на переменные.
2. Проинициализируйте их по адресам переменных мастеров командой ADR()
3. Обращайтесь по индексам массивов.

К сожалению, это не автоматизируешь...

Филоненко Владислав
17.03.2009, 19:48
Альтернативно:
Поименуйте переменные мастеров как var001,var002 и т.д.
И обращайтесь к ним по имени через библиотеку SymLib.lib

Назаров Александр
18.03.2009, 11:30
Спасибо, буду пробовать.