PDA

Просмотр полной версии : Оптические датчики Подключение к ПЛК (MACCB)



Андреей
16.03.2017, 05:00
ОПЕЧАТКА В НАЗВАНИЕ ТЕМЫ (*МАССИВ)

Всем Здравствуйте. :cool:

Прошу помощи у знающих людей есть оптический датчик который должен записывать в массив данных (0 или 1 ) т.е есть ли изделие или оно отсутствует. Как это можно реализовать Пи том что цикл станка бесконечный до его остановки.



IF OnOFF = 1 THEN
IF iOptDAT= 1 THEN
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=1;
ELSE
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=0;
END_IF;
END_IF;


Что то наподобие такого должно получиться )

Проблема в том если делать так то датчик моментально заполняет массив при срабатывании 1 . А надо как то это дело привязать к общему циклу конвейера , те при смещение на 1 позицию конвейера делать одну проверку, на наличия изделия.

И еще хотелось бы услышать совет как массив можно через FOR перезаписывать со сдвигом на 1 значение(т.е по примеру моего кода)

Андреей
16.03.2017, 05:09
Вот сам цикл если поможет.

CODE;
t2;
t3;
t4;
iChek;
iModST;
tT1 :=REAL_TO_TIME(t1*1000);
tT2 :=REAL_TO_TIME(t2*1000);
tT3 :=REAL_TO_TIME(t3*1000);
tT4 :=REAL_TO_TIME(t4*1000);

IF t1>0 THEN
st1:=t1;
st2:=t2;
st3:=t3;
st4:=t4;
END_IF
IF t1=0 THEN
t1:=st1;
t2:=st2;
t3:=st3;
t4:=st4;
END_IF
mi1.0; (*ERROR STOP*)
mi1.1; (*ENABLE/DISABLE*)
IF (mi1.0 = FALSE) OR ( iChek = 0 )THEN
aStop:=1;
END_IF
IF (mi1.1 = FALSE) OR (iChek = 1) THEN
aStop:=0;
END_IF

bCheckIpPrivod;
IF d01 AND d03 AND d05 = TRUE THEN
bCheckIpPrivod:=TRUE;
END_IF

bCheckIpViduv;
IF (d07 AND d09 AND d11) = TRUE THEN
bCheckIpViduv:=TRUE;
ELSE
bCheckIpViduv:=FALSE;
END_IF

bCheckIpIn;
IF d15 AND d17 AND d19 AND d21
AND d25 AND d26 = TRUE THEN
bCheckIpIn:=TRUE;
ELSE
bCheckIpIn:=FALSE;
END_IF

bCheckIpOut;
IF d28 AND d30 AND d32 AND d34 = TRUE THEN
bCheckIpOut:=TRUE;
ELSE
bCheckIpOut:=FALSE;
END_IF

bCheckStart;
IF bCheckIpPrivod AND bCheckIpIn AND
bCheckIpOut AND bCheckIpViduv = TRUE THEN
bCheckStart:=TRUE;
ELSE
bCheckStart:=FALSE;
END_IF

d22:=mi.0;
d23:=mi.1;
d24:=mi.2;
d25:=mi.3;
d26:=mi.4;
d27:=mi.5;
d28:=mi.6;
d29:=mi.7;
d30:=mi.8;
d31:=mi.9;
d32:=mi.10;
d33:=mi.11;
d34:=mi.12;
d35:=mi.13;
d36:=mi.14;
d37:=mi.15;
mo.0:=R15;
mo.1:=R16;
mo.2:=R17;
mo.3:=R18;
mo.4:=R19;



T:= T#300ms;

