Цитата Сообщение от GoodLuck Посмотреть сообщение
Код:
// 1-й АКБ
IF bStatusIzmBat = FALSE AND bStatusBat1 = FALSE THEN
		fbTimer5s1(IN := TRUE, PT := T#10S);
		iPermission := 1;
		iBatNumber := 1;
		IF fbTimer5s1.Q  = FALSE AND fbTimer5s1.ET=fbTimer5s1.PT THEN
			rBat1 := INT_TO_REAL(iUBat) / 100;
			bStatusBat1 := TRUE;
			fbTimer5s1(IN := FALSE, PT := T#0S);
		ELSE 
			iUBat := 0;
		END_IF
END_IF

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

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

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

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

// 11-й АКБ
	IF bStatusBat10 = TRUE AND bStatusBat11 = FALSE THEN 
			fbTimer5s11(IN := TRUE, PT := T#10S);
			iBatNumber1 := 11;
			IF fbTimer5s11.Q = FALSE AND fbTimer5s11.ET=fbTimer5s11.PT THEN
				rBat11 := INT_TO_REAL(iUBat) / 100;
				bStatusBat11 := TRUE;
				fbTimer5s11(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
		END_IF
	
// 12-й АКБ
	IF bStatusBat11 = TRUE AND bStatusBat12 = FALSE THEN 
			fbTimer5s12(IN := TRUE, PT := T#10S);
			iBatNumber := 12;
			IF fbTimer5s12.Q = FALSE AND fbTimer5s12.ET=fbTimer5s12.PT THEN
				rBat12 := INT_TO_REAL(iUBat) / 100;
				bStatusBat12 := TRUE;
				fbTimer5s12(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
	END_IF
	
// 13-й АКБ
	IF bStatusBat12 = TRUE AND bStatusBat13 = FALSE THEN 
			fbTimer5s13(IN := TRUE, PT := T#10S);
			iBatNumber1 := 13;
			IF fbTimer5s13.Q = FALSE AND fbTimer5s13.ET=fbTimer5s13.PT THEN
				rBat13 := INT_TO_REAL(iUBat) / 100;
				bStatusBat13 := TRUE;
				fbTimer5s13(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
	END_IF
	
// 14-й АКБ
	IF bStatusBat13 = TRUE AND bStatusBat14 = FALSE THEN 
			fbTimer5s14(IN := TRUE, PT := T#10S);
			iBatNumber1 := 14;
			IF fbTimer5s14.Q = FALSE AND fbTimer5s14.ET=fbTimer5s14.PT THEN
				rBat14 := INT_TO_REAL(iUBat) / 100;
				bStatusBat14 := TRUE;
				fbTimer5s14(IN := FALSE, PT := T#0S);
			ELSE 
				iUBat := 0;
			END_IF
	END_IF
	
// 15-й АКБ
	IF bStatusBat14 = TRUE AND bStatusBat15 = FALSE THEN 
			fbTimer5s15(IN := TRUE, PT := T#10S);
			iBatNumber1 := 15;
			IF fbTimer5s15.Q = FALSE AND fbTimer5s15.ET=fbTimer5s15.PT THEN
				rBat15 := INT_TO_REAL(iUBat) / 100;
				bStatusBat15 := TRUE;
				fbTimer5s15(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
	END_IF
	
// 16-й АКБ
	IF bStatusBat15 = TRUE AND bStatusBat16 = FALSE THEN 
			fbTimer5s16(IN := TRUE, PT := T#10S);
			iBatNumber1 := 16;
			IF fbTimer5s16.Q = FALSE AND fbTimer5s16.ET=fbTimer5s16.PT THEN
				rBat16 := INT_TO_REAL(iUBat) / 100;
				bStatusBat16 := TRUE;
				fbTimer5s16(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
	END_IF
	
// 17-й АКБ
	IF bStatusBat16 = TRUE AND bStatusBat17 = FALSE THEN 
			fbTimer5s17(IN := TRUE, PT := T#10S);
			iBatNumber1 := 17;
			IF fbTimer5s17.Q = FALSE AND fbTimer5s17.ET=fbTimer5s17.PT THEN
				rBat17 := INT_TO_REAL(iUBat) / 100;
				bStatusBat17 := TRUE;
				fbTimer5s17(IN := FALSE, PT := T#0S);
			ELSE
				iUBat := 0;
			END_IF
	END_IF
	
// 18-й АКБ
	IF bStatusBat17 = TRUE AND bStatusBat18 = FALSE THEN 
			fbTimer5s18(IN := TRUE, PT := T#10S);
			iBatNumber1 := 18;
			IF fbTimer5s18.Q = FALSE AND fbTimer5s18.ET=fbTimer5s18.PT THEN
				rBat18 := INT_TO_REAL(iUBat) / 100;
				bStatusBat18 := TRUE;
				fbTimer5s18(IN := FALSE, PT := T#0S);
			ELSE 
				iUBat := 0;
			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;
		fbTimer10m(IN := FALSE, PT := T#0S);
	END_IF	
END_IF
Вообще, для подобного рода задач, лучше использовать CASE.
При измерении второй АКБ, программа "затыкается", также как и моем варианте. Буду ковырять дальше, но реально пока мыслей здравых нет.