using Khd.Core.EntityFramework; using Khd.Core.Plc; using Khd.Core.Plc.S7; 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 System.Net.Http.Headers; using System.Text; 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() { try { //加载配置项 using var scope = _host.Services.CreateScope(); using var dbContext = scope.ServiceProvider.GetRequiredService(); //设置程序启动时清空点位的数据=>0为 Int16位 QingKongDianWei = StaticPlcHelper.GetValue("2", "0"); //设置默认处理完成=>1为 Int16位 WcsChuLiWanCheng = StaticPlcHelper.GetValue("2", "1"); //设置默认去向=>1为 Int16位 WcsMoRenQuXiang = StaticPlcHelper.GetValue("2", "1"); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList(); StaticData.BaseEquip = dbContext.BaseEquip.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); plc.Open(); StaticData.PlcDic.TryAdd(plcConfig.Code, plc); } } ////创建任务 //CreateTaskByRecord createTaskByRecord = new(_host, StaticData.PlcDic[0], ""); //createTaskByRecord.StartPoint(); ////一楼提升机以及接驳位 //FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]); //firstFloor.StartPoint(); ////二层接驳位 //var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); //SecondFloorPoint secondFloorPoint = new(_host, StaticData.PlcDic[0], SecondBaseFloorEquip.floorNo.Value, SecondBaseFloorEquip.equipNo); //secondFloorPoint.StartPoint(); ////二层AGV //var SecondFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 4).First(); //SecondFloorAGV secondFloorAGV = new(_host, StaticData.PlcDic[0], SecondFloorAgvEquip.floorNo.Value, SecondFloorAgvEquip.equipNo); //secondFloorAGV.StartPoint(); ////二楼线体 //var SecondFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 3).First(); //SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[0], SecondFloorLineEquip.floorNo.Value, SecondFloorLineEquip.equipNo); //secondFloorLine.StartPoint(); ////三层接驳位 //var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); //ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value, ThirdBaseFloorEquip.equipNo); //thirdFloorPoint.StartPoint(); ////三层AGV //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[0], ThirdFloorAgvEquip.floorNo.Value, ThirdFloorAgvEquip.equipNo); //thirdFloorAGV.StartPoint(); ////五层接驳位 //var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); //FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value, FifthBaseFloorEquip.equipNo); //fifthFloorPoint.StartPoint(); ////五层线体 //var FiveFloorLineEquip = StaticData.BaseEquip.Where(t => t.floorNo == 4 && t.equipType == 3).First(); //FiveFloorLine fiveFloorLine = new(_host, StaticData.PlcDic[0], FiveFloorLineEquip.floorNo.Value, FiveFloorLineEquip.equipNo); //fiveFloorLine.StartPoint(); //五层CTU var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[0], FiveFloorCTUEquip.floorNo.Value, FiveFloorCTUEquip.equipNo); fiveFloorCTU.StartPoint(); ////五层AGV //var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo); //fifthFloorAGV.StartPoint(); //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First(); //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo); //fiveFloorBearAgv.StartPoint(); } catch (Exception ex) { Console.WriteLine(ex.Message); LogManager.Error(ex); } } } }