Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Теория и практика автоматизации
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

реализация кнопки с самофиксацией на языке релейно-контакных схем.

 Ответить Ответить
Автор
Сообщение
kiselev Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Апрель 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - kiselev Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: реализация кнопки с самофиксацией на языке релейно-контакных схем.
    Опубликовано: 22 Январь 2008 13:14
столкнулся с проблемой перенесения своих программных нарабодок в codesys на ПЛК Delta DVP со своей фирменной средой разработки, поддрерживающей лишь LD, IL и SFC. Суть проблемы в следующем: есть программная реализация, позволяющая использовать кнопку без самофикации как кнопку с самофиксацией (первое нажатие замыкает ее контакты, втрое размыкает). Ниже приведен текст на ST

FUNCTION_BLOCK self_fix_button
VAR_INPUT
bX: BOOL;          (*входной импульсный сигнал *)
END_VAR
VAR_OUTPUT
bQ: BOOL;          (*выходной фиксированный сигнал. Сбрасывается по повторному входному сигналу*)
END_VAR
VAR
Rise_in: R_TRIG;
END_VAR

_ _ _ _ _ _ _ _


Rise_in(CLK:=bX);    (*передний фронт входного сигнала *)
IF Rise_in.Q
THEN
          IF NOT bQ
          THEN
          bQ:=TRUE;
          ELSE
          bQ :=FALSE;
END_IF
END_IF


Вопрос: как реализовать нечто подобное на LD? т.к. там не возможнотси использовать конструкции типа IF_THEN_ELSE. Варианты есть, но слишком громоздкие.   
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Январь 2008 16:59

Дык замечательный оператор return в LD есть, переводим в лоб:

Igor Petrov
Наверх
kiselev Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Апрель 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - kiselev Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Январь 2008 09:22
интересно...просто еще не разобрался с операторами в среде разработки для ПЛК Delta DVP. Вот мой вариант в Кодесис:
Наверх
kiselev Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Апрель 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - kiselev Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Январь 2008 11:57
to IP

Игорь, немного запутался :-) как работает ваша схема? Насколько я понял: нижняя строчка реализует бесконечный генератор импульсов с частотой , равной периоду выполнения пользовательской программы. по верхней строчке (когда пользователь нажимает на кнопку) подпрограмма прерывается и сигнал не генерится. я правильно вас понял?
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Январь 2008 13:24

Первоначально опубликовано kiselev

to IP
Игорь, немного запутался :-) как работает ваша схема?...

Первая строчка: детектор фронта с инвертором. Он постоянно дает 1 если нет фронта = нет нажатия кнопки. При этом сразу происходит возврат. (Возврат - return в ф. блоке как и в любой другой подпрограмме равносилен переходу в конец.)
Т.е. вторая строка выполняется только в случае если обнаружен импульс. Она просто переключает кнопку и текущего состояние в другое.

 Ваш вариант красивее с точки зрения LD программиста – классика. Я же в лоб сохранил логику  ST программы с пропуском выполнения части кода, когда делать ничего не надо: нет импульса = сразу уходим.

Igor Petrov
Наверх
kiselev Смотреть выпадающим
Новичок
Новичок


Присоединился: 02 Апрель 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - kiselev Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Январь 2008 16:19
Игорь, а что на Ваш взгляд предпочительнее, если предполагается использовать данный фрагмент неоднократно в программе (т.е. создавать несколько экземляров данного Функционального блока), которая пишется на одном "листе" причем исключительно на LD (т.е. среда разработки не позволяет подобно Кодесис делать многоуровневые вкладки (Задачи->программы->функциональные блоки (стандартные и пользовательские)->функции)?
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Январь 2008 13:00

Первоначально опубликовано kiselev

Игорь, а что на Ваш взгляд предпочительнее...

Практически нет никакой разницы. Блок очень маленький. Создание экземпляра приводит только к выделению памяти данных под детектор фронта. Программный код все экземпляры используют общий. С return этот блок будет работать немного быстрее, поскольку не выполняются лишние инструкции, когда они не нужны. Обычно рабочий цикл ПЛК стабилизируется системой исполнения, поэтому реального смысла в такой оптимизации по быстродействию нет.

Igor Petrov
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz