Цитата Сообщение от Валенок Посмотреть сообщение
Вы уже 2й раз описываете. Напишите сам код. Кто-нибудь и поправит если чего.
VAR
COUNT:ARRAY [1..10] OF INT; (*массив количества опросов каждого модуля из 10*)
COMM_MV110: ARRAY [1..10] OF BOOL; (*массив ошибок связи каждого модуля*)
(*ошибка = FALSE если в регистре LAST ERROR Значение 81 при опросе модуля*)
TEAM_MV110_i: BYTE; (*для каждого модуля своя команда - условное объявление, по факту привязана к адресу UnModDev*)
TMR_TEAM:TP; (*ТАЙМЕР ОПРОСА МОДУЛЯ*)
TIME_TEAM:TIME := T#50ms; (*ВРЕМЯ ОПРОСА МОДУЛЯ*)
END_VAR


IF I < 10 THEN I := I + 1;
IF NOT COMM_MV110[I] THEN COUNT[I] := COUNT[I] + 1;END_IF
IF COUNT[I] <= 3 THEN TMR_TEAM(IN := TRUE, PT := TIME_TEAM);
IF TMR_TEAM.Q THEN TEAM_MV110_i := 255;
ELSE TEAM_MV110_i := 254; TMR_TEAM(IN := FALSE, PT := TIME_TEAM); END_IF
ELSE TEAM_MV110_i := 254; END_IF ELSE I := 0; END_IF

Код набросал очень быстро в блокноте, даже не проверял если честно, но думаю идея должна быть видна. Пока писал понял что можно использовать массивы чем case и такое решение выглядит короче.