python 软件可以通过modbus代替PLC中的梯形图程序吗?

can python software take place of logic ladder program in PLC through modbus?

试图找出使用 Raspberry Pi/linux 服务器控制工业 PLC 的最佳方法 - 特别是使用 python 和以太网上的 pymodbus (modbusTCP)...

一旦PLC内部注册表正确映射到modbus,python中编写的软件是否可以代替PLC中的梯形图逻辑编程并完全控制它?

或者是否还需要编写梯形图逻辑/本机 PLC 代码?

您不应该用 linux 服务器替换 PLC 逻辑。为此,您需要实时 OS。即使 运行 实时 OS 并用它控制 PLC 也不是一个好主意。 PLC-s 内置各种检查,用于控制 inputs/outputs、程序循环、内部诊断等。它们是专门用于该任务的工具。恕我直言,梯形图逻辑比实时更容易学习 OS。

您应该将您的服务器用作 HMI - 人机界面,将控制数据发送到 PLC 并将其显示回用户。

如果您的项目是为了学习经验或个人项目,那么您当然应该随心所欲。

我不知道你在讨论的具体配置中是否可以做到这一点;事实上,您没有说您使用的是哪个 PLC,所以我怀疑任何受访者都可以告诉您。

但假设你可以在技术上连接这些部件,你可能会发现性能不足以真正进行可靠的机械控制。

通常 PLC 运行 通过他们的程序每秒数百次,每次采样输入并计算新的输出。这足够快,所以机械师可以有效地看到 "smooth" 控制。 (5 Hz 可能会导致硬件的机械颤动和抖动)。

如果你 "involve" Python 计算那个,你有支付总线通信时间 to/from PLC 到 Python,Python 唤醒时间,Python 执行时间,以及 Python 消息 packing/unpacking 时间。我怀疑你能否以每秒数百次的速度可靠地实现所有这些(当 OS 中断 Python 将 10M 数据写入磁盘以供其他后台进程使用时会发生什么)?

如果您坚持以某种方式让 Python 参与进来,它应该只充当顾问角色。也就是说,PLC 完成所有工作(例如,您需要写入 "ladder logic/..."),但 Python 代码偶尔会向 PLC 发送消息以更改其整体行为,例如控制模式、进给费率等

这个视频看起来是个不错的起点:

https://www.youtube.com/watch?v=EAXJ_3dfeNI

我会亲自在 PLC 上编写我所有的机器控制代码。然后我会通过 ModbusTCP 与 Pi 共享我的变量的状态以做任何其他事情

好吧,让我们假设您拥有非常高效的代码。你创建了一些字典,做了一些 lambda。您可以在 5 毫秒内循环通过 2000 个 IO 点的逻辑集。

我每天 Lua 都这样做。 PLC硬件是基于FPGA的。但绝对不要扫描速度超过 10 毫秒。使用数据会减慢它们的速度。通常以 25 毫秒的扫描结束。

正确编程的

Python 和 Lua 可以在 1-2 毫秒内扫描超过 2600 行代码。

您需要一个 C 包装程序才能 运行 扫描。使用 TCP modbus 设备。每个 IP 地址永远不会超过 32 个 IO。其实很简单。

不懂PLC或只懂PLC的人会误入歧途。做你的作业。学习Lua。然后证明他们是错的。

希望对您有所帮助。

您可以在 Python 中使用以下方法试验您的 PLC 逻辑:

https://github.com/QQuick/SimPyLC

然后生成 C++ 并使用 Arduino 实时 运行 它。

但仅将其用于非安全关键项目。 它不适用于任何可能造成损坏或伤害的东西。 始终测试您最终的真实 PLC 代码,而不是依赖 Python 工具来确保正确性。