Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Не работает код, таймер

  1. #11
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,257

    По умолчанию

    ну вот поставте следующим образом и сравните результат
    IF Timer1.Q THEN
    (*что то там, в теле условия, только не переменные таймера*)
    END_IF;
    Timer1(IN:=NOT Timer1.Q, PT:=T#5s);

  2. #12
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от pyonth Посмотреть сообщение
    Подскажите, почему при эмуляции Timer1 досчитывает до конца и дальше эмуляция не идет? Я так подозреваю, потому что нет последующего изменения IN на TRUE, после FALSE. Хотя, может в чем-нибудь другом причина?

    Код:
    PROGRAM PLC_PRG
    VAR
    	Timer1 : TON;
    	Timer2 :TP;
    	T1: BOOL := TRUE;
    	T2: BOOL;
    END_VAR
    Код:
    Timer1(IN:=T1, PT:=T#5s);
    Timer2(IN:=T2, PT:=T#10s);
    IF Timer1.Q THEN
    	T1 := FALSE;
    	T2 := TRUE;
    END_IF
    IF NOT Timer2.Q THEN
    	T1 := TRUE;
    	T2 := FALSE;
    END_IF
    Из-за того, что в вашем коде второе условие выполняется всегда, те переменные, которые вы изменили в первом условии тут же меняются во втором условии до вызова таймеров, в которых они используются.

  3. #13

    По умолчанию

    Заработало как надо! Только скажите, не криво ли это выглядит и стоит ли так делать? Я замечаю, что пока не получается мыслить о процессе кодирования как кодирование конечного автомата. Я правильно понимаю, что за один цикл работы ПЛК входные/выходные переменные меняют значение один раз, а локальные переменные в коде могут меняться несколько раз?

    Код:
    Timer1(IN:=T1, PT:=T#5s);
    Timer2(IN:=T2, PT:=T#10s);
    IF Timer1.Q THEN
    	T1 := FALSE;
    	T2 := TRUE;
    END_IF
    IF NOT Timer2.Q AND NOT inv THEN
    	T1 := TRUE;
    	T2 := FALSE;
    END_IF
    inv := NOT inv;

  4. #14
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от pyonth Посмотреть сообщение
    Заработало как надо! Только скажите, не криво ли это выглядит и стоит ли так делать? Я замечаю, что пока не получается мыслить о процессе кодирования как кодирование конечного автомата.

    Код:
    Timer1(IN:=T1, PT:=T#5s);
    Timer2(IN:=T2, PT:=T#10s);
    IF Timer1.Q THEN
    	T1 := FALSE;
    	T2 := TRUE;
    END_IF
    IF NOT Timer2.Q AND NOT inv THEN
    	T1 := TRUE;
    	T2 := FALSE;
    END_IF
    inv := NOT inv;
    Главное понимать, как это работает.
    Я бы сделал так:
    Код:
    TP1(IN:=TRUE , PT:=T#10s);
    TON1;
    F_TRIG1(CLK:=TP1.Q);
    IF F_TRIG1.Q THEN
    	TON1(IN:=TRUE , PT:=T#5s);
    END_IF
    IF TON1.Q THEN
    	TP1(IN:=FALSE);
    	TON1(IN:=FALSE);
    END_IF
    или так:
    Код:
    TOF1(IN:=FALSE);
    F_TRIG1(CLK:=TP1.Q);
    IF NOT TOF1.Q THEN
    	TP1(IN:=TRUE , PT:=T#10s);
    END_IF
    IF F_TRIG1.Q THEN
    	TP1(IN:=FALSE);
    	TOF1(IN:=TRUE , PT:=T#5s);
    END_IF
    Я правильно понимаю, что за один цикл работы ПЛК входные/выходные переменные меняют значение один раз, а локальные переменные в коде могут меняться несколько раз?
    Правильно.

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,257

    По умолчанию

    Цитата Сообщение от pyonth Посмотреть сообщение
    Заработало как надо! Только скажите, не криво ли это выглядит и стоит ли так делать? Я замечаю, что пока не получается мыслить о процессе кодирования как кодирование конечного автомата. Я правильно понимаю, что за один цикл работы ПЛК входные/выходные переменные меняют значение один раз, а локальные переменные в коде могут меняться несколько раз?

    Код:
    Timer1(IN:=T1, PT:=T#5s);
    Timer2(IN:=T2, PT:=T#10s);
    IF Timer1.Q THEN
    	T1 := FALSE;
    	T2 := TRUE;
    END_IF
    IF NOT Timer2.Q AND NOT inv THEN
    	T1 := TRUE;
    	T2 := FALSE;
    END_IF
    inv := NOT inv;
    прочтите назначение ПОУ BLINK, возможно он заменит Ваш код

  6. #16

    По умолчанию

    А могли бы вы мне дать посильное, небольшое и интересное задание, чтобы попрактиковаться в программировании на ST? Был бы очень признателен.

  7. #17
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,257

    По умолчанию

    Цитата Сообщение от pyonth Посмотреть сообщение
    А могли бы вы мне дать посильное, небольшое и интересное задание, чтобы попрактиковаться в программировании на ST? Был бы очень признателен.
    светофор собирите

  8. #18

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    светофор собирите
    В принципе можно ведь написать на ST, а потом переменные к визуализации привязать?

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. ТРМ-501 - не срабатывает таймер.
    от Kolt в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 18.08.2014, 11:21
  2. Не работает таймер автоматической перезагрузки ПМ01
    от Александр85 в разделе Эксплуатация
    Ответов: 12
    Последнее сообщение: 07.02.2013, 11:46
  3. Не работает Pid_Function
    от Игор100 в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 05.05.2010, 10:25
  4. не работает 2-я Pou
    от Дитрих в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 15.01.2009, 09:54
  5. не работает сеть
    от Георгий в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 17.12.2008, 16:37

Ваши права

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