Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » АСУТП »
реализация кнопки с самофиксацией на языке релейно-контакных схем

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   реализация кнопки с самофиксацией на языке релейно-контакных схем
kohausen
Junior Member

Сообщений: 25
Регистрация: Декабрь 2006

написано 22 Января 2008 13:18ИнфоПравкаОтветитьIP

толкнулся с проблемой перенесения своих программных нарабодок в 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. Варианты есть, но слишком громоздкие.

Andy79
unregistered
написано 22 Января 2008 15:16  ПравкаОтветитьIP

I0.0 O10.0
--| |---------( )--
O10.0 |
--| |---|

Соответствено I0.0=bx, O10.0=bQ

kohausen
Junior Member

Сообщений: 26
Регистрация: Декабрь 2006

написано 23 Января 2008 08:40ИнфоПравкаОтветитьIP

Andy79
хм...по предложенной Вами схемой произойдет самоподхват после первого нажатия кнопки и bQ=true останется в этом положении т.к. механизма сброса не предусмотрено.

trooper
unregistered
написано 23 Января 2008 11:20  ПравкаОтветитьIP

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

kohausen
Junior Member

Сообщений: 27
Регистрация: Декабрь 2006

написано 23 Января 2008 11:47ИнфоПравкаОтветитьIP

trooper
т.е. использовать счетчик для подсчета количества импульсов (в данном случае 2) с автоматическим сбросом при достижении заданного количества импульсов?

trooper
unregistered
написано 23 Января 2008 12:12  ПравкаОтветитьIP

I ADD
-----||----------|one shot|--------------| a+1=a |
| |
| |
a.0
-----||----------------------------------(start)

start
-----|/|---------------------------------(stop)

kohausen
Junior Member

Сообщений: 28
Регистрация: Декабрь 2006

написано 23 Января 2008 16:19ИнфоПравкаОтветитьIP

trooper спасибо. в первой редакции алгоритма также пробовал подобную схему.

ColdFire
Member

Сообщений: 287
Откуда: Россия
Регистрация: Ноябрь 2004

написано 01 Февраля 2008 12:41ИнфоПравкаОтветитьIP

Есть море вариантов. Во всех известных мне реализациях LD есть в том или ином виде команды SET и RESET (LATCH и UNLATCH и т.д.). Ну или как вам уже написали - вариант с самоподхватом (классика РКС), но я такой вариант не люблю - там где такие штуки нужны обычно другие блоки тоже пользуют SET и RESET, и применение самоподхвата в явном виде чревато вылезанием трудноуловимых чудес.

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика