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

Тема: Работа TP

  1. #1

    По умолчанию Работа TP

    Здравствуйте. Помогите разобраться.
    В приложенном рисунке:
    В цепи 6 сравниваются две величины и, если условие выполняется, вход IN ФБ DELEY1 = true. После этого начинается отсчет времени на выходе ET.
    В цепи 5 сравнивается время PT и ET и когда ET=PT, OK1 = true.
    Цепь 5 работает как МНЕ надо, когда DELEY1.IN в течении отсчета времени не меняется и равен TRUE, или меняется но в момент завершения отсчета времени снова равен TRUE.
    Когда по завершению отсчета DELEY1.IN = FALSE переменная OK1 так и остается FALSE.
    Если в цепи 5 сравнивать (DELAY1.ET+T#1s) и DELAY1.PT, то OK1 принимает TRUE, когда DELAY1.ET=T#9s.
    Сравнивал с помощью EQ - результат тот же.
    Подскажите пожалуйста где ошибка.
    Изображения Изображения
    • Тип файла: gif 2.gif (5.8 Кб, Просмотров: 31)

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

    По умолчанию

    Цитата Сообщение от sleyer Посмотреть сообщение
    Здравствуйте. Помогите разобраться.
    В приложенном рисунке:
    В цепи 6 сравниваются две величины и, если условие выполняется, вход IN ФБ DELEY1 = true. После этого начинается отсчет времени на выходе ET.
    В цепи 5 сравнивается время PT и ET и когда ET=PT, OK1 = true.
    Цепь 5 работает как МНЕ надо, когда DELEY1.IN в течении отсчета времени не меняется и равен TRUE, или меняется но в момент завершения отсчета времени снова равен TRUE.
    Когда по завершению отсчета DELEY1.IN = FALSE переменная OK1 так и остается FALSE.
    Если в цепи 5 сравнивать (DELAY1.ET+T#1s) и DELAY1.PT, то OK1 принимает TRUE, когда DELAY1.ET=T#9s.
    Сравнивал с помощью EQ - результат тот же.
    Подскажите пожалуйста где ошибка.
    А почему ошибка, попробуйте РТ задать T#10s1ms, от одной миллисекунды же неубудет

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А если вам надо получить фиксированный Ok1 через 10с после любого превышения Formpress над Ustavka, можно, например, так :
    TON( IN := TON.IN OR превышение, PT := 10с, Q=>Ok1 );
    Formpress в процессе отсчета ET может быть меньше Ustavka (и это нормально).
    Если я правильно понял, TON.IN:=TRUE запускает отсчет. Как только TON.IN := FALSE, TON.ET сбрасывается на ноль. TON.IN:=TRUE отсчет начинается с нуля.
    TP подходит тем, что не реагирует на свой IN.
    Задача простая:
    После достижения Formpress >=(однократно) Ustavka идет выполнение остальных цепей в течении определенного времени (в частности 10 сек). Затем переход к следующему шагу SFC.

  4. #4

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    А почему ошибка, попробуйте РТ задать T#10s1ms, от одной миллисекунды же неубудет
    Я так понимаю ПЛК просто не успевает сравнить DELEY1.PT и ET,а разу присваивает ET ноль.
    Если ничего не придумаю, так и зделаю
    В Delphi такого не бывает... не привычно.

  5. #5

    По умолчанию

    Извините за упоминание "Delphi". Я смотрю на форуме это больная тема.

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

    По умолчанию

    Цитата Сообщение от sleyer Посмотреть сообщение
    Я так понимаю ПЛК просто не успевает сравнить DELEY1.PT и ET,а разу присваивает ET ноль.
    Если ничего не придумаю, так и зделаю
    В Delphi такого не бывает... не привычно.
    ET и PT сравнивается как в пятой так и в шестой цепи, специфика программирования следущая, что до запуска непосредственно блока ТР значения хранят состояния с прошлого цикла и в пятой цепи равенства нет, в шестой цепи происходит очередная итерация блока ТР, наступает равенство, блок выполнил свою работу, блок может "удалиться" (значение ЕТ обнуляется), при следущем цикле в пятой цепи, равенства уже не будет

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ET и PT сравнивается как в пятой так и в шестой цепи, специфика программирования следущая, что до запуска непосредственно блока ТР значения хранят состояния с прошлого цикла и в пятой цепи равенства нет, в шестой цепи происходит очередная итерация блока ТР, наступает равенство, блок выполнил свою работу, блок может "удалиться" (значение ЕТ обнуляется), при следущем цикле в пятой цепи, равенства уже не будет
    Все очень понятно и доступно. Спасибо.

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    //////////////
    Да, да. Все верно. Я ни хрена не понимаю... Могу все темы так начинать.
    НО, может более полезно будем тратить время на форуме.

    Вы, наверняка, понимаете, может по подробней объясните, что хотели сказать:
    TON.IN - вып."другие цепи"
    TON.Q - выход в другой шаг
    А в рамках SFC еще проще - при "превышении" переход на другой шаг с "другими цепями" и с выходом по "родному" таймеру (10с)

    Спасибо.
    P.S. И я уже понял, что Delphi не причем.

  9. #9

    По умолчанию

    Спасибо за столь развернутый ответ.
    Не совсем понял на счет case. Читал в книге Петрова "Программируемые контроллеры" раздел SFC. Пробовал альтернативные ветви делать с разными условиями входа, переходы на произвольный шаг, параллельные ветви - ничего не получается (у меня).
    В итоге получил следующее:
    Init->
    Step0 (FBD)
    цепь 1
    цепь 2
    ....
    цепь 10
    цепь 11 (PID-регулятор);
    цепь 12 (if Press>=Ustavka then trans0:=true)
    trans0->
    Step1
    скопировал из Step0 цепи 1-11, а вместо цепи 12:
    ton(in:=true, pt := 10s);
    trans1 := ton.q;
    trans1-> init
    Коряво конечно, но ума на большее пока не хватает.

  10. #10

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    цепи 1..11 - и в Step0 и в Step1. Зачем тогда куда-то переходить ?
    Если я в step0 цепь 12 (if Press>=Ustavka then trans0:=true) изменю на
    if Press>=Ustavka then ton(in:=true,PT:=10s),
    то когда (Press>=Ustavka) становится FALSE отсчет времени в ton.et останавливается, (Press>=Ustavka) становится TRUE - продолжается. А мне нужно, чтобы отсчет не останавливался, даже если (Press>=Ustavka) становится FALSE.
    Есть идеи?

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

Похожие темы

  1. неустойчивая работа пм-01 на Rs-485
    от Elka в разделе Эксплуатация
    Ответов: 27
    Последнее сообщение: 27.03.2012, 12:47
  2. Работа OPC
    от Georgiy в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 28.06.2011, 07:13
  3. работа с таймерами в Sfc -
    от SCF в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 27.07.2010, 14:59
  4. работа Mva 8
    от ооо в разделе Помощь Разработчикам
    Ответов: 4
    Последнее сообщение: 01.12.2009, 23:38
  5. плк-150 работа с трм-138
    от DEN в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 04.05.2007, 11:19

Ваши права

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