Вот простая реализация защелки в лестничной логике:
|-----[ ]-----+-----------------( )--------|
| input | output |
| | |
|-----[ ]-----' |
output
и вот где вы можете сбросить вывод:
|-----[ ]-------------+---------( )--------|
| input | output |
| | |
|-----[ ]-----[/]-----' |
output reset
Они образуют фундаментальные строительные блоки для памяти в релейной логике. Я не уверен, но это то, что вы ищете?
Обычно язык, реализующий лестничную логику, имеет элементы более высокого уровня, которые реализуют память, такую как D и T триггеры. Прочитайте документацию вашей реализации релейной логики, чтобы узнать, доступны ли они.
ОК, из ваших комментариев это выглядит так, как вы хотите:
// 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 |