-
Вложений: 1
Ошибки В кодесис
Проблема в том, что почему то начинают выскакивать некоторые значения, бывает что это даже те значения которые являются в программе константами. Происходит как будто зависание а потом продолжение работы программы. Не могли подсказать в чем могут быть проблемы.
-
скорее всего это ошибки не кодесиса, как такового, а транспорта. При загрузке проекта, и даже маленьких файлов, довольно часто происходят ошибки, а это значит что в качестве транспорта используются UDP-сессии, без подтверждения правильности передачи данных.
-
используется TCP. В чем причина выбросов непонятно. хочется увидеть проект и как получен график
-
Само соединение с контроллером у нас через кабель Ethernet.
В визуализации составляли график строго по инструкции.
Вот сам проект:
FILTER1(IN_VAL:=Temp1, PB:=0.1, TI:=1);
TEMP1_FIL:=FILTER1.OUT_VAL;
FILTER2(IN_VAL:=Temp2, PB:=0.1, TI:=1);
TEMP2_FIL:=FILTER2.OUT_VAL;
IF A=1
THEN
IF B=0
THEN
out_val_ten2:=0;
PID_REG_TEN1(PV:=TEMP1_FIL, PV_TIME:=Time1, SP:=yst_temp, PB:=0.22, Ti_:=8, Td_:=1, _IMIN:=-1, _IMAX:=1);
out_val_ten1:=PID_REG_TEN1.OUT_VAL;
IF C=0
THEN
IF out_val_ten1>0
THEN
Heather:=REAL_TO_WORD(MAX(0, out_val_ten1)*655.35);
cooler:=0;
ELSE
heather:=0;
cooler:=0;
END_IF
ELSE
IF out_val_ten1>0
THEN
Heather:=REAL_TO_WORD(MAX(0, out_val_ten1)*655.35);
cooler:=0;
ELSE
heather:=0;
cooler:=REAL_TO_WORD(MAX(0, out_val_ten1*(-1))*655.35);
END_IF
END_IF
END_IF
ELSE
IF B=1
THEN
out_val_ten1:=0;
PID_REG_TEN2(PV:=TEMP1_FIL, PV_TIME:=Time1, SP:=yst_temp, PB:=0.22, Ti_:=8, Td_:=1, _IMIN:=-1, _IMAX:=1);
out_val_ten2:=PID_REG_TEN2.OUT_VAL;
IF C=0
THEN
IF out_val_ten2>0
THEN
Heather:=REAL_TO_WORD(MAX(0, out_val_ten2)*655.35);
cooler:=0;
ELSE
heather:=0;
cooler:=0;
END_IF
ELSE
IF out_val_ten2>0
THEN
Heather:=REAL_TO_WORD(MAX(0, out_val_ten2)*655.35);
cooler:=0;
ELSE
heather:=0;
cooler:=REAL_TO_WORD(MAX(0, out_val_ten2*(-1))*655.35);
END_IF
END_IF
ELSE
cooler:=0;
heather:=0;
END_IF
END_IF
PSi_koeff:=0.0064;
Davl:=1013.25;
VLAZH(T_Dry:=Temp1_FIL, T_Moist:=Temp2_FIL, A_Koeff:=PSi_koeff, Pressure:= Davl);
Vlazhnostt:=VLAZH.Res;
Oshibka:=VLAZH._err;
IMIN_VL:=-1;
IMAX_VL:=1;
YDOP_VL:=1;
FILTER2(IN_VAL:=vlazhnostt, PB:=0.1, TI:=1);
TEMP2_FIL:=FILTER2.OUT_VAL;
Reg_vlazh(PV:=Vlazhnostt, PV_TIME:=Time2, SP:=yst_vlazh, START_ANR:=START_ANR_VL, YDOP:=YDOP_VL, _IMIN:= IMIN_VL, _IMAX:= IMAX_VL);
out_val_vl:=Reg_vlazh.OUT_VAL;
START_ANR_VL2:=Reg_vlazh.STATE_ANR;
Reg_vlazh.fK0;
Reg_vlazh.fKdKi;
Reg_vlazh.fKi;
(*
REG_VLAZHNOSTI(PV:=Vlazhnostt, PV_TIME:=Time2, SP:=yst_vlazh, PB:=0.22, Ti_:=8, Td_:=1, _IMIN:=-1, _IMAX:=1);
Out_val_vl:=REG_VLAZHNOSTI.OUT_VAL;
*)
IF
START_ANR_VL2=1
THEN
START_ANR_VL:=0;
ELSE
START_ANR_VL:=1;
END_IF
IF
out_val_vl>0
THEN
tim1(IN:=1, PT:=t#2s);
tim2(IN:=0, PT:=t#2s);
D:=tim1.Q;
IF
D=1
THEN
Yvlazhnitel:=REAL_TO_WORD(MAX(0, out_val_vl)*655.35);
END_IF
Osyshitel:=0;
ELSE
tim2(IN:=1, PT:=t#2s);
tim1(IN:=0, PT:=t#2s);
g:=tim2.Q;
IF
g=1
THEN
Osyshitel:=REAL_TO_WORD(MAX(0,out_val_vl*-1)*655.35);
END_IF
Yvlazhnitel:=0;
END_IF
-
Не знаю, может это как-то взаимосвязано, но у нас такие скачки начали появляться после того как у нас перестало соединяться с контроллером по RS-232. Может быть внутри что-то полетело. А произошло это так, мы проверяли работу контроллер на камере, и в одно время у нас пропала связь по RS-232 и мы больше не могли подсоединиться. Решили просто начать соединяться через Ethernet.
-
Выложите проект, а не кусок кода, пожалуйста
-
Мы тоже столкнулись с такой проблеммой, а при анализе выяснилась закономерность, что это не скачки, а данные с соседних входных каналов т.е. происходил "сдвиг данных". Через какое-то время ПЛК-154, перестал программироваться и перепрошиваться, нам посоветовали "в ремонт".
-
А вот у нас после того как начались эти "скачки", перестало соединяться с контроллером по RS-232. И чтобы допрограммировать его, нам пришлось подсоединяться через Ethernet.