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

Тема: Помогите со сбросом пожалуйста!

  1. #1

    По умолчанию Помогите со сбросом пожалуйста!

    Впервые в жизни написал проект. Первый раз программа проходит замечательно, все как надо. После последнего шага возвращается на init. выполняем условие в init и дальше программа начинает прыгать по шагам. Перескакивая или застревая. А мне нужно чтоб было все как в первый раз. Как это сделать? Нашел команду sfcreset/sfcinit как их используют? Помогите пожалуйста на моем примере. А то сроки зажимают За ранее всем благодарен!
    Последний раз редактировалось Artem; 11.04.2009 в 21:50.

  2. #2

    Smile Наверное не самй простой вариант, но точно рабочий

    На мой взгляд необходимо в первом шаге программы просто ввести начальные данные.
    Например:
    blnTemp:=False;
    blnStep7:=False;
    intCounter:=0;
    ..
    короче обнулить те данные который надо (разрешения для перехода на следующий шаг, таймеры, тригеры и тд. и тп.)

    а еще лучше обнулять данные при выходе из каждого шага (меньше путаницы будет). Например: таймер не дождался завершения, а уже надо перейти на следующий шаг, так вот при выходе из этого шага и следует обнулить таймер (на вход подать False и вызвать таймер).

  3. #3

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    На мой взгляд необходимо в первом шаге программы просто ввести начальные данные.
    Например:
    blnTemp:=False;
    blnStep7:=False;
    intCounter:=0;
    ..
    короче обнулить те данные который надо (разрешения для перехода на следующий шаг, таймеры, тригеры и тд. и тп.)
    Извините может быть за глупый вопрос, но в моем примере это хоть где писать?

  4. #4

    По умолчанию

    Например: щелкаем правой кнопкой мыши на шаге «Init». В выпавшем контекстном меню выбираем пункт «Add-Exit Action». Затем выбираем «ST», и пишем например:
    RS2(SET:=FALSE, RESET1:=TRUE);

    Получаем: что когда программа вернётся в шаг «Init» триггер RS2 будет готов к работе с «нуля» и так все таймеры, счетчики, также обнуляем разрешения для перехода на следующие шаги и тд и тп.
    З. Ы. А где (если не секрет) объявлены переменные Trans1, .., Trans19 и Start?
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  5. #5

    По умолчанию

    Может, конечно, уже туплю, но не получается сбросить переменную по выключению контроллера ПЛК-110. Делаю так, например:

    (*Начало программы*)
    IF NOT CPUpower THEN (*из модуля статистики флаг питания*)
    Init := TRUE;
    Mode := 0;
    END_IF;
    (* Тело программы *)
    IF Init THEN
    (*Инициализация*)
    END_IF;
    .......
    (* Конец программы *)

    В процессе работы через ModBUS over IP меняю переменную Mode на 1.
    Затем выключаю питание контроллера, включаю, а она всё равно 1. И, часто, не только она. Как добиться предсказуемости, как заставить проинититься?

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

    да, задача, конечно, по появлению питания сделать однозначную инициализацию. как её сделать правильно, к чему привязаться?

  8. #8

    По умолчанию

    На переменную power триггер по переднему фронту.
    Ну уже по импульсу программно организовуйте все, что необходимо

  9. #9

    По умолчанию

    PowerTrig(CLK := CPUpower); (*R_TRIG*)
    IF PowerTrig.Q THEN
    Init := TRUE;
    END_IF;

    Сделал так (правда, как-то это неоднозначно?). Вроде бы, помогло, спасибо.

Ваши права

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