using Khd.Core.EntityFramework; 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; 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 = GetValue("2", "0"); //设置默认处理完成=>1为 Int16位 WcsChuLiWanCheng = GetValue("2", "1"); //设置默认去向=>1为 Int16位 WcsMoRenQuXiang = GetValue("2", "1"); StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList(); //加载配置项 foreach (var plcConfig in StaticData.PlcConfigs) { if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) { var plc = new Plc.S7.Plc((CpuType)plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); plc.Open(); StaticData.PlcDic.TryAdd(plcConfig.Code, plc); } } //连接PLC判断 try { //一楼调度线程 var firstFloor = new FirstFloor(this._host, StaticData.PlcDic[0], "一楼输送线"); firstFloor.StartPoint(); Console.WriteLine(DateTime.Now+":一楼调度线程开启!"); //二楼楼调度线程 //三楼调度线程 //四楼调度线程 //五楼调度线程 } catch (Exception ex) { Console.WriteLine(ex.Message); LogManager.Info($"程序启动失败 >>> {ex.Message}"); return; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); LogManager.Error(ex); } } /// /// 电气写入点位高低位转换 /// /// 点位地址位长度 /// 写入数值 /// public static object GetValue(string len, string value) { if (len == "2") { return Convert.ToInt16(value); } if (len == "4") { return Convert.ToInt32(value); } return 0; } } }