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

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

  1. #1

    Post Оптические датчики Подключение к ПЛК (MACCB)


    ОПЕЧАТКА В НАЗВАНИЕ ТЕМЫ (*МАССИВ)

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

    Прошу помощи у знающих людей есть оптический датчик который должен записывать в массив данных (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:35.

  2. #2

    По умолчанию

    Вот сам цикл если поможет.

    1:
    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

  3. #3

    По умолчанию

    Цитата Сообщение от Андреей Посмотреть сообщение
    Проблема в том если делать так то датчик моментально заполняет массив при срабатывании 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;

  4. #4

    По умолчанию

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

  5. #5
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

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

  6. #6

    По умолчанию

    Выражаю всем большую благодарность.

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

    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

  7. #7

    По умолчанию

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

  8. #8

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    Такое бывает если происходит частые изменения в проекте с размерностями в массиве или его структурой, при этом наблюдается неправильное выделения области энергонезависимых данных, вплоть до его переполнения.
    Помогает Проект -> очистить все и компилировать все.
    Решил проблему иначе . Ретайн переменный не сохраняются на уровне электрики. ( сам цикл сохранение не запускается) .

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

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

Похожие темы

  1. датчики Ph и Tds
    от koval.sergei в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 21.10.2009, 20:20
  2. Датчики ВБ2 +СИ8 и датчики ВБ2 в цепях управления
    от ООО Премиум в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 17.09.2008, 06:55
  3. Оптические датчики
    от незарегистрированный в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 20.08.2008, 14:10
  4. Оптические датчики
    от Sniper007 в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 26.02.2008, 15:05

Ваши права

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