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

Тема: простой вопрос по Sfc

  1. #1
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию простой вопрос по Sfc

    В простейшей SFC программе создаю счетчик. На его счетный вход подаю битовую переменную bIn. Ее устанавливаю в TRUE во входном действии одного шага, а сбрасываю - во входном действии следующего шага.
    Переходами между шагами управляю вручную, чтобы все видно было в подробностях.

    Счетчик не считает. Хотя битовая переменная bIn и ведет себя не совсем так, как я ожидаю, однако же она изменяет свое состояние. А в это время наблюдаю за счетным входом счетчика - он стоит в нуле, как убитый.

    Почему?

    Проект прилагаю

    ДОБАВЛЕНО: С помощью уважаемого Gans вопрос решился. Смотри сообщение от 31.10.2010 и работающий проект с переходом по изменению состояния счетчика
    Вложения Вложения
    Последний раз редактировалось drvlas; 31.10.2010 в 07:30. Причина: Решение найдено

  2. #2

    По умолчанию

    Привет.
    а вызвать сам счетчик, ну что бы он смог посчитать.
    C1();
    или сразу
    C1(CU:=bIn, RESET:=false);
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  3. #3
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Ну, изучая твое колдовство, я где-то начинаю в ту степь думать. Но не могу понять - разве включение этого счетчика в шаге Init в виде FBD - это не вызов???

  4. #4
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    ПАЛУЧИЛОСЯ!!!

    Добавил в шаг действие с классификатором S - для получения такого же результата, как у тебя шагом stpService с FALSE переходом. Т.е. для бесконечного существования этого счетчика.
    А теперь в каждом шаге, на котором у меня требуется остановка, по входу добавляю действие

    b := FALSE;

    а по выходу -

    b := TRUE;

    Ладно, сейчас доделаю проектик и выкладу. Может не один я так низко начинаю

  5. #5
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Итак, что стало ясно после любезной помощи товарищей.

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

    Какова была моя проблема (см.проект в первом посте)? Запуск ФБ "Счетчик" в блоке Init вовсе не дал мне возможность со счетчиком работать. Думаю, что неактивность блока Init - вот причина.
    Поэтому можно:

    а) При работе с упрощенными CoDeSys шагами построить параллельную ветвь и там в первом шаге (который сделать бесконечно работающим или деактивировать когда пошаговость не нужна) вызывать Счетчик. Он становится активным, можно в других шагах дергать его вход, состояние будет меняться - ну и его анализ позволяет сделать вывод, что кнопка ШАГ нажата. Этот путь подсказал товарищ Gans

    б) При работе с МЭК-шагами создать действие с классификатором S и в нем вызвать тот самы Счетчик. Теперь он тоже будет существовать вечно и анализ его состояния позволяет шагать по программе.

    Работающий пример прилагаю.

    З.Ы. Единственное, чего не понял - почему задание PV в счетчике никак не влияет на его работу? Делал 65536, делал 5, делел 0 - счетчик считает себе, не замечаю перехода через границу. Что-то я еще не дочитал...
    Вложения Вложения

  6. #6

    По умолчанию

    привет вот решил накидать свой вариант счетчика (на мой взгляд более правильного :-).
    на счет «почему задание Pv в счетчике никак не влияет на его работу?»
    - выход Q устанавливается в True, когда счетчик достигнет значения заданного Pv. (это цитата из документации)
    Вложения Вложения
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  7. #7
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    вариант счетчика (на мой взгляд более правильного
    Нет-нет, дорогой Учитель! Тут ты не понял мою задачу. Несмотря на название счетчика, я его использую ТОЛЬКО для определения самого факта нажатия. А никак не подсчета числа шагов. Извини за путаницу!

    Поэтому именно так, как сделано: каждое нажатие кнопки (здесь иммитируется ручным взведением переменной bStepNext) приводит к изменению состояния счетчика - и к пониманию программой, что шаг можно делать.

    Цитата Сообщение от Gans Посмотреть сообщение
    на счет «почему задание Pv в счетчике никак не влияет на его работу?»
    - выход Q устанавливается в True, когда счетчик достигнет значения заданного Pv. (это цитата из документации)
    Ну, я это видел. И почему-то решил, что счетчик еще и сбрасывается. Ладно, теперь ясно. Пусть считает дальше

Ваши права

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