IF aStop = 1 THEN
iModIn:= 0;
iModIn1:= 0;
iModIn2:= 0;
iModOut:=0;
iModViduv:=0;
iModPrivod:=1;
R07:=FALSE;
R08:=FALSE;
R09:=FALSE;
R13:=FALSE;
R14:=FALSE;
R15:=FALSE;
CASE iMod OF
0:
tTON1(IN:=FALSE);
iMod:=1;
1:
tTON1(IN:=TRUE,PT:=T#400MS);
IF tTON1.Q = TRUE THEN
R04:=FALSE;
R05:=FALSE;
R06:=FALSE;
R10:=FALSE;
R11:=FALSE;
R12:=FALSE;
R16:=FALSE;
iMod:=2;
END_IF
2:
tTON1(IN:=FALSE); iMod:=3;
3: IF R06 = FALSE AND d11 = TRUE THEN
tTON1(IN:=TRUE,PT:=T#700MS);
IF tTON1.Q = TRUE THEN
R03:=FALSE;
R17:=FALSE;
R19:=FALSE;
iMod:=4;
END_IF
END_IF
4:
tTON1(IN:=FALSE); iMod:=5;
5:
tTON1(IN:=TRUE,PT:=T#400MS);
IF tTON1.Q = TRUE THEN
R01:=FALSE;
R02:=FALSE;
R18:=FALSE;
iMod:=6;
END_IF
6:
tTON1(IN:=FALSE);
END_CASE
END_IF

IF aStop = 0 THEN
iMod:=0;
END_IF

CASE iModPrivod OF
1:
IF (aStop=0 ) AND (bCheckStart = TRUE AND iChek = 1) THEN
iModPrivod:=2;
END_IF
2:
IF mi1.1 = TRUE THEN
iModPrivod:=3;
END_IF
3:
R01:=TRUE;
IF R01 = TRUE THEN iModPrivod:=4; END_IF
4:
IF d02 = TRUE AND d01 = FALSE THEN
R02:= TRUE;
IF R02=TRUE THEN iModPrivod:=5; END_IF
END_IF
5 :
IF d04 = TRUE AND d03 = FALSE THEN
R03:= TRUE;
IF R03=TRUE THEN
iModViduv:=1;
iModOut:=1;
iModIn :=1;
R01:=FALSE;
iModPrivod:=6;
END_IF
END_IF
6 :
IF R01 = FALSE AND d01 = TRUE THEN
R02:=FALSE;
END_IF
7 :
R03:=FALSE;
iModPrivod:=1;
END_CASE

CASE iModViduv OF
1:
IF d06 = TRUE THEN
R04:=TRUE;
IF R04 = TRUE AND d08 = TRUE AND d07 = FALSE THEN
iModViduv:=2;
END_IF
END_IF
2:
IF R04 = TRUE AND d08 = TRUE THEN
R05:=TRUE;
IF R05 = TRUE AND d10 = TRUE AND d09 = FALSE THEN
iModViduv:=3;
tTON1_1 (IN := FALSE);
END_IF
END_IF
3:

tTON1_1 (IN := TRUE, PT:= tT1+tT2+tT3+tT4+T#1s);
IF tTON1_1.ET >= T#0s THEN R06:=TRUE; END_IF
IF tTON1_1.ET >= tT1 AND iModST =1 THEN R07:=TRUE; END_IF
IF tTON1_1.ET >= tT2+tT1 AND iModST =1 THEN R08:=TRUE; END_IF
IF tTON1_1.ET >= tT1+tT2+tT3 THEN
R07:=FALSE;
R08:=FALSE;
IF tTON1_1.ET >= tT1+tT2+tT3+tT4 THEN
R06:=FALSE;
END_IF
IF R06 = FALSE THEN
tTON1_1 (in:=FALSE);
iModViduv:=4;
END_IF
END_IF
4:
R05:=FALSE;
IF R05 = FALSE AND d09 = TRUE THEN
R04:=FALSE;
iModViduv:=5;
END_IF
5:
IF d11 AND d07 = TRUE AND d08=FALSE THEN
iModPrivod:=7;
iModViduv:=0;
END_IF
END_CASE

CASE iModOut OF
1:
IF d06 = TRUE THEN
R19:=TRUE;
IF R19 = TRUE AND d35 = TRUE AND d34 = FALSE THEN
iModOut:=2;
END_IF
END_IF
2:
R16:=TRUE;
IF R16 = TRUE AND d29 = TRUE AND d28 = FALSE THEN
iModOut:=3;
END_IF
3:
R17:=TRUE;
IF R17 = TRUE AND d31 = TRUE AND d30 = FALSE THEN
iModOut:=4;
END_IF

4:
R18:=TRUE;
IF R18 = TRUE AND d33 = TRUE AND d32 = FALSE THEN
iModOut:=5;
END_IF;
5:
R19:=FALSE;
IF R19 = FALSE AND d34 = TRUE AND d35 = FALSE THEN
R16:=FALSE;
IF R16 = FALSE AND d28 = TRUE AND d29 = FALSE THEN
R17:=FALSE;
R18:=FALSE;
IF R17=FALSE AND R18=FALSE THEN
iModOut:=0;
END_IF
END_IF
END_IF
END_CASE

CASE iModIn OF
1:
IF d06 = TRUE THEN
R09:=TRUE;
IF R09 = TRUE AND d16 = TRUE AND d15 = FALSE THEN
iModIn:=2;
END_IF
END_IF
2:
R10:=TRUE;
IF R10 = TRUE AND d17=FALSE AND d18=TRUE THEN
iModIn:=3;
END_IF
3:
R11:=TRUE;
R14:=TRUE;
IF R11=TRUE AND R14=TRUE AND d24=TRUE AND d20=TRUE THEN
iModIn1:=1;
iModIn2:=1;
iModIn:=0;
END_IF
END_CASE

CASE iModIn1 OF
1:
IF R11= TRUE AND d20=TRUE THEN
R12:=TRUE;
IF R12=TRUE AND d21=FALSE AND d22=TRUE THEN
iModIn1:=2;
END_IF
END_IF
2:
R10:=FALSE;
IF R10= FALSE AND d17=TRUE AND d18=FALSE THEN
iModIn1:=3;
END_IF
3:
R15:=TRUE;
IF R15=TRUE AND d26=FALSE AND d27=TRUE THEN
iModIn1:=4;
END_IF
4:
R09:=FALSE;
IF R09=FALSE AND d16=FALSE AND d15=TRUE THEN
iModIn1:=5;
END_IF
5:
R15:=FALSE;
IF R15=FALSE AND d27=FALSE AND d26=TRUE THEN
iModIn1:=6;
END_IF
6:
R12:=FALSE;
IF R12=FALSE AND d22=FALSE AND d21=TRUE THEN
iModIn1:=7;
END_IF
7:
R11:=FALSE;
IF R11=FALSE AND d20=FALSE AND d19=TRUE THEN
iModIn1:=8;
END_IF
8:
iModIn1:=0;
END_CASE

CASE iModIn2 OF
1:
R14:=TRUE;
IF R14= TRUE AND d24=TRUE THEN
iModIn2:=2;
END_IF
2:
R13:=TRUE;
IF R13=TRUE AND d23=TRUE THEN
iModIn2:=3;
END_IF
3:
R14:=FALSE;
R13:=FALSE;
iModIn2:=0;
END_CASE

Crusash
16.03.2017, 14:50
Проблема в том если делать так то датчик моментально заполняет массив при срабатывании 1 . А надо как то это дело привязать к общему циклу конвейера , те при смещение на 1 позицию конвейера делать одну проверку, на наличия изделия.
(т.е по примеру моего кода)

контролируйте шаг конвеера, например так



IF OnOFF = 1 THEN
IF NOT(Shag=Last_Shag) THEN
Last_Shag:=Shag;
IF iOptDAT= 1 THEN
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=1;
ELSE
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=0;
END_IF;
END_IF;
END_IF;

Андреей
17.03.2017, 04:22
Спасибо, но пока ждал ответа уже разобрался )) ща опять ретайн переменные перестали сохраняться ищу в чем может быть проблема. (

lara197a
17.03.2017, 08:03
для сдвига нужно сделать массив в массив из 2х переменных
номер и значение.
в цикле фор в каждом такте сначала делаете смещение н раз,
где н- номер,
а потом присвоение значения датчика.

Андреей
17.03.2017, 11:56
Выражаю всем большую благодарность:cool:.

Все было решено ,коне что не без "костылей" и очередного четырех колесного велосипеда :) . Но поставленная задача выполнена.
Осталось совсем не много привести код в порядок )


VAR_GLOBAL RETAIN
tT1,tT2,tT3,tT4:TIME;
st1,st2,st3,st4:REAL;
END_VAR
PROGRAM PLC_PRG
VAR
R15,R16,R17,R18,R19 :BOOL;
aStop:INT:=1;
iMod:INT:=0;
iModIn : INT := 0;
iModIn1 : INT := 0;
iModIn2 : INT := 0;
iModOut:INT:=0;
iModViduv : INT:=0;
iModPrivod: INT:=1;
bCheckStart : BOOL :=FALSE;
tTON1,tTON1_1: TON ;
d22: BOOL :=FALSE;d23: BOOL :=FALSE;d24: BOOL :=FALSE;d25: BOOL :=FALSE;
d26: BOOL :=FALSE;d27: BOOL :=FALSE;d28: BOOL :=FALSE;d29: BOOL :=FALSE;d30: BOOL :=FALSE;
d31: BOOL :=FALSE;d32: BOOL :=FALSE;d33: BOOL :=FALSE;d34: BOOL :=FALSE;d35: BOOL :=FALSE;
T:TIME;
bCheckIpPrivod: BOOL;
bCheckIpOut: BOOL;
bCheckIpViduv: BOOL;
bCheckIpIn: BOOL;
ObDNI: INT:=1;
arr: ARRAY [1..15] OF INT:=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
d36: BOOL;
END_VAR

t1;
t2;
t3;
t4;
iChek;
iModST;
tT1 :=REAL_TO_TIME(t1*1000);
tT2 :=REAL_TO_TIME(t2*1000);
tT3 :=REAL_TO_TIME(t3*1000);
tT4 :=REAL_TO_TIME(t4*1000);
IF t1=0 THEN
t1:=st1;
t2:=st2;
t3:=st3;
t4:=st4;
END_IF
IF t1>0 THEN
st1:=t1;
st2:=t2;
st3:=t3;
st4:=t4;
END_IF

mi1.0; (*ERROR STOP*)
mi1.1; (*ENABLE/DISABLE*)
IF (mi1.0 = FALSE) OR ( iChek = 0 )THEN
aStop:=1;
END_IF
IF (mi1.1 = FALSE) OR (iChek = 1) THEN
aStop:=0;
END_IF

bCheckIpPrivod;
IF d01 AND d03 AND d05 = TRUE THEN
bCheckIpPrivod:=TRUE;
END_IF

bCheckIpViduv;
IF (d07 AND d09 AND d11) = TRUE THEN
bCheckIpViduv:=TRUE;
ELSE
bCheckIpViduv:=FALSE;
END_IF

bCheckIpIn;
IF d15 AND d17 AND d19 AND d21
AND d25 AND d26 = TRUE THEN
bCheckIpIn:=TRUE;
ELSE
bCheckIpIn:=FALSE;
END_IF

bCheckIpOut;
IF d28 AND d30 AND d32 AND d34 = TRUE THEN
bCheckIpOut:=TRUE;
ELSE
bCheckIpOut:=FALSE;
END_IF

bCheckStart;
IF bCheckIpPrivod AND bCheckIpIn AND
bCheckIpOut AND bCheckIpViduv = TRUE THEN
bCheckStart:=TRUE;
ELSE
bCheckStart:=FALSE;
END_IF

d22:=mi.0;
d23:=mi.1;
d24:=mi.2;
d25:=mi.3;
d26:=mi.4;
d27:=mi.5;
d28:=mi.6;
d29:=mi.7;
d30:=mi.8;
d31:=mi.9;
d32:=mi.10;
d33:=mi.11;
d34:=mi.12;
d35:=mi.13;
d36:=mi.14;
mo.0:=R15;
mo.1:=R16;
mo.2:=R17;
mo.3:=R18;
mo.4:=R19;

T:= T#300ms;
CASE ObDNI OF
1:
IF R02=TRUE THEN
ObDNI:=2;
END_IF
2:
IF R02 = FALSE THEN ObDNI:=3; END_IF
3:
IF R02 = FALSE THEN
IF d36 = TRUE THEN
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=arr[6];
arr[6]:=arr[7];
arr[7]:=arr[8];
arr[8]:=arr[9];
arr[9]:=arr[10];
arr[10]:=arr[11];
arr[11]:=arr[12];
arr[12]:=arr[13];
arr[13]:=arr[14];
arr[14]:=arr[15];
arr[15]:=1;
ELSE
arr[1]:=arr[2];
arr[2]:=arr[3];
arr[3]:=arr[4];
arr[4]:=arr[5];
arr[5]:=arr[6];
arr[6]:=arr[7];
arr[7]:=arr[8];
arr[8]:=arr[9];
arr[9]:=arr[10];
arr[10]:=arr[11];
arr[11]:=arr[12];
arr[12]:=arr[13];
arr[13]:=arr[14];
arr[14]:=arr[15];
arr[15]:=0;

END_IF;
END_IF
ObDNI:=1;
END_CASE
IF aStop = 1 THEN
iModIn:= 0;
iModIn1:= 0;
iModIn2:= 0;
iModOut:=0;
iModViduv:=0;
iModPrivod:=1;
iModST:=0;
R07:=FALSE;
R08:=FALSE;
R09:=FALSE;
R13:=FALSE;
R14:=FALSE;
R15:=FALSE;
CASE iMod OF
0:
tTON1(IN:=FALSE);
iMod:=1;
1:
tTON1(IN:=TRUE,PT:=T#400MS);
IF tTON1.Q = TRUE THEN
R04:=FALSE;
R05:=FALSE;
R06:=FALSE;
R10:=FALSE;
R11:=FALSE;
R12:=FALSE;
R16:=FALSE;
iMod:=2;
END_IF
2:
tTON1(IN:=FALSE); iMod:=3;
3: IF R06 = FALSE AND d11 = TRUE THEN
tTON1(IN:=TRUE,PT:=T#700MS);
IF tTON1.Q = TRUE THEN
R03:=FALSE;
R17:=FALSE;
R19:=FALSE;
iMod:=4;
END_IF
END_IF
4:
tTON1(IN:=FALSE); iMod:=5;
5:
tTON1(IN:=TRUE,PT:=T#400MS);
IF tTON1.Q = TRUE THEN
R01:=FALSE;
R02:=FALSE;
R18:=FALSE;
iMod:=6;
END_IF
6:
tTON1(IN:=FALSE);
END_CASE
END_IF

IF aStop = 0 THEN
iMod:=0;
END_IF

CASE iModPrivod OF
1:
IF (aStop=0 ) AND (bCheckStart = TRUE AND iChek = 1) THEN
iModPrivod:=2;
END_IF
2:
IF mi1.1 = TRUE THEN
iModPrivod:=3;
END_IF
3:
R01:=TRUE;
IF R01 = TRUE THEN iModPrivod:=4; END_IF
4:
IF d02 = TRUE AND d01 = FALSE THEN
R02:= TRUE;
IF R02=TRUE THEN iModPrivod:=5; END_IF
END_IF
5 :
IF d04 = TRUE AND d03 = FALSE THEN
R03:= TRUE;
IF R03=TRUE THEN
iModViduv:=1;
iModOut:=1;
iModIn :=1;
R01:=FALSE;
iModPrivod:=6;
END_IF
END_IF
6 :
IF R01 = FALSE AND d01 = TRUE THEN
R02:=FALSE;
END_IF
7 :
R03:=FALSE;
iModPrivod:=1;
END_CASE

CASE iModViduv OF
1:
IF d06 = TRUE THEN
R04:=TRUE;
IF R04 = TRUE AND d08 = TRUE AND d07 = FALSE THEN
iModViduv:=2;
END_IF
END_IF
2:
IF R04 = TRUE AND d08 = TRUE THEN
R05:=TRUE;
IF R05 = TRUE AND d10 = TRUE AND d09 = FALSE THEN
iModViduv:=3;
tTON1_1 (IN := FALSE);
END_IF
END_IF
3:

tTON1_1 (IN := TRUE, PT:= tT1+tT2+tT3+tT4+T#1s);
IF tTON1_1.ET >= T#0s THEN R06:=TRUE; END_IF
IF tTON1_1.ET >= tT1 AND iModST =1 AND arr[1]=1 THEN R07:=TRUE; END_IF
IF tTON1_1.ET >= tT2+tT1 AND iModST =1AND arr[1]=1THEN R08:=TRUE; END_IF
IF tTON1_1.ET >= tT1+tT2+tT3 THEN
R07:=FALSE;
R08:=FALSE;
IF tTON1_1.ET >= tT1+tT2+tT3+tT4 THEN
R06:=FALSE;
END_IF
IF R06 = FALSE THEN
tTON1_1 (in:=FALSE);
iModViduv:=4;
END_IF
END_IF
4:
R05:=FALSE;
IF R05 = FALSE AND d09 = TRUE THEN
R04:=FALSE;
iModViduv:=5;
END_IF
5:
IF d11 AND d07 = TRUE AND d08=FALSE THEN
iModPrivod:=7;
iModViduv:=0;
END_IF
END_CASE

CASE iModOut OF
1:
IF d06 = TRUE THEN
R19:=TRUE;
IF R19 = TRUE AND d35 = TRUE AND d34 = FALSE THEN
iModOut:=2;
END_IF
END_IF
2:
R16:=TRUE;
IF R16 = TRUE AND d29 = TRUE AND d28 = FALSE THEN
iModOut:=3;
END_IF
3:
R17:=TRUE;
IF R17 = TRUE AND d31 = TRUE AND d30 = FALSE THEN
iModOut:=4;
END_IF

4:
R18:=TRUE;
IF R18 = TRUE AND d33 = TRUE AND d32 = FALSE THEN
iModOut:=5;
END_IF;
5:
R19:=FALSE;
IF R19 = FALSE AND d34 = TRUE AND d35 = FALSE THEN
R16:=FALSE;
IF R16 = FALSE AND d28 = TRUE AND d29 = FALSE THEN
R17:=FALSE;
R18:=FALSE;
IF R17=FALSE AND R18=FALSE THEN
iModOut:=0;
END_IF
END_IF
END_IF
END_CASE

CASE iModIn OF
1:
IF d06 = TRUE THEN
R09:=TRUE;
IF R09 = TRUE AND d16 = TRUE AND d15 = FALSE THEN
iModIn:=2;
END_IF
END_IF
2:
R10:=TRUE;
IF R10 = TRUE AND d17=FALSE AND d18=TRUE THEN
iModIn:=3;
END_IF
3:
R11:=TRUE;
R14:=TRUE;
IF R11=TRUE AND R14=TRUE AND d24=TRUE AND d20=TRUE THEN
iModIn1:=1;
iModIn2:=1;
iModIn:=0;
END_IF
END_CASE

CASE iModIn1 OF
1:
IF R11= TRUE AND d20=TRUE THEN
R12:=TRUE;
IF R12=TRUE AND d21=FALSE AND d22=TRUE THEN
iModIn1:=2;
END_IF
END_IF
2:
R10:=FALSE;
IF R10= FALSE AND d17=TRUE AND d18=FALSE THEN
iModIn1:=3;
END_IF
3:
R15:=TRUE;
IF R15=TRUE AND d26=FALSE AND d27=TRUE THEN
iModIn1:=4;
END_IF
4:
R09:=FALSE;
IF R09=FALSE AND d16=FALSE AND d15=TRUE THEN
iModIn1:=5;
END_IF
5:
R15:=FALSE;
IF R15=FALSE AND d27=FALSE AND d26=TRUE THEN
iModIn1:=6;
END_IF
6:
R12:=FALSE;
IF R12=FALSE AND d22=FALSE AND d21=TRUE THEN
iModIn1:=7;
END_IF
7:
R11:=FALSE;
IF R11=FALSE AND d20=FALSE AND d19=TRUE THEN
iModIn1:=8;
END_IF
8:
iModIn1:=0;
END_CASE

CASE iModIn2 OF
1:
R14:=TRUE;
IF R14= TRUE AND d24=TRUE THEN
iModIn2:=2;
END_IF
2:
R13:=TRUE;
IF R13=TRUE AND d23=TRUE THEN
iModIn2:=3;
END_IF
3:
R14:=FALSE;
R13:=FALSE;
iModIn2:=0;
END_CASE

Crusash
17.03.2017, 12:05
.... ща опять ретайн переменные перестали сохраняться ищу в чем может быть проблема. (

Такое бывает если происходит частые изменения в проекте с размерностями в массиве или его структурой, при этом наблюдается неправильное выделения области энергонезависимых данных, вплоть до его переполнения.
Помогает Проект -> очистить все и компилировать все.

Андреей
17.03.2017, 12:27
Такое бывает если происходит частые изменения в проекте с размерностями в массиве или его структурой, при этом наблюдается неправильное выделения области энергонезависимых данных, вплоть до его переполнения.
Помогает Проект -> очистить все и компилировать все.

Решил проблему иначе . Ретайн переменный не сохраняются на уровне электрики. ( сам цикл сохранение не запускается) .

Так как у меня 2 плк (мастер.слейв{В качестве доп входов выходов}) то просто кишки из слейва в мастер перекинул ( верхнею плату внутри плк ) Все записал по новой и все норм стало работать. в мастере. хотя можно было про сто поменять и плк местами. Но это было бы дольше.

А проблему из за чего не сохраняет ретайн не нашел. аккумулятор внутри еще живой на всяк случай повешал туда кондер на 1000мкф. но не помогло. ((