Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: проблема с первым запуском

  1. #1

    По умолчанию проблема с первым запуском

    Помогите разобраться при первом заходе в этот кусок программы не срабатывает таймер последующая работа выполняется, таймер срабатывает в чем проблема растолкуйте.
    Код:
    (*НЕ СРАБОТАЛ НЕ ОДИН ДАТЧИК *)
    ELSIF NOT ZCPAB_1 AND NOT KTH_2 THEN
    	TRANS :=TRUE;
    	TON_6(IN:=(TON_3.Q OR TON_5.Q) , PT:=T#1.5S , Q=> , ET=> );
    	IF TON_6.Q  THEN
    		IF fn THEN(*флаг направления*)
    			TON_3(IN:=0 , PT:=T#10S , Q=> , ET=> );
    		ELSE
    			TON_5(IN:=0 , PT:=T#10S , Q=> , ET=> );
    		END_IF
    	END_IF
    (*10b10 происходит не правильное переключение???????????????????*)
    	IF NOT TON_3.Q OR NOT TON_5.Q THEN
    		TON_6(IN:= 0, PT:=T#1.5S , Q=> , ET=> );
            	IF fn THEN(*флаг направления*)
    			K_2:=TRUE;
    			TON_3(IN:=K_2 , PT:=T#10S , Q=> , ET=> );
    			IF TON_3.Q THEN
    				K_2:=FALSE;
    				fn:= FALSE;
    			END_IF
    		ELSE
    			K_1:=TRUE;
    			TON_5(IN:=K_1 , PT:=T#10S , Q=> , ET=> );
    			IF TON_5.Q THEN
    				K_1:=FALSE;
    				fn:= TRUE;
    			END_IF
    		END_IF
    	END_IF

  2. #2
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    о каком из таймеров идет речь? у вас их в этом куске кода 3 штуки.

  3. #3

    По умолчанию

    ВСЕ РАБОТЫ с таймерами следует вынеси из if блоков. Сам несколько раз натыкался на эти грабли. таймеры в основной код а внутри блока if анализ .Q переменных.
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  4. #4

    По умолчанию

    о каком из таймеров идет речь?
    TON_6
    таймеры в основной код а внутри блока if анализ .Q переменных.
    Мне TON_6 нужно в определенное время сбрасывать Я что-то не пойму как это сделать.

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

    По умолчанию

    так и вынесите его за If.

  6. #6

    По умолчанию

    Вынес за if не помогло
    Ton_6(in:=(ton_3.q Or Ton_5.q) , Pt:=t#1.5s , Q=> , Et=> );

    Выполняется истина и ложное состояние в этом в этом куске кода при первом запуске , а потом работает нормально подскажите что я делаю не так.
    IF fn THEN(*флаг направления*)
    K_2:=TRUE;
    TON_3(IN:=K_2 , PT:=T#10S , Q=> , ET=> );
    IF TON_3.Q THEN
    K_2:=FALSE;
    fn:= FALSE;
    END_IF
    ELSE
    K_1:=TRUE;
    TON_5(IN:=K_1 , PT:=T#10S , Q=> , ET=> );
    IF TON_5.Q THEN
    K_1:=FALSE;
    fn:= TRUE;
    END_IF
    END_IF

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

    По умолчанию

    Уважаемый bango по куску кода трудно сказать, может ошибка в другой части программы.
    Все же попробуйте убрать и остальные таймеры, а в IF проверяйте только условия и состояния переменных.
    Возможно ошибка в том, что Вы взводите по условию таймер, потом это условие более не проверяется и не происходит вызов следующего условия. У Вас внутри одного условия вызова находятся несколько других условий.
    Попробуйте в режиме эмуляции проверить работу в пошаговом режиме.

  8. #8

  9. #9

    По умолчанию

    Настоящая жесть - начал переписывать без if -
    констатирую - все не правильно. Напишите что должна делать программа
    я напишу в несколько строк. Пока пример что можно было сделать.

    TON_6(IN:=PABOTA AND (TON_3.Q OR TON_5.Q) , PT:=T#1.5S , Q=> , ET=> );
    TON_3(IN:=PABOTA AND TON_6.Q AND fn , PT:=T#10S , Q=> , ET=> );
    TON_5(IN:=PABOTA AND TON_6.Q AND NOT fn, PT:=T#10S , Q=> , ET=> );
    K_2:=((NOT TON_3.Q) OR (NOT TON_5.Q)) AND fn;
    Последний раз редактировалось Малышев Олег; 23.07.2010 в 20:44.
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  10. #10

    По умолчанию

    Если я правильно понял к1 и k2 включаются по таймеру последовательно на 10 секунд - если нужно между ними 1.5 секунды задержки пишем

    VAR
    RS_1: RS;
    RABOTA: BOOL;
    f_trig_k2: F_TRIG;
    f_trig_k1: F_TRIG;
    K2: BOOL;
    TP_K2: TP;
    TON_Wait1_5_1: TON;
    TON_Wait1_5_2: TON;
    K1: BOOL;
    TP_K1: TP;
    END_VAR


    TON_Wait1_5_1(in:=(NOT RS_1.Q1) AND RABOTA AND NOT f_trig_k2.q,pt:=t#1500ms);
    TP_K1(in:=TON_wait1_5_1.q,pt:=t#10s,q=>K1);
    f_trig_k1(CLK:=K1);
    TON_Wait1_5_2(in:=RS_1.Q1 AND RABOTA AND NOT f_trig_k1.q,pt:=t#1500ms);

    TP_K2(in:=TON_wait1_5_2.q,pt:=t#10s,q=>K2);
    f_trig_k2(CLK:=K2);

    RS_1(SET:=f_trig_k1.q,RESET1:=f_trig_k2.q);

    Вроде так -
    можно было бы проще но надо будет думать...
    Последний раз редактировалось Малышев Олег; 23.07.2010 в 20:55.
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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