using Khd.Core.EntityFramework; using Khd.Core.Library; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.Data; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs { public class MainCentralControl { public static object QingKongDianWei = 0; public static object WcsChuLiWanCheng = 1; public static object WcsMoRenQuXiang = 1; private readonly IHost _host; /// /// 构造函数 /// /// public MainCentralControl(IHost host) { this._host = host; } /// /// 启动程序 /// public void Start() { LoggerUtils logger = new LoggerUtils(); using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); try { //dbContext.WmsBaseLocation.Update(t => new Dictionary() { { "1", new WmsBaseLocation { locationStatus="1" } } }); StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用 StaticData.basePlcs = dbContext.BasePlc.ToList();//陈工Agv和设备信息推送 StaticData.BaseEquip = dbContext.BaseEquip.ToList();//设备信息 StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();//字典表,Agv任务模板 StaticData.DmsBaseAlarmRuleList = dbContext.DmsBaseAlarmRule.ToList(); foreach (var plcConfig in StaticData.PlcConfigs) { if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) { Plc.S7.Plc plc; plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); try { // plc.Open(); Console.WriteLine(DateTime.Now + ":连接PLC:" + plcConfig.IP); } catch { Console.WriteLine(DateTime.Now + ":连接Plc" + plcConfig.IP + "失败~~~~~~~"); } StaticData.PlcDic.TryAdd(plcConfig.Code, plc); } } //创建定时器 //SystemTimer systemTimer = new SystemTimer(_host); //systemTimer.Start(); //创建任务 //CreateTaskByRecord createTaskByRecord = new(_host); //createTaskByRecord.StartPoint(); ////一楼提升机以及接驳位 //FirstFloor firstFloor = new(_host); //firstFloor.StartPoint(); ////二层接驳位 //SecondFloorPoint secondFloorPoint = new(_host, 2); //secondFloorPoint.StartPoint(); ////二层AGV //SecondFloorAGV secondFloorAGV = new(_host, 2); //secondFloorAGV.StartPoint(); ////二楼线体 //SecondFloorLine secondFloorLine = new(_host, 2); //secondFloorLine.StartPoint(); ////三层接驳位 //ThirdFloorPoint thirdFloorPoint = new(_host, 3); //thirdFloorPoint.StartPoint(); //// 三层AGV //ThirdFloorAGV thirdFloorAGV = new(_host, 3); //thirdFloorAGV.StartPoint(); ////四楼接驳位 //FourthFloorPoint fourthFloorPoint = new FourthFloorPoint(_host, 4); //fourthFloorPoint.StartPoint(); ////五层接驳位 //FiveFloorPoint fifthFloorPoint = new(_host, 5); //fifthFloorPoint.StartPoint(); ////五层CTU //FiveFloorCTU fiveFloorCTU = new(_host, 5); //fiveFloorCTU.StartPoint(); //五层AGV FiveFloorAGV fifthFloorAGV = new(_host, 5); fifthFloorAGV.StartPoint(); ////背负式Agv //FiveFloorBearAgv fiveFloorBearAgv = new(_host, 5); //fiveFloorBearAgv.StartPoint(); } catch (Exception ex) { Console.WriteLine(ex.Message); logger.Error(ex.Message + "\n" + ex.StackTrace); } } } }