10

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

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

4

5 回答 5

5

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

梯形逻辑可以转换为现代 HDL 之一,例如 Verilog .. 转换每个梯形图

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

像这样的表达

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

或者您可以使用分配语句

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

闭锁继电器

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

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

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

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

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

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

祝你好运。jbd

有几个梯形逻辑编辑器(带有模拟器)是免费的。这是一个在 Windows 上运行的软件:

http://cq.cx/ladder.pl

于 2008-09-16T10:41:08.060 回答
2

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

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

这项工作是使用称为DMS的通用程序分析和转换工具完成的,该工具 用于为 RLL 代码配备额外的逻辑以收集必要的数据。

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

于 2009-09-02T04:22:10.960 回答
0

有一个叫做 LogixPro 的程序,它有一个梯形逻辑的 IO 模拟器,你可以试试。

于 2009-03-28T16:52:33.443 回答
0

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

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

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

于 2011-09-29T01:08:23.333 回答
0

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

话虽如此,我制作的一个程序确实取得了一些成功,该程序基本上可以打开和关闭 IO ,它甚至可以模拟编码器的计数来测试物体到达某个位置时会发生什么。它们是断言语句,可能会被触发并告诉我我的逻辑错误在哪里。它确实捕获了一些错误,并且对于我从未接触过的系统而言,该实现非常顺利。它本身是非常有益的,我确实认为它可能很有用,但我已经好多了,所以我发现自己不需要它,因为我的经验。

于 2019-06-10T22:33:00.207 回答