测试梯形逻辑

时间:2008-09-16 10:21:51

标签: testing logic plc

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

到目前为止,我看到的唯一方法就是构建一个包含系统所有已知状态的大表,以及生成的输出状态。对于简单的'如果输入A打开,则在'情况下转动输出B'。我认为这不适用于更复杂的结构。

5 个答案:

答案 0 :(得分:4)

IC设计领域中“逻辑”系统的验证称为“设计验证”,它是确保您在硬件中设计的系统(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)开发测试平台并测试您的系统。 确保您的测试用例能够为您的逻辑提供良好的CODE覆盖率!如果您的梯形图编辑软件为您提供了不错的命名功能,请使用它们,而不是Rnn。

(注意:在用于PLC约定的梯形逻辑中,Rnn用于内部继电器,而Xnn是输入,Ynn是输出,可以从其中一个在线教程中快速收集。

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

对某些单位延误进行编程可能会有所帮助。

抱歉,我从未在verilog翻译器中寻找过逻辑逻辑。 但我今天的梯形逻辑只是被放入计算机进行PLC编程 - 我使用的大多数继电器系统都是REAL继电器,连接到机柜中!

祝你好运。 JBD

有一些梯形图逻辑编辑器(带有模拟器)可免费使用.. 这是一个在Windows上运行的应该是:

http://cq.cx/ladder.pl

答案 1 :(得分:1)

我们已经为Rockwell Control Logix控制器试验了测试覆盖率工具。大多数程序语言测试覆盖工具都进行分支覆盖或其他一些工作;因为Relay Ladder Logic通常不会分支,所以这不能很好地工作。

对于Rockwell控制器的RLL代码,我们的原型是MC/DC(修改/条件/决策覆盖)..这告诉我们,对于梯级中的每个条件,该条件是否已经测试为TRUE,测试为FALSE ,更重要的是,如果条件在一些测试中控制了阶段中决策的输出(至少是决策所控制的行动),在真实和错误的指导下。

这项工作是使用通用程序分析和转换工具完成的 DMS过去常常使用额外的逻辑来检测RLL代码以收集必要的数据。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

我的老板不断告诉我,测试是建立在逻辑本身中的。 PLC实际上是确定性的,因此您实际上应该能够遵循逻辑,而无需模拟测试。但是,我们并不完美。拥有框架实际上只会让我们逐步了解我们已经知道的内容,梯形图逻辑实际上只是通过练习来了解PLCS的工作原理。

话虽这么说,但我开发的程序在打开和关闭IO方面确实取得了不错的成绩,它甚至可以模拟编码器的计数,以测试物体到达某个位置时会发生什么。他们的断言断言可能会被绊倒,并告诉我我的逻辑错误在哪里。它确实捕获了一些错误,并且对于我从未接触过的系统而言,该实施效果很好。它本身是非常有益的,我确实认为它很有用,但是我已经变得更好了,所以由于我的经验,我发现自己并不需要它。