如何在PLC中使用梯形图确定输入方向?也就是说,如何保存之前的状态?
输入的先前状态。我需要确定光波被激活的方向..向前或向后。如果它们是反向激活的,则执行一个操作。如果它们是向前激活的,请执行不同的操作。标记为1到6的输入。法线方向是1到6。
发布于 2010-01-23 05:10:38
下面是梯形逻辑中一个锁存器的简单实现:
|-----[ ]-----+-----------------( )--------|
| 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 |发布于 2010-08-09 01:01:31
使用DirectLogic可编程控制器,有一个差分输入,这将使这一点非常容易。我敢打赌,大多数PLC都有类似的指令。
然而,如果你使用的是DirectLogic PLC,他们的RLL-Plus阶段编程将是梯形逻辑领域内“有状态”编程的更清晰的实现。
当输入从低到高时,正微分将用于执行输出逻辑。它只适用于一个周期,因此您可能需要使用一个闩锁或使用一个"set“。这取决于光电池是否重叠:
|
|----] _| [------] [----------------------( 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
与正微分指令
与梯级中的另一个触点串联的常开触点进行逻辑与运算。触点的状态将是打开的,直到相关的图像寄存点进行Off- On转换,关闭它以进行一次CPU扫描。此后,它将保持打开状态,直到另一次从关闭到打开的转换。
https://stackoverflow.com/questions/2120413
复制相似问题