Вот простая реализация защелки в релейных логиках:
|-----[ ]-----+-----------------()--------|
| 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 |
Вопрос не ясен, что вы имеете в виду предыдущее состояние и что он имеет отношение к направлениям? – slebetman
Предыдущее состояние входов. Мне нужно определить направление, в котором были активированы фотоэлементы .. вперед или назад – 2010-01-22 20:57:20