Enums Beckhoff PLC使用ENUM';有什么问题吗

Enums Beckhoff PLC使用ENUM';有什么问题吗,enums,plc,Enums,Plc,当我在C#中的switch语句中使用enum时,我会将debug break语句添加到默认情况中,以防止向enum添加开关未覆盖的项。在调试过程中,如果遇到默认情况,代码将中断 现在我正在编程一个beckhoff PLC,并希望在一个案例中也这样做。。除此之外…STL中的结束案例。这在PLC编程中是可能的和/或正常的吗?我认为你不能。此外,停止PLC程序并阻止其执行与机器相关的代码也是不可取的 相反,您可以使用ADSLOGSTR函数来记录事件记录器。或者显示一个消息框。这将在TC2和TC3中都起

当我在C#中的switch语句中使用enum时,我会将debug break语句添加到默认情况中,以防止向enum添加开关未覆盖的项。在调试过程中,如果遇到默认情况,代码将中断


现在我正在编程一个beckhoff PLC,并希望在一个案例中也这样做。。除此之外…STL中的结束案例。这在PLC编程中是可能的和/或正常的吗?

我认为你不能。此外,停止PLC程序并阻止其执行与机器相关的代码也是不可取的


相反,您可以使用ADSLOGSTR函数来记录事件记录器。或者显示一个消息框。这将在TC2和TC3中都起作用。

您可以在联机模式下设置断点,但正如pboedker指出的,一旦达到断点(除非您有特殊配置,但这是另一个主题),您的ethercat主机将超时,您的安全模块将产生com错误,您的驱动器也需要重置

如果您的项目中没有真正的硬件和ethercat主机,您可以毫无顾虑地使用断点

我个人采取另一种方法

我总是在plc中构建一个单独的调试可视化,并使用一个特殊的调试功能块来帮助我跟踪项目中的错误

例如,在您的例子中,当程序流达到默认情况时,我只需使用错误代码和字符串调用调试函数块的一个特殊方法。 错误代码和字符串将在调试可视化中可视化

即使这比简单地调用adslogstr要费劲一点,我还是希望实现一个单独的调试功能块,原因有三:

  • 您需要更多的逻辑,而不是简单地调用adslogstr,因为如果有机会循环调用adslogstr,您最终会对事件记录器发出垃圾邮件
  • 在其他项目中重用
  • 如果需要,您可以将调试可视化扩展到测试套件,这很方便
  • 您可以在此处找到有关beckhoff可视化的更多信息:


    正如菲利波所说,断点是可能的。通过设置keepoutpsonbp,可以防止在断点期间重置输出(请参见:)

    您还可以使用
    ADSLOGSTR
    (请参见此:)将错误/警告/注释消息设置到Visual Studio。因此,添加一个带有适当消息的
    ADSLOGSTR
    调用到您的
    CASE ELSE
    ,您将在错误列表/TwinCAT控制台中看到它


    编辑:不知怎么错过了pboedkers的答案,他已经回答了ADSLOGSTR。

    我喜欢Filippo的解决方案。将来可以很容易地更改调试函数的行为,而无需过多地接触代码

    我在C#解决方案中考虑了很多:)
    谢谢!

    KeepOutputsOnBP是一个很好的提示,但我相信安全模块无论如何都会产生一个错误,从而将整个机器设置为错误状态。可能是,没有与安全逻辑一起使用。只有正常且没有问题。Hey Twan,“要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色变为已填写。”