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




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