using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; using Masuit.Tools.Logging; 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 { 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任务模板 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(); //二层接驳位 var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); SecondFloorPoint secondFloorPoint = new(_host, SecondBaseFloorEquip.floorNo.Value); secondFloorPoint.StartPoint(); //二层AGV var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); SecondFloorAGV secondFloorAGV = new(_host, SecondFloorAgvEquip.floorNo.Value); secondFloorAGV.StartPoint(); //二楼线体 var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 17).First(); SecondFloorLine secondFloorLine = new(_host, SecondFloorLineEquip.floorNo.Value); secondFloorLine.StartPoint(); //三层接驳位 var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); ThirdFloorPoint thirdFloorPoint = new(_host, ThirdBaseFloorEquip.floorNo.Value); thirdFloorPoint.StartPoint(); //三层AGV var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); ThirdFloorAGV thirdFloorAGV = new(_host, ThirdFloorAgvEquip.floorNo.Value); thirdFloorAGV.StartPoint(); //四楼接驳位 FourthFloorPoint fourthFloorPoint = new FourthFloorPoint(_host, 4); fourthFloorPoint.StartPoint(); //五层接驳位 var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); FiveFloorPoint fifthFloorPoint = new(_host, FifthBaseFloorEquip.floorNo.Value); fifthFloorPoint.StartPoint(); //五层CTU var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); FiveFloorCTU fiveFloorCTU = new(_host, FiveFloorCTUEquip.floorNo.Value); fiveFloorCTU.StartPoint(); //五层AGV var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); FiveFloorAGV fifthFloorAGV = new(_host, FifthFloorAgvEquip.floorNo.Value); fifthFloorAGV.StartPoint(); //背负式Agv var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); FiveFloorBearAgv fiveFloorBearAgv = new(_host, FifthFloorBearAgvEquip.floorNo.Value); fiveFloorBearAgv.StartPoint(); } catch (Exception ex) { Console.WriteLine(ex.Message); logger.Error(ex.Message+"\n"+ex.StackTrace); } } } }