【问题标题】:Directional Logic PLC方向逻辑PLC
【发布时间】:2010-08-09 01:25:00
【问题描述】:

如何在 PLC 中使用梯形图确定输入方向?意思是,你如何保存之前的状态?

输入的先前状态。我需要确定光束被激活的方向......向前或向后。如果它们被反向激活,请执行一项操作。如果它们被向前激活,请执行不同的操作。输入标记为 1 到 6。法线方向为 1 到 6。

【问题讨论】:

  • 问题不清楚,你是什么意思以前的状态,它与方向有什么关系?
  • 输入的先前状态。我需要确定光束被激活的方向.. 正向或反向

标签: logic plc


【解决方案1】:

这是梯形逻辑中锁存器的简单实现:

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

您可以在此处重置输出:

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

这些构成了梯形逻辑中内存的基本构建块。我不确定,但这就是你要找的吗?

通常,实现梯形逻辑的语言将具有实现内存的更高级别元素,例如 D 和 T 触发器。阅读您的梯形逻辑实现的文档,看看它们是否可用。

好的,从您的 cmets 看来,您想要的是:

// 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  |

【讨论】:

  • 明白了。对于前两个输入,我有三个基本状态。如果反过来,我将如何确定首先击中哪个输入?例如,IN 1 开启,IN 2 关闭。然后 IN 1 关闭,IN 2 开启,然后 IN 1 开启,IN 2 关闭。在这种情况下,我必须具备哪些能力来确定方向?
  • 我还是不明白。给定您给出的序列,假设 (1,2),您期望 10->01->10 输出什么?对于现实世界的开关,10->00->01->00->10 做同样的事情吗?你说的三个州是什么意思?您只给出了两种状态:10 和 01。
  • 如果此人正确进入光束,但随后退出,只要安全装置未启用,大门应自动关闭。我需要跟踪状态,以便知道最后一个序列是什么
  • 有两个梁吗?是这个意思吗?
  • 是的,梁 1,2,3,4,5,6.. 它们按 1&2、3&4、5&6 分组。正常流程是 1 到 6。但如果这个人去 1-2,然后返回 2-1 - 我想知道,所以我知道他们是否退出
【解决方案2】:

使用 DirectLogic 可编程控制器,有一个差分输入可以很容易地做到这一点。我敢打赌,大多数 PLC 都有类似的指令。

但是,如果您使用的是 DirectLogic PLC,他们的 RLL-Plus 阶段编程将是梯形逻辑领域内“有状态”编程的更清晰的实现。

当输入从低到高时,正差分将用于执行输出逻辑。这仅适用于一个周期,因此您可能需要使用闩锁或使用“设置”。这取决于重叠的光电管:

|
|----] _| [------] [----------------------( 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-to-On 转换,将其关闭以进行一次 CPU 扫描。此后,它保持打开状态,直到另一个 Off-to-On 转换。

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 2014-10-08
    • 2010-12-21
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多