Допустим у меня куча входов и выходов как на плк так и на модуля. Они обслуживают установки однотипные. Каждая установка занимает 2 входа и 2 выхода. Я хочу создать массив этих установок и обрабатывать их в массиве. Первое я создаю структуру.

Код:
TYPE SR_ZONE :
STRUCT
	xStart: POINTER TO BOOL;
	xReset: POINTER TO BOOL;
	xTempr: POINTER TO WORD;
	xPV: POINTER TO WORD;
END_STRUCT
END_TYPE
Теперь я объявляю глобальную переменную

Код:
VAR_GLOBAL
    glbZones: ARRAY[1..10] OF SR_ZONE; 
END_VAR
Уже в коде я могу просто сделать код в цикле.

Код:
VAR
    i: INT;
END_VAR

FOR i := 1 TO 10 DO
    IF (glbZones[i].xTempr^ < glbZones[i].xPV^) THEN
        glbZones[i].Start := TRUE;
    END_IF;
END_FOR
Все написано от руки, это не реальный код, а что бы продемонстрировать идею. Так вот что бы это работало, в начале программы на первом запуске нужно сделать карту или привязать значения к входам и выходам. Это получается хорошо с не булевыми переменными.

Код:
glbZones[1].xTempr:= ADR(wTemperZone1);
glbZones[1].xPV:= ADR(wTemperZone1);
glbZones[2].xTempr:= ADR(wTemperZone1);
glbZones[2].xPV:= ADR(wTemperZone1);
Но как назначить переменную типа BOOL что бы потом можно было сделать glbZones[i].Start := TRUE; и выходу назначалось значение?