Добрый день.
Есть следующая задача: Каждые 10 минут нужно последовательно измерять напряжение 18 АКБ. Для этого используем СПК107 + ПР200. Программу коммутации для ПР200 реализовал и с ней проблем нет (вручную с панели реле все работает). А вот при управлении ПР200 с сенсорной панели возникают проблемы. На втором реле коммутация "затыкается". Код опроса привожу ниже. Помогите разобраться. Второй день мучаюсь.
Код:
// 1-й АКБ
IF bStatusIzmBat = FALSE AND bStatusBat1 = FALSE THEN
	//IF iPermissionRead = 0 THEN
		fbTimer5s1(IN := TRUE, PT := T#10S);
		iPermission := 1;
		iBatNumber := 1;
		IF fbTimer5s1.Q  = FALSE THEN
			rBat1 := INT_TO_REAL(iUBat) / 100;
		ELSE 
			bStatusBat1 := TRUE;
			iUBat := 0;
		END_IF
	//END_IF

// 2-й АКБ
	IF bStatusBat1 = TRUE AND bStatusBat2 = FALSE THEN
		//IF iPermissionRead = 1 THEN
			fbTimer5s2(IN := TRUE, PT := T#10S);
			iBatNumber := 2;
			IF fbTimer5s2.Q  = FALSE THEN
				rBat2 := INT_TO_REAL(iUBat) / 100;
			ELSE				
			bStatusBat2 := TRUE;
			iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 3-й АКБ
	IF bStatusBat2 = TRUE AND bStatusBat3 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s3(IN := TRUE, PT := T#10S);
			iBatNumber := 3;
			IF fbTimer5s3.Q = FALSE THEN
				rBat3 := INT_TO_REAL(iUBat) / 100;
			ELSE				
				bStatusBat3 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 4-й АКБ
	IF bStatusBat3 = TRUE AND bStatusBat4 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s4(IN := TRUE, PT := T#10S);
			iBatNumber := 4;
			IF fbTimer5s4.Q = FALSE THEN
				rBat4 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat4 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 5-й АКБ
	IF bStatusBat4 =TRUE AND bStatusBat5 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s5(IN := TRUE, PT := T#10S);
			iBatNumber := 5;
			IF fbTimer5s5.Q = FALSE THEN
				rBat5 := INT_TO_REAL(iUBat) / 100;
			ELSE				
				bStatusBat5 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 6-й АКБ
	IF bStatusBat5 = TRUE AND bStatusBat6 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s6(IN := TRUE, PT := T#10S);
			iBatNumber := 6;
			IF fbTimer5s6.Q = FALSE THEN
				rBat6 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat6 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 7-й АКБ
	IF bStatusBat6 = TRUE AND bStatusBat7 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s7(IN := TRUE, PT := T#10S);
			iBatNumber := 7;
			IF fbTimer5s7.Q = FALSE THEN
				rBat7 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat7 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF

// 8-й АКБ
	IF bStatusBat7 = TRUE AND bStatusBat8 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s8(IN := TRUE, PT := T#10S);
			iBatNumber := 8;
			IF fbTimer5s8.Q = FALSE THEN
				rBat8 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat8 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF

// 9-й АКБ
	IF bStatusBat8 = TRUE AND bStatusBat9 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s9(IN := TRUE, PT := T#10S);
			iBatNumber := 9;
			IF fbTimer5s9.Q = FALSE THEN
				rBat9 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat9 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF

// 10-й АКБ
	IF bStatusBat9 = TRUE AND bStatusBat10 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s10(IN := TRUE, PT := T#10S);
			iBatNumber1 := 10;
			IF fbTimer5s10.Q = FALSE THEN
				rBat10 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat10 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF

// 11-й АКБ
	IF bStatusBat10 = TRUE AND bStatusBat11 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s11(IN := TRUE, PT := T#10S);
			iBatNumber1 := 11;
			IF fbTimer5s11.Q = FALSE THEN
				rBat11 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat11 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 12-й АКБ
	IF bStatusBat11 = TRUE AND bStatusBat12 = FALSE THEN 
		//IF iPermissionRead = 1 THEN
			fbTimer5s12(IN := TRUE, PT := T#10S);
			iBatNumber := 12;
			IF fbTimer5s12.Q = FALSE THEN
				rBat12 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat12 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 13-й АКБ
	IF bStatusBat12 = TRUE AND bStatusBat13 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s13(IN := TRUE, PT := T#10S);
			iBatNumber1 := 13;
			IF fbTimer5s13.Q = FALSE THEN
				rBat13 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat13 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 14-й АКБ
	IF bStatusBat13 = TRUE AND bStatusBat14 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s14(IN := TRUE, PT := T#10S);
			iBatNumber1 := 14;
			IF fbTimer5s14.Q = FALSE THEN
				rBat14 := INT_TO_REAL(iUBat) / 100;
			ELSE 
				bStatusBat14 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 15-й АКБ
	IF bStatusBat14 = TRUE AND bStatusBat15 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s15(IN := TRUE, PT := T#10S);
			iBatNumber1 := 15;
			IF fbTimer5s15.Q = FALSE THEN
				rBat15 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat15 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 16-й АКБ
	IF bStatusBat15 = TRUE AND bStatusBat16 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s16(IN := TRUE, PT := T#10S);
			iBatNumber1 := 16;
			IF fbTimer5s16.Q = FALSE THEN
				rBat16 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat16 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 17-й АКБ
	IF bStatusBat16 = TRUE AND bStatusBat17 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s17(IN := TRUE, PT := T#10S);
			iBatNumber1 := 17;
			IF fbTimer5s17.Q = FALSE THEN
				rBat17 := INT_TO_REAL(iUBat) / 100;
			ELSE
				bStatusBat17 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
	
// 18-й АКБ
	IF bStatusBat17 = TRUE AND bStatusBat18 = FALSE THEN 
		//IF iPermissionRead1 = 1 THEN
			fbTimer5s18(IN := TRUE, PT := T#10S);
			iBatNumber1 := 18;
			IF fbTimer5s18.Q = FALSE THEN
				rBat18 := INT_TO_REAL(iUBat) / 100;
			ELSE 
				bStatusBat18 := TRUE;
				iUBat := 0;
			END_IF
		//END_IF
	END_IF
END_IF

IF bStatusBat1 AND bStatusBat2 AND bStatusBat3 AND bStatusBat4 AND bStatusBat5 AND bStatusBat6 AND bStatusBat7 AND
	bStatusBat8 AND bStatusBat9 AND bStatusBat10 AND bStatusBat11 AND bStatusBat12 AND bStatusBat13 AND 
	bStatusBat14 AND bStatusBat15 AND bStatusBat6 AND bStatusBat17 AND bStatusBat18 
THEN
	bStatusIzmBat := TRUE;
	//iPermission := 0;
	fbTimer10m(IN := TRUE, PT := T#10M);
	iBatNumber := 0;
	iBatNumber1 := 0;
	IF fbTimer10m.Q THEN
		bStatusIzmBat := FALSE;
		bStatusBat1 := FALSE;
		bStatusBat2 := FALSE;
		bStatusBat3 := FALSE;
		bStatusBat4 := FALSE;
		bStatusBat5 := FALSE;
		bStatusBat6 := FALSE;
		bStatusBat7 := FALSE;
		bStatusBat8 := FALSE;
		bStatusBat9 := FALSE;
		bStatusBat10 := FALSE;
		bStatusBat11 := FALSE;
		bStatusBat12 := FALSE;
		bStatusBat13 := FALSE;
		bStatusBat14 := FALSE;
		bStatusBat15 := FALSE;
		bStatusBat16 := FALSE;
		bStatusBat17 := FALSE;
		bStatusBat18 := FALSE;
		//iPermission := 1;
	END_IF	
END_IF