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