如何为实时系统实现Python Gekko应用程序?
我想将Python Gekko应用程序连接到实时系统。对于控制器的每个“循环”,有三个步骤:如何为实时系统实现Python Gekko应用程序?,python,gekko,Python,Gekko,我想将Python Gekko应用程序连接到实时系统。对于控制器的每个“循环”,有三个步骤: 从测量装置读取电流值 Python应用程序基于度量和预测模型创建新的移动计划 移动计划将重新插入到物理进程中 该过程的可视化显示在此框架中或从该框架中 要连接到实时系统,客户端必须读取和写入值。用于连接过程控制系统(如Python中的分布式控制系统(DCS)或可编程逻辑控制器(PLC))的标准通信协议是什么?Python可以读取和写入MODBUS、OPC以及SQL或其他协议中的值。以下是Modbus(
要连接到实时系统,客户端必须读取和写入值。用于连接过程控制系统(如Python中的分布式控制系统(DCS)或可编程逻辑控制器(PLC))的标准通信协议是什么?Python可以读取和写入MODBUS、OPC以及SQL或其他协议中的值。以下是Modbus(pymodbus)和OPC(OpenOPC)的示例 Python中的OPC示例
########################################
#OPC写入
# #######################################
尝试:
#OPC连接
导入OpenOPC
opc=OpenOPC.client()
b=opc.connect('Kepware.KEPServerEX.V5')
#opc.connect('Kepware.KEPServerEX.V5','localhost')
载荷1_平均值=opcm[0][0]
载荷2_平均值=opcm[0][1]
载荷3_平均值=opcm[0][2]
载荷4_平均值=opcm[0][3]
载荷1_max=opcm[1][0]
载荷2_max=opcm[1][1]
载荷3_max=opcm[1][2]
载荷4_max=opcm[1][3]
载荷1_min=opcm[2][0]
荷载2_min=opcm[2][1]
载荷3_min=opcm[2][2]
载荷4_min=opcm[2][3]
加载_T12=opcm[3][0]
荷载=opcm[3][1]
荷载=opcm[3][2]
荷载=opcm[3][3]
opc.write(('Channel2.Device1.T_12_Load_AVG',Load1_AVG))
opc.write(('Channel2.Device1.T_21_Load_AVG',Load2_AVG))
opc.write(('Channel2.Device1.T_32_Load_AVG',Load3_AVG))
opc.write(('Channel2.Device1.T_41_Load_AVG',Load4_AVG))
opc.write(('Channel2.Device1.T_12_Load_MAX',Load1_MAX))
opc.write(('Channel2.Device1.T_21_Load_MAX',Load2_MAX))
opc.write(('Channel2.Device1.T_32_Load_MAX',Load3_MAX))
opc.write(('Channel2.Device1.T_41_Load_MAX',Load4_MAX))
opc.write(('Channel2.Device1.T_12_Load_MIN',Load1_MIN))
opc.write(('Channel2.Device1.T_21_Load_MIN',Load2_MIN))
opc.write(('Channel2.Device1.T_32_Load_MIN',Load3_MIN))
opc.write(('Channel2.Device1.T_41_Load_MIN',Load4_MIN))
opc.write(('Channel2.Device1.T_12_Load_INST',Load_T12))
opc.write(('Channel2.Device1.T_21_Load_INST',Load_T21))
opc.write(('Channel2.Device1.T_32_Load_INST',Load_T32))
opc.write(('Channel2.Device1.T_41_Load_INST',Load_T41))
opc.close()
除:
打印“OPC通信失败”
通过
Python中的MODBUS示例
########################################
#Modbus写入
# #######################################
尝试:
#导入各种服务器实现
从pymodbus.client.sync导入modbuscpclient作为ModbusClient
从pymodbus.constants导入Endian
从pymodbus.payload导入二进制PayloadBuilder
从pymodbus.client.sync导入modbuscpclient作为ModbusClient
从pymodbus.payload导入二进制PayloadDecoder
#启动客户端
##client=ModbusClient('192.168.0.1')
client=ModbusClient(host='localhost',port=502)
从机地址=0
#平均寄存器Modbus 40001,3,5,7
#最大寄存器Modbus 40009,11,13,15
#最小寄存器Modbus 40017,19,21,23
#仪表寄存器Modbus 40025,27,29,31
#登记册
reg=0
#平均值,最大值,最小值,仪表
对于范围(0,4)内的i:
#渠道
对于范围(0,4)内的j:
builder=BinaryPayloadBuilder(endian=endian.Little)
builder.add_32位浮点(opcm[j][i])
payload=builder.build()
结果=客户端。写入寄存器(int(reg),有效负载,跳过编码=真,单位=int(从机地址))
#两个浮点数寄存器
reg=reg+2
client.close()
除:
打印“Modbus通信失败”
通过
除MODBUS和OPC外,还有其他基于文本的文件传输和公司支持的其他通信方法,尽管这些方法在石油和天然气行业中最为常见,因为这些行业具有分布式控制系统(DCS)或可编程逻辑控制器(PLC),用于调度和数据采集(DAQ)。据我所知,在工业应用中,Gekko/APMonitor大约有140个实例。其中一些是