CODESYS форум

Добро пожаловать на официальный форум CODESYS
Deutsche Version English version russian version 
Текущее время: Вс июн 25, 2017 11:28 am

Часовой пояс: UTC+01:00




Начать новую тему  Ответить на тему  [ 7 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Выходы блоков с EN
СообщениеДобавлено: Сб мар 17, 2012 6:04 am 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Пн мар 19, 2012 12:04 pm 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
Это было бы чудо из разряда требований наших чиновников: усопший обязан лично подписать заявление!

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Пт мар 23, 2012 8:10 am 
Не в сети

Зарегистрирован: Сб фев 18, 2012 6:01 pm
Сообщения: 16
Igor Petrov писал(а):
Это было бы чудо из разряда требований наших чиновников: усопший обязан лично подписать заявление!

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


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

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Пт мар 23, 2012 9:07 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
Михаил Иванович писал(а):
Согласитесь, что сохранение - это тоже работа.

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

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

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

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Сб мар 24, 2012 5:56 am 
Не в сети

Зарегистрирован: Сб фев 18, 2012 6:01 pm
Сообщения: 16
Igor Petrov писал(а):
Михаил Иванович писал(а):
Согласитесь, что сохранение - это тоже работа.

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

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

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

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

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

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Вт мар 27, 2012 11:33 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
Михаил Иванович писал(а):
Я считаю, что автобус с пассажирами, стоящий на остановке (не движущийся) - работает.

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

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Выходы блоков с EN
СообщениеДобавлено: Вс апр 15, 2012 5:46 am 
Не в сети

Зарегистрирован: Сб фев 18, 2012 6:01 pm
Сообщения: 16
Прошу прощения, что долго не реагировал.
Igor Petrov писал(а):
Вход EN – это ключ зажигания автобуса. EN=OFF означает мотор заглушен. Не реально требовать, чтобы автобус с остановленным мотором сам уехал на парковку.

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

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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 7 сообщений ] 

Часовой пояс: UTC+01:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB