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

测试梯形逻辑

  •  8
  • Erik van Brakel scottrakes  · 技术社区  · 16 年前

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

    到目前为止,我看到的唯一方法就是简单地构造一个包含系统所有已知状态和生成的输出状态的巨大表。这对于简单的“如果输入A打开,则打开输出B”情况是可行的。但我不认为这对更复杂的结构有效。

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

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

    梯形逻辑可以转换成现代HDL的一种,就像Verilog。 变换每个阶梯

    |---|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编程而被放进了一台计算机——我使用的大多数继电器系统都是真正的继电器,被连接到了柜子里!!

    祝你好运。 JBD

    有两个梯形逻辑编辑器(带同步器)可免费使用。 这是一个在Windows上运行的程序,据说:

    http://cq.cx/ladder.pl

        2
  •  1
  •   Ira Baxter    15 年前

    我们已经试验了用于罗克韦尔控制逻辑控制器的测试覆盖工具。大多数程序语言测试覆盖工具都进行分支覆盖或类似的工作;因为中继梯形图逻辑通常不进行分支,所以这并不能很好地工作。

    我们的原型是 MC/DC 罗克韦尔控制器的RLL代码(修改/条件/决定范围)。这说明,对于梯级中的每个条件,该条件是否被测试为真、测试为假,更重要的是,在某些测试中,如果条件控制梯级中决策的输出(至少是由决策控制的操作),在真和假方向上。

    这项工作是使用一个名为 DMS 用于用附加逻辑检测RLL代码以收集必要的数据。

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

        3
  •  0
  •   rlbond    16 年前

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

        4
  •  0
  •   daniel    13 年前

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

    在更大的项目中,每个设备都有一个模拟模式,可以做一些稍微相似的事情。 http://www.batchcontrol.com/s88/01_tutorial/06-modules.shtml

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