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


Ответить с цитированием
