0209整理
This commit is contained in:
192
core/system.py
192
core/system.py
@ -27,62 +27,70 @@ class FeedingControlSystem:
|
||||
port=ini_manager.relay_port
|
||||
)
|
||||
|
||||
|
||||
self.inverter_controller = InverterController()
|
||||
self.transmitter_controller = TransmitterController(self.relay_controller)
|
||||
|
||||
self.plc_service = OmronFinsPollingService(ini_manager.upper_plc_ip, ini_manager.upper_plc_port)
|
||||
|
||||
# 初始化下料控制器
|
||||
self.feeding_controller = VisualCallback(
|
||||
relay_controller=self.relay_controller,
|
||||
transmitter_controller=self.transmitter_controller,
|
||||
state=self.state
|
||||
)
|
||||
|
||||
self.plc_service.register_data_callback(self.feeding_controller.on_plc_update)
|
||||
|
||||
#小屏修改过屏幕
|
||||
self.vf_auto_mode=True
|
||||
# 初始化 OPC UA 客户端
|
||||
self.opcua_client_feed = OpcuaClientFeed()
|
||||
|
||||
# 初始化 RFID 控制器
|
||||
# self.rfid_controller = rfid_service(
|
||||
# host=app_set_config.rfid_host,
|
||||
# port=app_set_config.rfid_port
|
||||
# )
|
||||
|
||||
# self.plc_service = OmronFinsPollingService(ini_manager.upper_plc_ip, ini_manager.upper_plc_port)
|
||||
|
||||
# 初始化下料控制器
|
||||
self.feeding_controller = VisualCallback(self.state)
|
||||
|
||||
# 初始化 OPC 队列监听线程
|
||||
self.opc_queue_thread = None
|
||||
|
||||
# 线程管理
|
||||
self.monitor_thread = None
|
||||
self.visual_control_thread = None
|
||||
self.alignment_check_thread = None
|
||||
self.lower_feeding_thread = None
|
||||
self.led_thread = None
|
||||
self.feed_thread = None
|
||||
self.vf_thread = None
|
||||
self.arch_thread = None
|
||||
self.api_thread = None
|
||||
self.pd_jbl_thread = None
|
||||
# 初始化 OPC 队列监听线程,用于处理队列中的数据
|
||||
self.opc_queue_thread = None
|
||||
|
||||
def initialize(self):
|
||||
def initialize(self)->bool:
|
||||
"""初始化系统"""
|
||||
print("初始化控制系统...")
|
||||
|
||||
# self.check_device_connectivity()
|
||||
# self.camera_controller.start_cameras()
|
||||
# self.start_monitoring()
|
||||
# 启动下料线程
|
||||
# self.start_lower_feeding()
|
||||
# 启动OPC队列处理线程
|
||||
# self.opcua_client_feed.start()
|
||||
|
||||
# self.start_opc_queue_thread()
|
||||
|
||||
#启用API线程
|
||||
self.start_api_thread()
|
||||
|
||||
#启用上料斗PLC
|
||||
self.plc_service.start_polling(interval=2.0)
|
||||
#启用下料线程
|
||||
self.start_feed_thread()
|
||||
#启用变频器线程
|
||||
self.start_vf_thread()
|
||||
# self.feeding_controller.get_current_mould()
|
||||
# self.feeding_controller._cur_mould_model.MouldCode='SHR2L1-5'
|
||||
# self.feeding_controller.send_pd_data()
|
||||
#启用破拱线程
|
||||
self.start_arch_thread()
|
||||
#启用推送模型数据线程
|
||||
self.feeding_controller.start_visual_thread()
|
||||
#启用API(对接PD API数据),线程
|
||||
self.start_api_thread()
|
||||
#启用派单线程
|
||||
# self.start_pd_thread()
|
||||
self.start_pd_thread()
|
||||
# 启动OPC队列处理线程,维护连接的断开重连等
|
||||
self.opcua_client_feed.start()
|
||||
|
||||
self.start_opc_queue_thread()
|
||||
|
||||
print("控制系统初始化完成")
|
||||
|
||||
return True
|
||||
|
||||
def start_feed_thread(self):
|
||||
"下料线程控制,主要控制下料斗(视觉控制)以及上料斗"
|
||||
self.feed_thread = threading.Thread(
|
||||
target=self.feeding_controller._run_feed,
|
||||
daemon=True
|
||||
)
|
||||
self.feed_thread.start()
|
||||
|
||||
def start_opc_queue_thread(self):
|
||||
"""启动OPC队列处理线程"""
|
||||
"""启动OPC队列处理线程(从控制系统中获取数据,通过OPC外发)"""
|
||||
print('启动OPC队列处理线程')
|
||||
self.opc_queue_thread = threading.Thread(
|
||||
target=self._process_opc_queue,
|
||||
@ -102,7 +110,7 @@ class FeedingControlSystem:
|
||||
self.api_thread.start()
|
||||
|
||||
def start_vf_thread(self):
|
||||
"""启动变频器控制线程"""
|
||||
"""启动变频器控制线程(控制变频器开始启动,以及频率变换)"""
|
||||
# print('启动API处理线程,从API获取未浇筑数据')
|
||||
self.vf_thread = threading.Thread(
|
||||
target=self._process_vf,
|
||||
@ -157,7 +165,6 @@ class FeedingControlSystem:
|
||||
print(f"处理变频器数据时发生错误: {e}")
|
||||
time.sleep(2)
|
||||
|
||||
|
||||
def _process_api_db(self):
|
||||
from service.mould_service import app_web_service
|
||||
"""处理API队列中的数据"""
|
||||
@ -296,41 +303,16 @@ class FeedingControlSystem:
|
||||
self.feeding_controller.shutdown()
|
||||
self.stop()
|
||||
|
||||
|
||||
def start_monitoring(self):
|
||||
"""启动系统监控"""
|
||||
def start_arch_thread(self):
|
||||
"""启动系统监控和要料"""
|
||||
print('振动和要料监控线程启动')
|
||||
self.monitor_thread = threading.Thread(
|
||||
target=self._monitor_loop,
|
||||
#启动振动线程
|
||||
self.arch_thread = threading.Thread(
|
||||
target=self.feeding_controller._arch_loop,
|
||||
daemon=True,
|
||||
name='monitor'
|
||||
)
|
||||
self.monitor_thread.start()
|
||||
|
||||
def _monitor_loop(self):
|
||||
"""监控循环"""
|
||||
while self.state.running:
|
||||
try:
|
||||
# self.feeding_controller.check_upper_material_request()
|
||||
self.feeding_controller.check_arch_blocking()
|
||||
time.sleep(1)
|
||||
except Exception as e:
|
||||
print(f"监控线程错误: {e}")
|
||||
|
||||
def start_lower_feeding(self):
|
||||
"""启动下料流程"""
|
||||
self.lower_feeding_thread = threading.Thread(
|
||||
target=self._start_lower_feeding,
|
||||
name="Feeding",
|
||||
daemon=True
|
||||
)
|
||||
self.lower_feeding_thread.start()
|
||||
|
||||
def _start_lower_feeding(self):
|
||||
"""启动下料流程"""
|
||||
while self.state.running:
|
||||
self.feeding_controller.start_feeding()
|
||||
time.sleep(app_set_config.lower_feeding_interval)
|
||||
name='arch'
|
||||
)
|
||||
self.arch_thread.start()
|
||||
|
||||
def check_device_connectivity(self) -> bool:
|
||||
"""检查关键设备连接状态"""
|
||||
@ -346,17 +328,6 @@ class FeedingControlSystem:
|
||||
print("无法连接到网络继电器Modbus服务")
|
||||
return False
|
||||
|
||||
# 尝试读取变频器一个寄存器(测试连接)
|
||||
# test_result = self.relay_controller.modbus_client.read_holding_registers(
|
||||
# address=0x00,
|
||||
# count=1,
|
||||
# slave=self.inverter_controller.config['slave_id']
|
||||
# )
|
||||
|
||||
# if isinstance(test_result, Exception):
|
||||
# print("变频器连接测试失败")
|
||||
# return False
|
||||
|
||||
# 检查下料斗变送器连接
|
||||
test_weight = self.transmitter_controller.read_data(2)
|
||||
if test_weight is None:
|
||||
@ -368,8 +339,7 @@ class FeedingControlSystem:
|
||||
except Exception as e:
|
||||
print(f"设备连接检查失败: {e}")
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def start_pd_thread(self):
|
||||
"""启动PD线程"""
|
||||
print('启动派单处理线程,从API获取未浇筑数据')
|
||||
@ -401,7 +371,34 @@ class FeedingControlSystem:
|
||||
_start_time=None
|
||||
_isFinish=False
|
||||
time.sleep(5)
|
||||
|
||||
|
||||
def start_led(self):
|
||||
"""启动LED流程"""
|
||||
self.led_thread = threading.Thread(
|
||||
target=self._start_led,
|
||||
name="LED",
|
||||
daemon=True
|
||||
)
|
||||
self.led_thread.start()
|
||||
|
||||
def _start_led(self):
|
||||
"""启动LED流程"""
|
||||
from service.mould_service import app_web_service
|
||||
|
||||
while self.state.running:
|
||||
led_info = app_web_service.get_pouring_led()
|
||||
if led_info:
|
||||
if self.state.current_artifact.MouldCode==led_info.MouldCode:
|
||||
led_info.RingTypeCode=self.state.current_artifact.RingTypeCode
|
||||
led_info.UpperWeight=self.state._upper_weight
|
||||
led_info.LowerWeight=self.state._lower_weight
|
||||
led_info.VibrationFrequency=self.state._mould_frequency
|
||||
|
||||
#发送到LED屏
|
||||
|
||||
time.sleep(app_set_config.led_interval)
|
||||
|
||||
|
||||
@property
|
||||
def _is_finish(self):
|
||||
"""检查系统是否运行"""
|
||||
@ -428,20 +425,21 @@ class FeedingControlSystem:
|
||||
self.state.running = False
|
||||
|
||||
# 等待线程结束
|
||||
if self.monitor_thread:
|
||||
self.monitor_thread.join()
|
||||
if self.visual_control_thread:
|
||||
self.visual_control_thread.join()
|
||||
if self.alignment_check_thread:
|
||||
self.alignment_check_thread.join()
|
||||
if self.lower_feeding_thread:
|
||||
self.lower_feeding_thread.join()
|
||||
if self.opc_queue_thread:
|
||||
self.opc_queue_thread.join()
|
||||
if self.vf_thread:
|
||||
self.vf_thread.join()
|
||||
if self.api_thread:
|
||||
self.api_thread.join()
|
||||
if self.pd_jbl_thread:
|
||||
self.pd_jbl_thread.join()
|
||||
if self.feed_thread:
|
||||
self.feed_thread.join()
|
||||
if self.arch_thread:
|
||||
self.arch_thread.join()
|
||||
if self.plc_service:
|
||||
self.plc_service.stop_polling()
|
||||
self.feeding_controller.shutdown()
|
||||
# 释放摄像头资源
|
||||
# self.camera_controller.release()
|
||||
print("控制系统已停止")
|
||||
|
||||
Reference in New Issue
Block a user