from models.data_sender import Sender from models.batcher import Batcher from models.billet_trace_pusher import Trace_pusher from utils.s7data import S7data, S7Client from utils.mqttdata import Mqttdata, MqttClient from utils.logger import Logger from models.data_forward import * from models.parking import Parking from models.overhead_crane import Crane from models.data_checker import Checker from models.billet_stacks import Stack_manager from models.jiaoban import Banci from models.mysql_data import MysqlData, MysqlDataSizing from dbutils.pooled_db import PooledDB from models.s7_writer import S7Writer import pymysql, random, logging _debug = True ############################################################## # 日志配置 logger_5 = Logger('5#') logger_5.file_on_with_rotation('logs/5#log.log') logger_5.screen_on(logging.INFO) logger_6 = Logger('6#') logger_6.file_on_with_rotation('logs/6#log.log') logger_6.screen_on(logging.INFO) logger_sender = Logger('sender') logger_sender.file_on_with_rotation('logs/sender_log.log') # logger_sender.screen_on() logger_trace = Logger('trace') logger_trace.file_on_with_rotation('logs/trace_log.log') logger_trace.screen_on(logging.INFO) logger_mysql = Logger('mysql') logger_mysql.file_on_with_rotation('logs/mysql.log') # logger_trace.screen_on() ############################################################## # S7数据源配置 s7_5 = S7Client() s7_5.connect('192.168.1.215', 0, 0) data_5 = S7data(r"conf/5#nodes.csv") data_5.set_S7Client(s7_5) data_5.set_logger(logger_5) data_5.auto_update_group() logger_5.info('[PREPARE]5#机PLC连接成功') s7_6 = S7Client() s7_6.connect('192.168.1.216', 0, 0) data_6 = S7data(r"conf/6#nodes.csv") data_6.set_S7Client(s7_6) data_6.set_logger(logger_6) data_6.auto_update_group() logger_6.info('[PREPARE]6#机PLC连接成功') ############################################################## # MQTT数据源配置 _debug_random_str = "" random_char_lib = "abcdefghijklmnopqrstuvwxyz0123456789" if _debug: _debug_random_str = '_debug_' + ''.join(random.choices(random_char_lib, k = 10)) mqtt_mes_clientid = 'python-mqtt-mes-billet' + _debug_random_str mqtt_mes = MqttClient(mqtt_mes_clientid, 'readonly', '1qazxsw@') mqtt_mes.connect('192.168.12.201', 1883) mqtt_mes.loop_start() data_mes = Mqttdata() data_mes.set_mqtt_client(mqtt_mes) logger_5.info('[PREPARE]与MES使用MQTT连接成功') logger_6.info('[PREPARE]与MES使用MQTT连接成功') mqtt_web_clientid = 'python-mqtt-web-billet' + _debug_random_str mqtt_web = MqttClient(mqtt_web_clientid) mqtt_web.connect('192.168.0.119', 1883) mqtt_web.loop_start() data_web = Mqttdata() data_web.set_mqtt_client(mqtt_web) logger_sender.info('[PREPARE]与WEB业务平台使用MQTT连接成功') ############################################################## # MYSQL数据库连接 db = pymysql.connect(host='localhost', port=3306, user='root', password='1qaz2wsx@..', database='steel_production_db') nuo_db = PooledDB( creator=pymysql, maxconnections=5, mincached=1, blocking=True, host='192.168.12.201', user='gpszh', password='lg123456', database='nuo_scheduling_lm2', charset='utf8mb4' ) data_nuo = MysqlData(nuo_db, logger_mysql) qbc_db = PooledDB( creator=pymysql, maxconnections=5, mincached=1, blocking=True, host='192.168.1.211', user='zgzt', password='zgzt1234', database='steelmaking_data', charset='utf8mb4' ) data_qbc = MysqlDataSizing(qbc_db, logger_mysql) ############################################################## # 数据发送服务 sender = Sender(logger_sender) if _debug: sender.http_flag = False sender.mysql_flag = False else: sender.set_mqtt_client(mqtt_web) sender.set_mysql_client(db) sender.mysql_flag = True ############################################################## # 分炉分坯服务 flfp_5 = Batcher(data_mes, data_5, data_web, "5", logger_5, sender, data_nuo, data_qbc) flfp_6 = Batcher(data_mes, data_6, data_web, "6", logger_6, sender, data_nuo, data_qbc) position_5 = [10650, 11600, 12830, 13924, 15237, 16440, 17757, 18935] position_6 = [8084, 9303, 10618, 11998, 13040, 14409, 15584, 16853] pusher_5 = Trace_pusher(flfp_5.batch_billet.output_billet_queues, data_5, logger_5, sender, position_5, True) pusher_6 = Trace_pusher(flfp_6.batch_billet.output_billet_queues, data_6, logger_6, sender, position_6, hostmove_flag=True) ############################################################## # 堆垛管理服务 stack_manager = Stack_manager() stack_manager.add_stack('501', '5', data_5) stack_manager.add_stack('601', '6', data_5, -170) ############################################################## # 停车位检测服务 parking = Parking(data_5, sender) ############################################################## # 天车跟踪服务 crane = Crane(data_5, pusher_5, pusher_6, parking, stack_manager, sender, logger_trace) ############################################################## # 数据警报服务 checker = Checker(data_5, data_6, logger_sender) if not _debug: checker.async_start_check() ############################################################## # 自动交班服务 banci_5 = Banci(data_5, sender, logger_5, '5') banci_6 = Banci(data_6, sender, logger_6, '6') ############################################################## # 数据转发服务 forward_5 = Forward(data_5, sender, True, '5') forward_5.start_auto_forward() forward_6 = Forward(data_6, sender, False, '6') forward_6.start_auto_forward() ############################################################## # PLC写入服务 if not _debug: s7_5w = S7Client() s7_5w.connect('192.168.1.215', 0, 0) s7_writer = S7Writer(s7_5w) s7_writer.add_task("dint", 420, 34, flfp_5.batch_heat.current_heat_point) s7_writer.loop_start()