Показано с 1 по 5 из 5

Тема: Проблемы с СПК107 и ПР200.

  1. #1

    По умолчанию Проблемы с СПК107 и ПР200.

    Добрый день.
    Есть следующая задача: Каждые 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

  2. #2

    По умолчанию

    Код:
    // 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.
    Последний раз редактировалось GoodLuck; 18.06.2020 в 17:24.

  3. #3

    По умолчанию

    Цитата Сообщение от 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.
    При измерении второй АКБ, программа "затыкается", также как и моем варианте. Буду ковырять дальше, но реально пока мыслей здравых нет.

  4. #4

    По умолчанию

    Таймеры fbTimer5s1 определены как TP?
    Если TON, то конечно, опрашивает только 1-ю АКБ.
    Последний раз редактировалось GoodLuck; 19.06.2020 в 09:15.

  5. #5

    По умолчанию

    Цитата Сообщение от GoodLuck Посмотреть сообщение
    Таймеры fbTimer5s1 определены как TP?
    Если TON, то конечно, опрашивает только 1-ю АКБ.
    А ларец действительно легко открывался. Действительно по ошибке объявил их как TON. Был уверен, что в объявлении все правильно и ни разу не перепроверил. А копался только в коде.
    Огромное спасибо за помощь!

Похожие темы

  1. СПК107 ( visualization ) - Проблемы с сенсорной панелью
    от iAHTOH в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 03.02.2021, 12:15
  2. СПК107: проблемы с загрузкой приложения.
    от Роман Королев в разделе СПК1хх
    Ответов: 10
    Последнее сообщение: 06.04.2020, 15:18
  3. Ответов: 5
    Последнее сообщение: 18.12.2019, 10:03
  4. Проблемы Modbus СПК107 и CoolMasterNet
    от ganz72 в разделе СПК1хх
    Ответов: 1
    Последнее сообщение: 07.05.2018, 10:57
  5. СПК107 проблемы с сенсорной панелью
    от Kvazar в разделе Сервисное обслуживание приборов ОВЕН
    Ответов: 5
    Последнее сообщение: 27.11.2015, 12:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •