2010-01-22 2 views
0

Как определить направление входов с использованием лестничных диаграмм с ПЛК? Смысл, как вы сохраняете предыдущее состояние?Направленная логика PLC

Предыдущее состояние входов. Мне нужно определить направление, в котором активировались фотоэлементы .. вперед или назад. Если они активированы в обратном порядке, выполните одно действие. Если они активированы вперед, выполните другое действие. Входы, обозначенные от 1 до 6. Нормального направления 1 до 6.

+0

Вопрос не ясен, что вы имеете в виду предыдущее состояние и что он имеет отношение к направлениям? – slebetman

+0

Предыдущее состояние входов. Мне нужно определить направление, в котором были активированы фотоэлементы .. вперед или назад – 2010-01-22 20:57:20

ответ

1

Вот простая реализация защелки в релейных логиках:

|-----[ ]-----+-----------------()--------| 
| input |    output  | 
|    |       | 
|-----[ ]-----'       | 
    output 

и вот один, где вы можете сбросить вывод:

|-----[ ]-------------+---------()--------| 
| input   |  output  | 
|      |     | 
|-----[ ]-----[/]-----'     | 
    output reset 

Они образуют фундаментальные строительные блоки для памяти в лестничной логике. Я не уверен, но это то, что вы ищете?

Обычно язык, реализующий лестничную логику, будет иметь элементы более высокого уровня, которые реализуют память, такую ​​как D и T триггеры. Прочтите документацию по реализации вашей лестничной логики, чтобы узнать, доступны ли они.

OK, от ваших комментариев это выглядит как то, что вы хотите:

// Pseudocode: 
// a = sensor 1 
// b = sensor 2 

if (a) { 
    a_triggered = true; 
} 

if (b) { 
    if (!a_triggered) { 
     REVERSE_DETECTED(); 
    } 
    else { 
     a_triggered = false; 
    } 
} 

Это предполагает, что датчики близко друг к другу таким образом, что переход 10-> 11-> 01 так, что вы не можете обнаружить направление движения, в то время как элемент запускает оба датчика. Запись этого декларативно:

a_triggered = (a || a_triggered) && !(b_triggered && !b); 
b_triggered = (b || b_triggered) && a_triggered; 
reverse_detected = b && !a_triggered; 

Что переводится:

|-----[ ]---------+-----[/]--------()--------| 
|  a   |  c  a_triggered | 
|     |       | 
|-----[ ]---------'       | 
| a_triggered        | 
|            | 
|-----[ ]---------+-----[ ]--------()--------| 
|  b   | a_triggered b_triggered | 
|     |       | 
|-----[ ]---------'       | 
| b_triggered        | 
|            | 
|-----[ ]----------[/]-------------()--------| 
| b_triggered  b    c   | 
|            | 
|-----[ ]----------[/]-------------()--------| 
|  b  a_triggered reverse_detected | 

Теперь вы можете использовать обратный сигнал обнаружен, чтобы делать то, что вы хотите. Если ваш язык лестница имеет защелок вы можете сделать это уборщик:

|        _________  | 
|-----[ ]--------------------|set latch|------| 
|  a      |   |  | 
|-----[ ]--------------------|clear |  | 
|  c      |_________|  | 
|       a_triggered  | 
|        _________  | 
|-----[ ]--------------------|set latch|------| 
|  b      |   |  | 
|-----[/]--------------------|clear |  | 
| a_triggered    |_________|  | 
|       b_triggered  | 
|            | 
|-----[ ]----------[/]-------------()--------| 
| b_triggered  b    c   | 
|            | 
|-----[ ]----------[/]-------------()--------| 
|  b  a_triggered reverse_detected | 
+0

Gotcha. У меня есть три основных состояния для первых двух входов. Как бы я определил, какой вход был взят первым, если идти в обратном направлении? Например, IN 1 ON, IN 2 OFF. Затем IN 1 OFF, IN 2 ON, но затем IN 1 ON, IN 2 OFF. Какие возможности я могу определить в этом случае? – 2010-01-22 21:34:55

+0

Я до сих пор не понимаю. Учитывая последовательность, которую вы дали, предполагая (1,2), что вы ожидаете от 10-> 01-> 10? С переключателями реального мира, делает ли 10-> 00-> 01-> 00-> 10 то же самое? И что вы подразумеваете под тремя состояниями? Вы указали только два состояния: 10 и 01. – slebetman

+0

Если человек правильно входит в лучи, но затем отступает, ворота должны закрываться автоматически, пока безопасность не задействована. Мне нужно отслеживать состояния, чтобы я знал, что была последняя последовательность – 2010-01-22 23:16:07

1

Использование программируемых контроллеров DirectLogic, есть дифференциальный вход, что бы сделать это очень легко. Я был бы готов поспорить, что большинство ПЛК имеют аналогичные инструкции.

Однако, если вы используете ПЛК DirectLogic, их этапное программирование RLL-Plus было бы намного более ясной реализацией «stateful» программирования в области лестничной логики.

Положительный дифференциал будет использоваться для выполнения выходной логики, когда вход идет от низкого к высокому. Это справедливо только для одного цикла, поэтому возможно, вам понадобится защелка или использовать «набор». Это зависит от фотоэлементов, являющихся перекрывающихся:

| 
|----] _| [------] [----------------------(set)---| 
|  1   2   |  reverse detected 
|       | 
|----] _| [------] [--------| 
|  2   3   | 
|       | 
|----] _| [------] [--------| 
|  3   4   | 
|       | 
|----] _| [------] [--------| 
|  4   5   | 
|       | 
|----] _| [------] [--------| 
|  5   6   
| 
| 

В этом случае, если 2 включена, и 1 переходит на высокий уровень, установить или защелка обратного бита обнаружения. Или логика ввода с каждым возможным разворотом (2 идет вверх, а 3 - включен) будет держать это до одной ступени, если вы заботитесь о таких вещах.

Неясно, существует ли перекрытие фотоэлементов.Если не перекрываются, я мог бы сделать это больше похоже на ответ slebetman в:

| 
|----]|_ [-------------------------------(set)---| 
|  2        2 exited 
|       
|----]|_ [-------------------------------(set)---| 
|  3        | 3 exited 
|         | 
|         |---(rst)---| 
|          2 exited 
| 
| 
|----]|_ [-------------------------------(set)---| 
|  4        | 4 exited 
|         | 
|         |---(rst)---| 
|          3 exited 
| 
| 
|----]|_ [-------------------------------(set)---| 
|  5        | 5 exited 
|         | 
|         |---(rst)---| 
|          4 exited 
| 
| 
|----]|_ [-------------------------------(set)---| 
|  6        | 6 exited 
|         | 
|         |---(rst)---| 
|          5 exited 
| 
| 
|----] _| [------] [----------------------(set)---| 
|  1  2 exited  |  reverse detected 
|       | 
|----] _| [------] [--------| 
|  2  3 exited  | 
|       | 
|----] _| [------] [--------| 
|  3  4 exited  | 
|       | 
|----] _| [------] [--------| 
|  4  5 exited  | 
|       | 
|----] _| [------] [--------| 
|  5  6 exited  
|       

Из Manual:

И Positive Дифференциальный инструкция логически Ands нормально открытый контакт последовательно с другим контактом в ступеньке. Состояние контакта будет открыто до тех пор, пока соответствующая точка регистра изображения не перейдет в режим «Отключено», и не будет закрыта для одного сканирования процессора. После этого он остается открытым до другого перехода в режим «Вкл.».

Смежные вопросы