过时的答案
这个答案非常针对 2014 年和 2015 年的情况。截至 2016 年,它包含不正确的信息。现在仍将保持原样以提供背景信息。
您可能不想要的快速答案
您可以使用 Codesys 非常合理地编写代码,将 JSON 数据包放在一起并将其发送到其他地方的服务器。JSON 只是文本,Codesys 可以以与 C 非常相似的方式处理文本。Codesys 中使用 Wago 提供的插件库提供了许多以太网协议。
现在长答案
首先一些背景
因为您似乎对 Wago 和 Codesys 的一般哲学不熟悉......历史很短。
Codesys 用于构建和部署硬实时执行环境,重要的是要了解在不完全了解后果的情况下使用库可能会破坏整个系统的性能(使 Codesys 陷入困境并在程序中引发看门狗错误)。请记住,许多 PLC 所控制的设备一旦发生故障就可能会导致人员死亡。
Wago 喜欢使用 Linux 为低级任务调度提供抢占式 RT 内核,然后配置 Codesys 以利用 linux 经常附带的许多标准 C 库。Wago 已经这样做了很长一段时间,但他们绝不允许您在不通过 Codesys的情况下揭开封面(这意味着使用 IEC 61131 语言,其中不包括 C++),这是为了您自己的安全(和他们的产品图片)。如果你想在 Wago 上使用 linux 的强大功能,你必须得到一个具有完全裸操作系统的特殊 PLC,几乎没有手册或支持,并放弃整个 Codesys 运行时。
与最近的型号相比,新的 PFC200 具有更多的 RAM 和内存,允许在不影响 Codesys 运行时的情况下包含更多的标准 linux用户空间堆栈(ssh、ftp、http……),并且他们宣传了这一点。但是......他们仍然对编译工具和编译和链接到 Codesys 库或访问专用硬件(连接 I/O 模块的 Wago KBUS)所需的头文件有所限制。
突触
- 你能破解 PFC200 并执行自定义二进制文件吗?大概是。
- 它会容易还是快速?不。
- 这在未来会改变吗?也许。请记住,PFC200 在北美是相当新的。
你可能不知道的事
Codesys 不一定了解或关心 Wago。您可以获得针对运行 linux 操作系统的英特尔处理器的 Codesys 目标平台。Codesys支持访问外部库(反向通信很危险),但他们通常期望 C 风格的接口,并且您只能通过定义 Codesys 将分析的 C 头来访问这些库,因此您可能需要做一些魔术让 C++ 无缝工作。您可以做的是创建 C++ 和 Codesys 都可以访问的共享内存段,这就是它们传递信息的方式(同步是另一个问题)。
您可以获得在 Linux 上运行 Codesys 的Open Wago PLC。Wago 的 IPC 专为此目的而制造。一般来说,它们具有更多的权力、记忆和沟通能力;但它们的成本确实是典型 Wago PLC 的两倍多。
如果你想玩弄破解 Wago 的想法,你需要拆开 Codesys 的手册(它有它自己的)、Wago IPC 的手册,并且已经熟悉 linux 风格的进程间通信和/或动态库。
此外,还有一个旧的 Wago PLC,上面有裸 Linux 750-8??。它还有一本非常好的手册,介绍如何使用提供的接头访问 Wago 硬件。
您必须首先了解 Codesys 期望如何与其目标操作系统对话。然后您向后工作,使其与该操作系统上的 Wago 特定库通信。您必须小心不要劫持 Codesys。
您额外的 C++ 库应该帮助 Codesys,而不是接管它。例如,在同一设备上托管一个 sqlite 数据库,并使用 C++ 来管理数据库并提供 Codesys 可以使用的非常简单的界面。Codesys 所做的只是调用一个函数并传递一些值,但您的 C++ 实际上会构建一个 SQL 查询并将其发送到数据库(Codesys 不需要知道为什么或如何发生这种情况)。
我希望至少有一段在某种程度上有所帮助。