Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 29

Тема: St программирование

  1. #11

    По умолчанию

    подскажите как удобней реализовать условие и цикл, т.е. если да, то делаем это, если нет то возвращаемся к такому-то шагу..?

  2. #12

    По умолчанию

    более подробно про шаги и делаем это.. может вам вообще легче в Sfc писать если программа четко бьется на кускию

  3. #13

    По умолчанию

    попробую, а как в st реализовать следующее...
    если а=0 и в=0 то делаем это если нет то делаем другое...еще как в ст организовывется последовательность выполнения инструкции, т.е. если а=0 и в=1 то включаем таймер и только после таймера должно х присваеваться значение x:=true?

  4. #14

    По умолчанию

    1. Сложное условие так и пишется
    if a=0 and b=0 then
    ...
    else
    ...
    end_If;

    А есть еще и elsif...
    Почитайте справку и мануал по ST - там описано.
    2. Если нужно ввести таймер - то по условию запускаете таймер.
    if a=0 then
    timer1(в зависимоти от таймера, Вам наверное нужно задержки включения или TP)...
    if timer1.q then
    ...
    End_if;

  5. #15

    По умолчанию

    и если есть, то можно пример с Cfc с условиями циклами и.т.п.

  6. #16

    По умолчанию

    может вам к нам на семинар???
    вроде в начале марта планируется... причем расширенный...

  7. #17

    По умолчанию

    я бы с удовольствием, но живу не в москве..(

  8. #18

    По умолчанию

    ELSIF (A=1)AND(B=0) THEN timer1(IN:=GO_AWAY, PT:=T#5S);
    ELSIF TIMER1.Q THEN X:=4;

    это правильная запись..?

  9. #19

    По умолчанию

    Цитата Сообщение от TouchS Посмотреть сообщение
    я бы с удовольствием, но живу не в москве..(
    Ну, тогда приезжайте на семинар в Смоленск

    Для ST есть стандартный 'автоматный' прием. Заводим некую целую переменную, которая выражает состояние системы. По ней делаем большой CASE и программа бьется на кучу мелких состояний, которыми очень легко управлять, программировать и отлаживать. Например, в одном состоянии взвели таймер и переключились на следующее, в нем ждем сработки таймера. Всегда можно проанализировать условия и прыгнуть на нужное состояние, просто путем изменения 1 переменной.

    См. статьи Отладка прикладных ПЛК программ в CoDeSys начиная с часть 2.

    ++ Обратите внимание на оператор SEL и не придется такие сложные IF писать.

    TIMER1.Q может стоять в 1 и раньше. Таймеры МЭК запускаются именно фронтами. Т.е. его надо вызвать раз с 0 на входе, затем еще раз с 1 на входе – тогда он уловит фронт и начнет отсчет.
    Последний раз редактировалось Игорь Петров; 17.02.2010 в 11:57. Причина: TIMER

  10. #20

    По умолчанию

    Function_block Wait
    Var_input
    End_var
    Var_output
    Ok:bool:=false;
    End_var
    Var
    Zab:ton;
    End_var

    -----------------------

    Cal Zab(in:=true)
    Ld T#5s
    St Zab.pt
    Ld Zab.q
    St Ok
    Ret

    подскажите, почему вот это не хочет работать, ошибок нет, но таймер не работает.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Ваши права

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