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

Тема: управление переменными в Cfc

  1. #1
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    Question управление переменными в Cfc

    добрый день. вопрос к уважаемым знатокам.

    коротко, что должна делать программа:
    -имеется что-то вроде таймлиста, по которому замыкаются и размыкаются реле
    -должна существовать возможность в любой момент приостановить выполнение программы на конкретном действии и замыкать/размыкать каждое реле вручную кнопками из программы

    что имеется:
    -таймлист,тут проблем вроде бы нет,за основу был взят светофор

    проблема:
    -cfc,насколько я понимаю,в запущенном состоянии "держит" значения переменных, поэтому для ручного управления во время паузы приходится останавливать выполнение программы. это работало до тех пор, пока с помощью кнопок нужно было управлять только переменными Bool.
    -проблемы начались потому, что у плк150 4 дискретных выхода, мне нужно ~10, а у имеющегося мву8-р выходы замыкаются переменной Word. я сделал конвертирование Bool->word, но оно, естественно, не работает при остановке программы (если программу не останавливать, то получается наоборот- конвертирование работает, но переменные заблокированы)

    вопросы:
    -возможно ли в Cfc как-то "разблокировать" переменные для ручного управления, не останавливая конвертацию?
    -или наоборот, не трогать Cfc, но сделать конвертацию Bool->word как-то по-человечески?
    -может быть я иду неправильным путем и проблема решается по-другому?
    Вложения Вложения

  2. #2

    По умолчанию

    неправильным путем вы идете товарищ.
    речь вообще об Sfc или о Cfc???
    программу на Cfc останавливать не нужно.
    возможность перевода в ручной режим\управление руками закладывается в сам алгоритм программы, а преобразования должны быть всегда, как вариант просто в конце программы.

    с Sfc все сложнее - там надо предусматривать переход в ручной режим как параллельную\алтернативную ветвь

  3. #3
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    По умолчанию

    я может быть не совсем правильно вопрос смог сформулировать, вот это узкое место в программе

    переменные под цифрой 1 управляются без проблем, переменные под цифрой 2- как описано выше, вызывают трудности
    Изображения Изображения
    • Тип файла: jpg 1.jpg (62.3 Кб, Просмотров: 70)

  4. #4

    По умолчанию

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

    а все переменные глобальные, и переменные управления подпрограммой подавайте в основной программе уже.

  5. #5
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    По умолчанию

    понял, спасибо, буду пробовать ковыряться дальше.

  6. #6
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    По умолчанию

    "2. при создании подпрограмм закладывайте ручной режим в программу (для примера). то есть если не ручной и что то - делаем то то... если ручной, то делаем только во это, а то то и то то не делаем."
    Попробовал сделать альтернативную ветвь для действий (блок sfc), но проблема остается- дело в том, что мне нужно, чтобы при нажатии паузы программа останавливалась именно на данном шаге (с конкретным набором замкнутых и разомкнутых реле). А у меня получается, что даже при каких-то альтенативных ветвях мне не уйти от обозначения нужных мне выходов (у меня это обозначение происходит в блоке fbd). Таким образом, получается, что после нажатия паузы я могу управлять только теми выходами, которые не определены в шаге, во время котрого эта пауза нажата.

    Кстати, а я правильно понял, что в линейке овена нет моделей с дискретными выходами, управляемыми переменными bool (как у плк), с помощью которых можно было бы расширить количество выходов плк?

  7. #7

    По умолчанию

    Еще раз - в ПЛК не может быть паузы. В принципе.
    Если Вам необходимо останавливать программу - это делается именно программно. И больше никак.
    Например выходом из блока может быть либо Ваше условие, либо программная команда pause - то есть выполняется шаг, а выход из него - сложное условие:
    a>b or pause

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

    В линейке ОВЕН все дискретные модули могут управляться BOOL (кроме МВУ8 - у него могут быть установлены аналоговые выходы). Просто для удобства записи и для сокращения обмена они собраны в 8-16 бит. Посмотрите пример связи с МДВВ по протоколу ModBus, все станет понятнее.

  8. #8
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Еще раз - в ПЛК не может быть паузы. В принципе.
    Если Вам необходимо останавливать программу - это делается именно программно. И больше никак.
    Например выходом из блока может быть либо Ваше условие, либо программная команда pause
    У меня это условие есть. И есть кнопка "пауза", которая является одним из условий перехода на след. шаг (переходит если кнопка не нажата)

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    По этому если Вам нужна пауза - Вы должны выходить из этого шага - это раз. Второе - надо перевести значение переменных в нужный Вам вид в следующем шаге, либо выходным действием...
    Проблема в том, что в следующем действии (или во время паузы) должны быть замкнуты (по умолчанию, вне зависимости от кнопки "пауза", по ходу программы и конкретного шага) определенные выходы, при этом уже после нажатия паузы и остановки программы эти выходы заблокированы и не доступны для управления, а хотелось бы ими управлять.

  9. #9

    По умолчанию

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

  10. #10
    Пользователь
    Регистрация
    04.10.2010
    Адрес
    Санкт-Петербург
    Сообщений
    6

    По умолчанию

    Отправил на plc at owen.ru неделю назад. Есть ..ээ.... вероятность, что мне помогут с примером?)

    Проблема актуальна, а своими силами что-то не получается...

    Или моя почта просто плохо работает?

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

Ваши права

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