| | |
| | | using Admin.NET.Core.Service; |
| | | using Furion.Logging; |
| | | |
| | | namespace WCS.Application; |
| | | public static class PLCTaskAction |
| | |
| | | |
| | | private static List<WcsPlc> listPlc; |
| | | private static List<WcsDevice> listPlcDevice; |
| | | private static List<WcsStation> listPlcStation; |
| | | private static List<WcsPosition> listPlcStation; |
| | | |
| | | private static List<PLCUtil> listPlcUtil = new List<PLCUtil>(); |
| | | private static CancellationTokenSource cts;//取消线程标识 |
| | |
| | | |
| | | listPlc = _db.Queryable<WcsPlc>().ToList(); |
| | | listPlcDevice = _db.Queryable<WcsDevice>().ToList(); |
| | | listPlcStation = _db.Queryable<WcsStation>().ToList(); |
| | | listPlcStation = _db.Queryable<WcsPosition>().ToList(); |
| | | } |
| | | /// <summary> |
| | | /// 初始化PLC连接 |
| | |
| | | cts.Cancel(); |
| | | listPlc = _db.Queryable<WcsPlc>().ToList(); |
| | | listPlcDevice = _db.Queryable<WcsDevice>().ToList(); |
| | | listPlcStation = _db.Queryable<WcsStation>().ToList(); |
| | | listPlcStation = _db.Queryable<WcsPosition>().ToList(); |
| | | //等待几秒钟,把已有线程取消掉再连接 |
| | | Thread.Sleep(5000); |
| | | foreach (var modPlcUtil in listPlcUtil) |
| | |
| | | //循环读设备 |
| | | foreach (var modDevice in listDevice.Where(s => s.Level == DeviceLevelEnum.DB)) |
| | | { |
| | | var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.PlcPos); |
| | | var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); |
| | | if (result.IsSucceed) |
| | | { |
| | | //无流程跳出 |
| | |
| | | |
| | | Thread.Sleep(3000); |
| | | } |
| | | catch (OperationCanceledException) |
| | | { |
| | | Console.WriteLine("中止线程"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | Log.Error(ex.Message, ex); |
| | | } |
| | | } |
| | | }, cts.Token); |