我正在尝试为望远镜的圆顶创建一个控制模块。我将使用 Beckhoff PLC。我不确定如何进行整个过程。我有 C++ 知识,但我不确定使用 TwinCAT 对 PLC 进行编程。
在 TwinCAT 中为 PLC 编程是否与编写任何其他控制程序相同?另外,我应该选择状态机模块吗?然而,由于我缺乏编程知识,我不确定我是否能够应付对状态机的编程。
我正在尝试为望远镜的圆顶创建一个控制模块。我将使用 Beckhoff PLC。我不确定如何进行整个过程。我有 C++ 知识,但我不确定使用 TwinCAT 对 PLC 进行编程。
在 TwinCAT 中为 PLC 编程是否与编写任何其他控制程序相同?另外,我应该选择状态机模块吗?然而,由于我缺乏编程知识,我不确定我是否能够应付对状态机的编程。
此特定应用程序需要考虑的事项:
你最好有一个明确的扫描:输入=>逻辑=>输出,例如梯形逻辑或等效的结构化文本是典型的。在我看来,结构化文本会更容易编辑和理解。
至于 C++,很可能在 C++ 中模拟 PLC 扫描:
在这个中心循环中不断地执行以下操作:
. 从传感器读取
. 执行逻辑运算和计算
. 写入执行器(在这种情况下为电机)
“真正的”PLC 的优势在于您将能够实时调试并在活动操作期间观察和更改所有变量。
在 C++ 中也可以模拟这一点。但对于一个相对简单的项目,我会坚持使用现有的 PLC。
所以结构化文本或梯形逻辑在我看来是最合适的。
除了其他语言之外,TwinCAT 3 可以用 C++ 编程(TwinSAFE 也可以用 C++ 编程)。它不是标准的 C++,而是受限版本。此外,TwinCAT 3 中的 C++ 编程有点棘手,如果与 IEC 61131 语言(ST、CFC、SFC、IL、LADDER 等)相比,您需要做一些额外的步骤来将 C++ 代码集成到 TwinCAT 任务中。 .
例如,ST 是一种简单的语言,与 PASCAL、C++ 或 C# 非常相似。非常推荐用于 PLC 编程的图形语言(例如 CFC/SFC)并且非常强大。这些语言可以帮助您以非常相似的方式编码,因为机器是电动工作的,如果您有一些关于电的概念,您会发现它们非常简单和更好。
PLC 编程和常规编程之间的主要区别在于 PLC 的工作方式,正如 Jacques de Hooge 发布的链接中完美描述的那样。每个 PLC 循环或扫描都包含三个步骤:
看门狗正在监视扫描以确保它在扫描时间(通常为 10-20 毫秒)内执行,并且下一次扫描在其相应的时隙开始。如果在扫描时间内没有完成扫描,则将其重置为开始,并可能导致 CPU 停止。
因此,PLC 像一个没有结束的连续循环一样工作,而常规的 PC 应用程序有一个应用程序的开始和一个结束。此外,PLC 编程中的内存管理和 FB/面向对象与 PC 编程有很大不同,而 C++ 并不真正适合 PLC 模型。
TwinCAT 基于 CodeSyS,因此它的工作方式与 Schneider 的 Somachine 或 Omron、ABB、Allen Bradley 等的其他 PLC 非常相似。
我认为与其在 C++/ST 中编写状态机,不如使用一个 SFC 控制器来支持一些 CFC/ST 代码。请记住,仅通过使用 SFC,您就拥有了 Beckhoff 为您开发的状态机,您只需要编程(在 ST 或其他语言中)在每个步骤中做什么以及如何从一个步骤转换到另一个步骤。