Данный CODESYS форум содержит архивную копию русской ветви только для чтения. Для создания сообщений пожалуйста используйте актуальную международную платформу CODESYS Forum. Close

Выходы блоков с EN

Anonymous
2012-03-17
2012-04-15
  • Anonymous - 2012-03-17

    Originally created by: Михаил Иванович

    Можно ли блок со входом EN вставить в цепь на языке CFC так, чтобы при обнулении входа EN обнулялся результат на выходе (который не ENO)? А то получается так: блок не работает, а значение сохраняется. Это правильно? Режима вставки или настройки, чтобы обнулялось нет?
    Ответы на форуме ОВЕНа сводились к тому, как вывернуться из этой ситуации, но ответа на заданный вопрос не было. Так есть такой режим или нет?
    PS. То, что я могу создать собственный библиотечный блок с обнулением я тоже знаю.

     
  • Igor Petrov

    Igor Petrov - 2012-03-19

    Это было бы чудо из разряда требований наших чиновников: усопший обязан лично подписать заявление!

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

     
  • Anonymous - 2012-03-23

    Originally created by: Михаил Иванович

    Igor Petrov писал(а):
    Это было бы чудо из разряда требований наших чиновников: усопший обязан лично подписать заявление!
    EN действительно приводит к тому, что блок не работает. В других цепях, в других программах проекта, может быть тоже много всяких блоков, которые в текущий момент не работают. И что? Проделать работу по вычислению новых значений своих выходов они смогут, только когда будут вызваны.

    Ну, думаю, что это никакое не чудо, а просто такое свойство. Могло бы быть и другое свойство (у блоков, конечно, не у чиновников). Согласитесь, что сохранение - это тоже работа. Так что, строго говоря, такие блоки не не работают, а не вычисляют. Но это тема уже отвлеченная, а я просто хотел понять - вдруг я что-то неправильно делаю. Все понял, спасибо.

    Еще пара вопросов и одно замечание:
    Замечание:
    Описание блока ПИД-регулятора в документации (Руководство по программированию в CoDeSys 2.3) не совпадает с реально существующим блоком и с его описанием в хелпе.
    Вопросы:
    1. В описании блока ПИД-регулятора в хелпе, который исправно появляется на F1 и за это огромное спасибо, верхний предел интегрирования обозначен как TN, то есть, взята постоянная интегрирования. Во всей литературе, которую я видел, этот предел не имеет отношения к коэффициенту при интеграле (ведь TN - это просто обратная величина коэффициента, введенная для согласования размерности). И это правильно. Насколько я понимаю, это скользящий предел, строго говоря, даже не интегрирования. а суммирования. Это TN в качестве предела - это что, действительно так? Но ведь тогда это просто среднее за промежуток времени TN и на самом деле ничего не дает для устранения статической ошибки, он просто приблизительно удваивает коэффициент пропорциональности.
    Это ошибка, или в блоке действительно реализована сумма по времени TN? Что тогда это дает?
    2. Как реализовать фазовый сдвиг, задержку по времени, инерционность - назовите как хотите. Я не нашел этого в стандартных библиотеках. Просмотрел и это все-таки есть? Или это настолько просто реализуется, что и библиотека на нужна?
    Спасибо.

     
  • Igor Petrov

    Igor Petrov - 2012-03-23

    Михаил Иванович писал(а):
    Согласитесь, что сохранение - это тоже работа.

    Нет.
    Экземпляр блока глобален. По сути его выходы - это глобальные переменные. Допустим, программа переведена в режим останов - не вызывается. Никакой работы нет. То что должно происходить со значениями переменных? Подумайте. Что в них положено ранее, то и остается лежать.

    В МЭК программе абсолютно нормально если некоторые блоки не вызываются в каждом цикле. Например, они могут вызываться по выходу таймера раз в секунду. Они обязаны помнить прошлые результаты и продолжать работу.

    Михаил Иванович писал(а):
    Описание блока ПИД-регулятора в документации

    Откройте в CoDeSys файл Util.lib и посмотрите как работает этот блок изнутри.
    Блок не айс, но его реализация именно в таком виде прописана стандартом МЭК. У Овен своя замечательная библиотека регуляторов. Используйте их.

    Михаил Иванович писал(а):
    Как реализовать фазовый сдвиг, задержку по времени

    Записываем значение входа в переменную. В следующем цикле вызова программы используем ее вместо входа. Ее значение будет задержано по фазе.

     
  • Anonymous - 2012-03-24

    Originally created by: Михаил Иванович

    Igor Petrov писал(а):
    Нет.
    Экземпляр блока глобален. По сути его выходы - это глобальные переменные. Допустим, программа переведена в режим останов - не вызывается. Никакой работы нет. То что должно происходить со значениями переменных? Подумайте. Что в них положено ранее, то и остается лежать.

    Наверное, это вопрос понимания термина "работа". Я считаю, что автобус с пассажирами, стоящий на остановке (не движущийся) - работает. Вы - нет. Давайте просто учитывать в диалоге эту разницу в понимании.

    Igor Petrov писал(а):
    В МЭК программе абсолютно нормально если некоторые блоки не вызываются в каждом цикле. Например, они могут вызываться по выходу таймера раз в секунду. Они обязаны помнить прошлые результаты и продолжать работу.

    Да. это аргумент за сохранение, а не за обнуление.

    Igor Petrov писал(а):
    Откройте в CoDeSys файл Util.lib и посмотрите как работает этот блок изнутри.
    Блок не айс, но его реализация именно в таком виде прописана стандартом МЭК. У Овен своя замечательная библиотека регуляторов. Используйте их.

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

    Михаил Иванович писал(а):
    Как реализовать фазовый сдвиг, задержку по времени

    Записываем значение входа в переменную. В следующем цикле вызова программы используем ее вместо входа. Ее значение будет задержано по фазе.[/quote]
    Ну что же, попробуем. Будем соображать.
    Спасибо.

     
  • Igor Petrov

    Igor Petrov - 2012-03-27

    Михаил Иванович писал(а):
    Я считаю, что автобус с пассажирами, стоящий на остановке (не движущийся) - работает.

    Центральный процессор контроллера вызывает программный код экземпляра ФБ. Тот проводит свои вычисления и помещает результаты в определенные ящики памяти. Проц. занят другим. Теперь работает ОЗУ. Его работа – хранить данные.

    Вход EN – это ключ зажигания автобуса. EN=OFF означает мотор заглушен. Не реально требовать, чтобы автобус с остановленным мотором сам уехал на парковку.

    Михаил Иванович писал(а):
    Я, конечно, посмотрю...но вопрос остался.

    Повторно тонко намекну, не используйте этот блок. Либо используйте его исходный текст как основу, чтобы переделать конкретно как Вам надо.

     
  • Anonymous - 2012-04-15

    Originally created by: Михаил Иванович

    Прошу прощения, что долго не реагировал.

    Igor Petrov писал(а):
    Вход EN – это ключ зажигания автобуса. EN=OFF означает мотор заглушен. Не реально требовать, чтобы автобус с остановленным мотором сам уехал на парковку.

    Конечно, нереально. Но вопрос был не в этом. Вы мне пытаетесь объяснить, что автобус с выключенным двигателем ехать не может. Я это понимаю. Но вопрос состоял в том, какова концепция - оставлять автобусы на остановках или, все-таки, парковать их (я продолжаю принятую нами аналогию, осознавая что программа не автобус, а данные - не пассажиры). Из ваших ответов я понял, что в CoDeSys принята концепция оставлять все автобусы на остановках. Возможный вариант. Но концептуально далеко не очевидный. Поэтому, на мой взгляд, было бы правильно отразить этот факт в документации так, чтобы пользователь это видел. Причем написать так, чтобы это было доходчиво.
    И мы опять упираемся в вопрос документации, стиля ее написания, непроверенности и наличия не исправляемых ошибок. Ведь смотрите, что происходит. Добросовестные и внимательные пользователи неоднократно отмечали, что ее можно сделать ещё лучше, указывая иногда прямо на ошибки, а иногда - повторяющимися вопросами. Повторяющиеся вопросы означают, что изложенное в документации непонятно. На основе таких вопросов и прямых указаний на ошибки что-то можно было бы исправить. Но этого не происходит. От нас - пользователей - часто отмахиваются, как от назойливых мух, когда мы стремимся что-то выяснить до конца, стремимся что-то понять. Очень часто это происходит на форуме "Овена". К сожалению. Но не хотите - не надо, хотя на мой взгляд, это снижает потребительскую ценность продукта.
    Вернемся к моему вопросу.

    Михаил Иванович писал(а):
    Я, конечно, посмотрю...но вопрос остался.

    Igor Petrov писал(а):
    Повторно тонко намекну, не используйте этот блок.

    Вопрос был не в том, использовать или не использовать этот блок, я, кстати, не вижу в нем ничего ужасного. Есть, конечно, некоторые непонятности, но дело не в этом. Вопрос был: нет ли ошибки в хелпе к нему в пределах интегрирования? Я вот этого не понял. У меня впечатление, что это техническая ошибка, можно сказать, опечатка. Но вдруг я ошибаюсь и указанный там предел имеет какой-то свой смысл, которого я просто не понимаю? Вот в чем вопрос. Ведь писали-то документацию квалифицированные специалисты.
    Чтобы тем, кто захочет ответить, не пришлось возвращаться, я его процитирую свой же вопрос:
    "В описании блока ПИД-регулятора в хелпе, который исправно появляется на F1 и за это огромное спасибо, верхний предел интегрирования обозначен как TN, то есть, взята постоянная интегрирования. Во всей литературе, которую я видел, этот предел не имеет отношения к коэффициенту при интеграле (ведь TN - это просто обратная величина коэффициента, введенная для согласования размерности). И это правильно. Насколько я понимаю, это скользящий предел, строго говоря, даже не интегрирования. а суммирования. Это TN в качестве предела - это что, действительно так? Но ведь тогда это просто среднее за промежуток времени TN и на самом деле ничего не дает для устранения статической ошибки, он просто приблизительно удваивает коэффициент пропорциональности.
    Это ошибка, или в блоке действительно реализована сумма по времени TN? Что тогда это дает?"
    Вот был вопрос. Моих скудных знаний не хватает, чтобы в этом разобраться и я обращаюсь к специалистам, для которых, на мой взгляд, это вообще - семечки. Ответили и:
    1. поместили в списке замеченных ошибок и опечаток, которого, я, кстати, тоже не вижу
    Или
    2 дали разъяснение, почему такой предел - правильный.
    Спасибо.