使用 pyads 非常频繁地打开和关闭与 PLC 的连接
Open and close a connection to a PLC very frequently using pyads
所以我有一个 flask 应用程序,它将提供由 PLC 管理的某些模块的状态。我会在我的应用程序上收到非常频繁的 GET 请求(~每 1 秒),并且每次 GET 调用时,我都必须从 PLC 获取状态。我正在使用 pyads 连接到 PLC。它们连接到 PLC 的方式如基本用法所示:
import pyads
# connect to plc and open connection
plc = pyads.Connection('127.0.0.1.1.1', pyads.PORT_SPS1)
plc.open()
# read int value by name
i = plc.read_by_name("GVL.int_val")
# write int value by name
plc.write_by_name("GVL.int_val", i)
# close connection
plc.close()
所以我的问题是,我应该在 GET 调用的视图函数中打开和关闭与 PLC 的连接,还是应该在创建应用程序时打开与 PLC 的连接并在整个应用程序中继续使用该连接?哪个更好?
我也不太明白pyads包和PLC打开的是什么样的连接?是 TCP 连接吗?
是的,这是我从 here and here 收集到的 TCP 连接
由于 Pyads 只是底层 TwinCAT 的包装器,它使用与 TwinCAT 相同的底层协议。
我看TwinCAT documentation,示例库不会每次都主动关闭连接。所以我相信你可以连接一次并保持连接打开。
所以我有一个 flask 应用程序,它将提供由 PLC 管理的某些模块的状态。我会在我的应用程序上收到非常频繁的 GET 请求(~每 1 秒),并且每次 GET 调用时,我都必须从 PLC 获取状态。我正在使用 pyads 连接到 PLC。它们连接到 PLC 的方式如基本用法所示:
import pyads
# connect to plc and open connection
plc = pyads.Connection('127.0.0.1.1.1', pyads.PORT_SPS1)
plc.open()
# read int value by name
i = plc.read_by_name("GVL.int_val")
# write int value by name
plc.write_by_name("GVL.int_val", i)
# close connection
plc.close()
所以我的问题是,我应该在 GET 调用的视图函数中打开和关闭与 PLC 的连接,还是应该在创建应用程序时打开与 PLC 的连接并在整个应用程序中继续使用该连接?哪个更好?
我也不太明白pyads包和PLC打开的是什么样的连接?是 TCP 连接吗?
是的,这是我从 here and here 收集到的 TCP 连接 由于 Pyads 只是底层 TwinCAT 的包装器,它使用与 TwinCAT 相同的底层协议。
我看TwinCAT documentation,示例库不会每次都主动关闭连接。所以我相信你可以连接一次并保持连接打开。