Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задачка для ума.
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Михаил_PLC
Доброе время суток.
Возникла проблемка, которую я не смог решить.
Нужно из ограниченного количества функциональных блоков, а это OR, AND, RS, SR, TON, TOF сделать программку, суть которой: один раз нажали кнопку, выход включился, второй раз нажали – выключился, и опять нажали и т.д. Программка должна быть максимально компактной.
Что бы сразу отсечь ненужные вопросы, зачем мне это нужно. Это контроллер (модуль) SAFE PLC EL6900 фирмы Beckhoff,
Kost_Alex
Если я правильно понял:

Код
PROGRAM MAIN
VAR
    Click:        BOOL;
    RS1:        RS;
    Reset_b:        BOOL;
    Out:        BOOL;
    Imp:        BOOL;
END_VAR


IF Click AND NOT Imp THEN

    RS1(
        Set:=    TRUE,
        Reset:=    Reset_b);

    Reset_b:= NOT Reset_b;

    Imp:=TRUE;

ELSIF NOT Click THEN
    Imp:=FALSE;
END_IF

Out:=RS1.Q1;
Михаил_PLC
Цитата(Kost_Alex @ 2.6.2011, 0:38) *
Если я правильно понял:

[code]PROGRAM MAIN


Спасибо большое за пример, но можно использовать только функциональные блоки OR, AND, RS, SR, TON, TOF, другого просто ничего нет.
Rus75
Ребята, ну мы же не в каменном веке живем. Существует Яндекс. То, что вам нужно называется триггером
Вот какую ссылку мне выдал Яндекс при запросе "функциональный блок RS http://hghltd.yandex.net/yandbtm?fmode=inj...2dc&keyno=0

В этом ПДФ файле на 11 странице есть то, что вам нужно с доминирующей функцией RESET

function_block RS
//------------------------------------
// Flip-Flop (RESET Dominаnt)
//
var_input S, R1 : BOOL; end_var
var_output Q1 : BOOL; end_var
Q1 := not R1 and (S or Q1);
end_function_block

Или на 12 стр. с доминирующей функцией SET

function_block RS
//------------------------------------
// Flip-Flop (RESET Dominаnt)
//
var_input S, R1 : BOOL; end_var
var_output Q1 : BOOL; end_var
Q1 := not R1 and (S or Q1);
end_function_block


vladun
это импульсное реле, хотя изначально в ТЕОРИИ называлось триггером wink.gif
Kost_Alex
Я правильно понимаю, что в моем примере нельзя использовать NOT и IF.
Переменные локальные то можно использовать?
agent_serg
Код
A   I0.0
AN  F10.0
AN  F10.1
S   F10.0
S   F10.1

A   I0.0
A   F10.0
AN  F10.1
R   F10.0
S   F10.1

AN  I0.0
R   F10.1








Думаю, что как-то так.

I0.0 - кнопка
F10.0 - требуемый результат
F10.1 - указатель нажатой кнопки. Условие для переключения триггера будет выполнено только в течение одного программного цикла.
Михаил_PLC
Цитата(Rus75 @ 2.6.2011, 8:23) *
Ребята, ну мы же не в каменном веке живем. Существует Яндекс. То, что вам нужно называется триггером
Вот какую ссылку мне выдал Яндекс при запросе "функциональный блок RS http://hghltd.yandex.net/yandbtm?fmode=inj...2dc&keyno=0

В этом ПДФ файле на 11 странице есть то, что вам нужно с доминирующей функцией RESET

function_block RS
//------------------------------------
// Flip-Flop (RESET Dominаnt)
//
var_input S, R1 : BOOL; end_var
var_output Q1 : BOOL; end_var
Q1 := not R1 and (S or Q1);
end_function_block

Или на 12 стр. с доминирующей функцией SET

function_block RS
//------------------------------------
// Flip-Flop (RESET Dominаnt)
//
var_input S, R1 : BOOL; end_var
var_output Q1 : BOOL; end_var
Q1 := not R1 and (S or Q1);
end_function_block

А причём здесь RS и SR триггеры? Я вообщето про другое спрашивал.

Цитата(vladun @ 2.6.2011, 8:50) *
это импульсное реле, хотя изначально в ТЕОРИИ называлось триггером wink.gif

Во во, оно то мне и нужно... wink.gif

Цитата(Kost_Alex @ 2.6.2011, 10:01) *
Я правильно понимаю, что в моем примере нельзя использовать NOT и IF.
Переменные локальные то можно использовать?

Ничего нельзя использовать, кроме OR, AND, RS, SR, TON, TOF, локальных переменных тоже нет.

Цитата(agent_serg @ 2.6.2011, 10:05) *
Код
A   I0.0
AN  F10.0
AN  F10.1
S   F10.0
S   F10.1

A   I0.0
A   F10.0
AN  F10.1
R   F10.0
S   F10.1

AN  I0.0
R   F10.1








Думаю, что как-то так.

I0.0 - кнопка
F10.0 - требуемый результат
F10.1 - указатель нажатой кнопки. Условие для переключения триггера будет выполнено только в течение одного программного цикла.


Проверил, большое спасибо, все работает!!! clap.gif
agent_serg
Цитата(Михаил_PLC @ 2.6.2011, 14:21) *
Проверил, большое спасибо, все работает!!! clap.gif

Если у кнопки есть дребезг, тогда в последнем условии (перед R F10.1) добавьте таймер для задержки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.