代码之家  ›  专栏  ›  技术社区  ›  Erik van Brakel scottrakes

测试梯形逻辑

  •  11
  • Erik van Brakel scottrakes  · 技术社区  · 17 年前

    我们都知道测试OO系统的各种方法。然而,看起来我将要做一个项目,在这个项目中,我将处理PLC梯形逻辑(不要问:/),我想知道是否有一种很好的方法来测试系统的有效性。

    到目前为止,我看到的唯一方法就是简单地构建一个包含系统所有已知状态以及生成哪些输出状态的巨大表。这适用于简单的“如果输入A打开,则打开输出B”的情况。不过,我认为这不适用于更复杂的建筑。

    5 回复  |  直到 2 年前
        1
  •  4
  •   Brian Mains    13 年前

    IC设计领域中“逻辑”系统的验证称为“设计验证”,这是确保您在硬件(RTL)中设计的系统实现所需功能的过程。

    梯形逻辑可以转换为Verilog等现代HDL之一。。 变换每个阶梯

    |---|R15|---+---|/R16|---------(R18)--------|
    |           |
    |---|R12|---+
    

    像这样的表达

    always @(*) R18 = !R16 && ( R15 | R12);
    

    或者你可以使用assign语句

    assign R18 = R16 && (R15 | R12); 
    

    闭锁继电器

    assign R18 = (set condition) || R18 && !(break condition);
    

    然后使用免费的verilog模拟器,如 Icarus 开发一个测试台并测试您的系统。 确保你的测试用例能很好地覆盖你的逻辑!如果你的梯形图编辑软件为你提供了不错的命名功能,那就使用它们,而不是Rnn。

    (注:在PLC的梯形逻辑惯例中,Rnn用于内部继电器,而Xnn是输入,Ynn是输出,这可以从在线教程中快速收集到。

    Verilog将是一种更容易开发测试和测试台的语言!

    在某些单位延迟中编程可能会有所帮助。

    抱歉,我从未在verilog翻译器之间寻找过梯形逻辑。。 但在我那个时代,梯形逻辑刚刚被放入计算机中用于PLC编程——我使用的大多数继电器系统都是真正的继电器,连接到机柜中!!

    祝你好运。 日志块设备层

    有几个梯形逻辑编辑器(带模拟器)可供免费使用。。 这里有一个据称在windows上运行的程序:

    http://cq.cx/ladder.pl

        2
  •  1
  •   Ira Baxter    15 年前

    我们已经对Rockwell Control Logix控制器的测试覆盖工具进行了实验。大多数过程语言测试覆盖工具都会进行分支覆盖或类似操作;因为继电器梯形逻辑通常不会分支,所以这工作得不太好。

    我们制作的原型是 MC/DC 罗克韦尔控制器RLL代码的(修改/条件/决策覆盖范围)。对于梯级中的每个条件,这告诉该条件是否已被测试为TRUE、被测试为FALSE,更重要的是,在某些测试下,该条件是否在真方向和假方向上控制梯级中决策的输出(至少是决策控制的动作)。

    这项工作是使用名为的通用程序分析和转换工具完成的 DMS 用于用附加逻辑对RLL代码进行检测以收集必要的数据。

    你仍然需要编写单元测试代码。最简单的方法是让另一个PLC代替你想要控制的机械硬件,然后简单地编写另一个RLL程序来执行第一个程序。

        3
  •  0
  •   rlbond    16 年前

    有一个名为LogixPro的程序,它有一个用于梯形逻辑的IO模拟器,你可以试试。

        4
  •  0
  •   daniel    14 年前

    有时,在小型PLC程序中,测试程序(或子例程或梯形图文件)会写入项目中,仅在模拟项目时运行。该文件有一些简单的逻辑,当输出通电时,打开与反馈相关的输入。然后,您可以通过连接到PLC的任何HMI来控制PLC,并查看代码是否按预期运行。当软件下载到真实网站时,禁用或删除测试程序非常重要,因为它在现实世界中可以做非常奇怪的事情。

    在大型项目中,每个设备都有一个模拟模式,其功能略有相似。 http://www.batchcontrol.com/s88/01_tutorial/06-modules.shtml

    这与使用面向对象语言的测试框架完全不同,但我还没有真正看到PLC的任何测试驱动开发,甚至没有看到太多的自动化测试。