форум асутп
 На главную                       Здесь может быть Ваша реклама, подробнее...


 Наверх  |  Перейти к теме  |  Поиск  |  Вход  |  Дерево    
 PLC - задний и передний фронты сигналов
Автор: colorprint2008 
Дата:   04.01.14 22:10

Здравствуйте, имеется ПЛК в котором на языке лестниц нет не переднего, не заднего фронтов сигналов, есть только нормально открытый и нормально закрытый контакт.
Можно ли как то программно обойти это.
Спасибо.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: PLC - задний и передний фронты сигналов
Автор: Maksim_NT 
Дата:   04.01.14 22:37

colorprint2008 писал(а):
> имеется ПЛК в котором на языке лестниц нет не переднего, не
> заднего фронтов сигналов, есть только нормально открытый
> и нормально закрытый контакт.
> Можно ли как то программно обойти это.

Да и это постоянно:
1. если Ваш ПЛК выполняет операции циклически: считывает входа - выполняет Вашу прикладную программу - записывает в выхода;
2. В конце Вашей прикладной программы сохраняете в памяти ПЛК значения данного сигнала {сигнал в цикле не меняем} (контакт сигнал - катушка памяти);
3. В строке прикладной программы, где нужен передний фронт = текущее значение AND NOT запомненное значение (последовательно контакт сигнала и нормально закрытый контакт ячейки памяти);
4. В строке прикладной программы, где нужен задний фронт = NOT текущее значение AND запомненное значение (последовательно нормально закрытый контакт сигнала и  контакт ячейки памяти).

Так то страшно, что без Булевой алгебры заниматься Автоматизацией :(

Адрес этого сообщения    Ответить на это сообщение
 
 Re: PLC - задний и передний фронты сигналов
Автор: Ryzhij 
Дата:   05.01.14 17:23

То же, но на LD:

| Выделение фронта RzIn (момента возникновения) сигнала In
|                           |
|   In    Mn          RzIn  |
|--| |---|\|----------( )---|
|                           |
| Выделение спада DrIn (момента пропадания) сигнала In
|                           |
|   In    Mn          DrIn  |
|--|\|---| |----------( )---|
|                           |
| Копирование состояния сигнала In во вспомогательную булеву переменную Mn
|                           |
|   In                 Mn   |
|--| |----------------( )---|
|                           |
|                           |
| Строка копирования должна в программе находится после строк выделения фронтов.
| Строки выделения фронтов и строка копирования должны находится в блоке, выполняемом
| непрерывно.               |
| Биты RzIn и DrIn при обнаружении фронта (или соответственно спада) будут находится в
| состоянии "1" в течение только одного цикла исполнения программы внутри ПЛК.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: PLC - задний и передний фронты сигналов
Автор: indian 
Дата:   05.01.14 20:53

Уважаемый colorprint2008 постарайтесь обойтись без этой функции. По опыту - чем больше выделений фронта, тем глюкавее работает контроллер. Более того, задумайтесь, возможно неспроста такая стандартная функция отсутствует. Например, ввод и вывод ассинхронны по отношению к циклу пользовательской программы, ну скажем ПДП. Хорошо если просто желание производителя оборудования приучить пользователей к правилам хорошего тона.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: PLC - задний и передний фронты сигналов
Автор: san 
Дата:   06.01.14 00:45

+1 indian по поводу хорошего тона. Я например даже для примитивных алгоритмов вместо фронтов пользуюсь "автоматным" подходом.
Но по поводу асинхронности - это зависит от платформы. Если касательно цикла присутствуют образы процессов, то такие фронты работают нормально.

Александр Пупена.
Кафедра ИАСУ,Национальный университет пищевых технологий. Киев.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: PLC - задний и передний фронты сигналов
Автор: Ryzhij 
Дата:   06.01.14 09:28

indian:
> По опыту - чем больше выделений фронта, тем глюкавее работает контроллер.

Мой опыт подсказывает мне, что глючат не контроллеры, а программы ;)
Разумеется, что программы, использующие столь короткие импулься длительностью в один цикл гора-а-аздо сложнее отлаживать.

indian:
> Более того, задумайтесь, возможно неспроста такая стандартная функция отсутствует.
Например, ввод и вывод  ассинхронны по отношению к циклу пользовательской программы, ну скажем ПДП. Хорошо если просто желание производителя оборудования приучить пользователей к правилам хорошего тона.

Есть обширные семейства контроллеров, и PLC, и PAC, с безусловной асинхронностью ввода-вывода, но в системе команд которых функция выделения фронтов имеется.
Нужна синхронность - используйте отдельный программный блок для пересылки на входы-выходы, а в программе оперируйте с копиями (образами) в памяти.
И это, кстати, тоже одно из правил хорошего тона (стиля программирования), позволяющее получить некоторые дополнительные преференции, например в виде портабельности или гибкости на этапе ПНР.

Есть ряд задач, где приём выделения фронтов позволяет получить красивое решение из двух строк, а "автоматный" подход даёт громоздкий код.
Например, помехоустойчивый к дребезгу счётчик с учетверением относительно медленных импульсов на основе А/В последовательностей (инкрементный датчик координат) "на фронтах" получается элементарно.
Решите-ка эту задачку с "автоматным подходом" на комбинаторной логике с триггерами, и сравните.

О чём мы спорим?
Нужен человеку фронт? - Пожалуйста!
Боитесь фронтов? - Воля Ваша, не используйте.
Любое решение, это просто обмен старых проблем на новые.

Адрес этого сообщения    Ответить на это сообщение
 Список форумов    


 Список форумов  |  Нужен логин? Регистрируйтесь здесь 
 Логин пользователя
 Имя пользователя:
 Пароль:
 Помнить пароль:
   
 Забыли ваш пароль?
Введите имя пользователя или e-mail, и новый пароль будет послан на email, указанный в вашем профиле.

Рейтинг@Mail.ru