CODESYS 梯形图调试入门

在编程PLC之后,测试和调试代码的能力是PLC程序员最重要的技能。

在投入生产环境之前,您的所有代码都必须经过彻底测试,以验证其在正常和异常情况下(如设备故障时)都能按预期工作。

在此测试过程中发现的任何错误都必须解决,因为软件错误可能导致生产时间损失、产品损坏以及工厂或工厂中的不安全情况。

让我们从最常见的错误类型开始:语法错误。

1、语法错误

语法错误是代码语法或措辞中的错误。大多数语法错误是由程序员错误输入变量名称引起的。

CODESYS在您工作时会不断检查代码中的语法错误,任何语法错误都会用红色波浪线在错误源下方突出显示。

当您将鼠标悬停在代码中有错误的部分时,工具提示会提供有关CODESYS检测到的错误的更多信息。

CODESYS还会在将项目构建为可执行代码时检查并报告语法错误。您可以通过单击"构建">"生成代码"来手动构建项目。在下载到PLC之前,项目也会自动构建。

在构建过程中发现的任何语法错误都会显示在屏幕底部的"消息"窗口中。在这种情况下,我们可以看到编译器抱怨变量vaTankLvl未定义。

如果我不确定这个错误来自项目的哪个位置,我可以双击该消息,CODESYS将直接带我到错误源。

语法错误通常容易找到、理解和解决。在这种情况下,我只需更正代码中的拼写错误即可清除错误。

2、逻辑错误

语法错误容易找到和修复,因为CODESYS编译器会突出显示它们。

逻辑错误是程序员在编写应用程序逻辑时犯的错误。在这种情况下,代码的语法是正确的,但逻辑不正确。

逻辑错误不会被CODESYS编译器突出显示,因为编译器不知道您的逻辑应该如何表现,因此无法告诉您它是否错误。

在这个例子中,我意外地在逻辑中两次使用了相同的变量ouOpenFillValve1

编译器没有报告错误,因为语法是正确的,但逻辑不会按我想要的方式工作。

逻辑错误在项目的单元测试和系统测试中被发现。

即使是经验丰富的程序员也会意外地在程序中引入逻辑错误,逻辑错误是我鼓励学生尽早并经常测试代码的原因之一。

通过经常测试代码,我们可以在引入逻辑错误时找到并修复它们,而不是等到代码变得过于复杂和难以调试。

在这种情况下,单元测试将显示只有一个阀门正在打开,我可以通过更新代码使用正确的变量来修复错误。

3、时序和顺序错误

时序和顺序错误是逻辑错误的一个子集,可能会给PLC程序员带来很多困难。

很多时候,PLC程序员编写逻辑来控制顺序过程。在顺序过程中,一个步骤按照预定义的逻辑方式跟随另一个步骤。

顺序过程的一个例子是混合过程。在混合过程中,储罐按顺序填充、混合和排空。

顺序过程由称为顺序器的软件控制。当顺序器出现问题且未激活下一个顺序步骤或激活了错误的步骤时,就会发生顺序错误。

这可能导致顺序过程表现异常或在过程中卡住。

通常,顺序错误是由时序错误引起的。

时序错误是一种特定类型的错误,发生在某些变量在正确的时间没有正确的值,或者逻辑未配置为在正确的时间检查正确的变量。

在这个例子中,储罐在任何时候都应该只有一个步骤处于活动状态,但由于逻辑的编写方式,有人可能在当前周期完成之前按下启动按钮并开始新周期。

这是一个顺序错误和时序错误的例子。这是一个顺序错误,因为逻辑允许多个顺序步骤同时处于活动状态。这是一个时序错误,因为它允许在错误的时间启动过程。

为了解决这个问题,我们可以更新逻辑,只允许在没有其他步骤处于活动状态时才启动周期。

4、调试技术

顺序和时序错误可能很难解决,因为通常很难通过阅读代码来找到和修复错误的根本原因。为了解决时序错误,大多数PLC程序员将使用多种技术的组合,包括:

  • 陷阱位,这些是测试变量,在PLC程序中设置为不同的值,以查看是否正在执行代码的某一部分,
  • 跟踪,这些是显示一组变量随时间变化值的图表,以及
  • 断点,在特定时间停止程序的执行以查看变量具有什么值,然后逐行执行程序的其余部分以查看错误发生的位置

这些是超出本文范围的高级调试技术。

5、建议

现在您知道了在PLC程序中最常见的错误类型以及如何解决它们。

解决错误可能非常困难和令人沮丧,因此作为PLC程序员,您能做的最好的事情就是编写没有错误的好代码。

虽然不可能编写完美的代码,但您可以通过以下方式提高代码质量并减少程序中的错误:

  • 组织好代码,
  • 遵循描述性命名约定,
  • 使用梯级和变量注释来记录您的逻辑,
  • 定期让同行审查您的代码以识别改进领域,
  • 定期备份以便在需要时比较和恢复逻辑

6、结束语

在本文中,您了解了在PLC程序员职业生涯中最常见的错误类型以及如何找到和修复这些错误。

您还学习了一些最佳实践,以帮助减少代码中发现的错误数量。

您有哪些其他技巧可以帮助减少PLC程序中的错误数量?请在评论中告诉我们。


原文链接:Ladder Logic Debugging: Solving Problems in PLC Programs

汇智网翻译整理,转载请标明出处