using iWareCommon.Utils; using iWareModel; using iWareSda.Devices._3_Station.StationModel; using System; using System.Collections.Generic; using System.Linq; namespace iWareSda { /// /// Station实体类 /// public static class Station_CacheEntity { public static LogType curLogType = LogType.StationSdaService; #region Station1 /// /// 写入DB /// public static string W_DBHeaderWithSeparate_BZ39 = "3002" + WareSdaStruct.PLCDBADDRESS_SEPARATE; public static string W_DBHeaderWithSeparate_BZ12 = "3003" + WareSdaStruct.PLCDBADDRESS_SEPARATE; public static string W_DBHeaderWithSeparate_BZ01 = "3001" + WareSdaStruct.PLCDBADDRESS_SEPARATE; public static string W_DBHeaderWithSeparate_BZ21 = "3004" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// /// 读取DB /// public static string R_DBHeaderWithSeparate = "600" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// /// 读取DB(扫码) /// public static string R_DBHeader_ScanWithSeparate = "80" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// /// 读取DB(报警专用) /// public static string R_DBHeader_Alert = "91" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// /// 读取DB(Station报警专用) /// public static string R_DBHeader_Station_Alert = "1090"; /// /// 西港方采集出库发动机数据,写入DB 【Editby shaocx,2023-07-23】 /// public static string W_DBHeaderForXigangGetDataWithSeparate = "3" + WareSdaStruct.PLCDBADDRESS_SEPARATE; private static StationDBForWrite _dbBlockForWrite = SetW_StationForWriteCommList(); private static StationDBForRead _dbBlockForRead = SetR_StationForWriteCommList(); private static HslCommunicationParam hslCommunicationParam = new HslCommunicationParam() { cpu = WareSdaStruct.Station_SiemensPLCS, ip = WareSdaStruct.Station_Address, rack = WareSdaStruct.Station_Rack, slot = WareSdaStruct.Station_Slot, port = WareSdaStruct.Station_Port }; private static SS7Param s7Param = new SS7Param() { cpu = WareSdaStruct.Station_PLC_CpuType, ip = WareSdaStruct.Station_Address, rack = WareSdaStruct.Station_Rack, slot = WareSdaStruct.Station_Slot, }; private static PLCService PLCService = PLCFactory.GetOPCService(WareSdaStruct.System_PlcServiceTypeEnum, s7Param, hslCommunicationParam); private static StationEntity Station = new StationEntity("Station", (int)EDevice.Station, _dbBlockForWrite, _dbBlockForRead, PLCService); #endregion private static List _deviceObjList = null; private static object objLock = new object(); /// /// 生成设备实体类 /// public static List DeviceObjs { get { if (_deviceObjList == null) { lock (objLock) { if (_deviceObjList == null) { _deviceObjList = new List(); _deviceObjList.Add(Station); } } } return Station_CacheEntity._deviceObjList; } set { Station_CacheEntity._deviceObjList = value; } } private static T GetDeviceObj(int deviceId) { var device = Station_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId); return (T)(Object)device; } /// /// 获取设备对象 /// /// /// public static SdaResEntity GetDeviceObj(int deviceId) { SdaResEntity sdaResult = new SdaResEntity(); StationEntity Station = Station_CacheEntity.GetDeviceObj(deviceId); if (Station == null) { return SdaResEntity.Failure("没有找到Station设备"); } return SdaResEntity.Success("成功", Station); } /// /// 写入地址集合赋值 /// /// /// private static StationDBForWrite SetW_StationForWriteCommList() { StationDBForWrite _dbBlockForWrite = new StationDBForWrite() { //TODO:这里写配置的DB地址 #region 写入 // W_HandShake = W_DBHeaderWithSeparate + "0.0", #endregion }; //写入地址 _dbBlockForWrite.W_StationForWriteCommList = new List(); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = StationLocationEnum.首次扫码工位.ToString(), }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = StationLocationEnum.BZ01.ToString(), W_DataFinish = W_DBHeaderWithSeparate_BZ01 + "0.0", W_KittingInfo = W_DBHeaderWithSeparate_BZ01 + "2.0", }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = StationLocationEnum.BZ39.ToString(), W_DataFinish = W_DBHeaderWithSeparate_BZ39 + "0.0", W_InboundFinishConfirm = W_DBHeaderWithSeparate_BZ39 + "0.1", W_Destination_In = W_DBHeaderWithSeparate_BZ39 + "2.0", W_Inbound_TaskID = W_DBHeaderWithSeparate_BZ39 + "20.0", W_Outbound_TaskID = W_DBHeaderWithSeparate_BZ39 + "22.0", W_Length = W_DBHeaderWithSeparate_BZ39 + "6.0", W_Width = W_DBHeaderWithSeparate_BZ39 + "8.0", W_Height = W_DBHeaderWithSeparate_BZ39 + "10.0", //出库 W_ReqOut = W_DBHeaderWithSeparate_BZ39 + "12.0", W_Destination_Out = W_DBHeaderWithSeparate_BZ39 + "14.0", W_Mode = W_DBHeaderWithSeparate_BZ39 + "18.0", W_OutboundFinishConfirm = W_DBHeaderWithSeparate_BZ39 + "0.2", }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = StationLocationEnum.BZ12.ToString(), W_DataFinish = W_DBHeaderWithSeparate_BZ12 + "0.0", W_EndMark = W_DBHeaderWithSeparate_BZ12 + "0.1", W_FirstMark= W_DBHeaderWithSeparate_BZ12 + "0.3", W_PalletizingPlaceX = W_DBHeaderWithSeparate_BZ12 + "12.0", W_PalletizingPlaceY = W_DBHeaderWithSeparate_BZ12 + "14.0", W_PalletizingPlaceZ = W_DBHeaderWithSeparate_BZ12 + "16.0", W_PalletizingTaskID = W_DBHeaderWithSeparate_BZ12 + "18.0", W_Rotate = W_DBHeaderWithSeparate_BZ12 + "8.0", W_Length = W_DBHeaderWithSeparate_BZ12 + "2.0", W_Width = W_DBHeaderWithSeparate_BZ12 + "4.0", W_Height = W_DBHeaderWithSeparate_BZ12 + "6.0", W_PalletizingBucketType= W_DBHeaderWithSeparate_BZ12 + "20.0", W_PalletizingStation = W_DBHeaderWithSeparate_BZ12 + "10.0", W_PalletizingTaskFinish = W_DBHeaderWithSeparate_BZ12 + "0.2", }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = StationLocationEnum.BZ21.ToString(), W_DataFinish = W_DBHeaderWithSeparate_BZ21 + "0.0", W_SurroundTaskFinish = W_DBHeaderWithSeparate_BZ21 + "0.1", W_X_Offset = W_DBHeaderWithSeparate_BZ21 + "10.0", W_Y_Offset = W_DBHeaderWithSeparate_BZ21 + "12.0", W_SurroundTaskNo = W_DBHeaderWithSeparate_BZ21 + "14.0", W_CartonHeight = W_DBHeaderWithSeparate_BZ21 + "6.0", W_CartonWidth = W_DBHeaderWithSeparate_BZ21 + "8.0", W_PackageLength = W_DBHeaderWithSeparate_BZ21 + "2.0", W_PackageWidth = W_DBHeaderWithSeparate_BZ21 + "4.0", }); return _dbBlockForWrite; } /// /// 读取地址集合赋值 /// /// /// private static StationDBForRead SetR_StationForWriteCommList() { StationDBForRead _dbBlockForRead = new StationDBForRead() { //TODO:这里写配置的DB地址 #region 读取 // R_HandShake = R_DBHeaderWithSeparate + "0.0", R_StationForReadCommList = new List() #endregion }; _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = StationLocationEnum.BZ01.ToString(), R_ReqParseData = W_DBHeaderWithSeparate_BZ01 + "50.0", R_ReadCodeResult = W_DBHeaderWithSeparate_BZ01 + "52.0", }); _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = StationLocationEnum.BZ39.ToString(), R_ReqParseData = W_DBHeaderWithSeparate_BZ39 + "50.0", R_InboundFinish = W_DBHeaderWithSeparate_BZ39 + "50.1", R_OutboundFinish = W_DBHeaderWithSeparate_BZ39 + "50.2", R_ReadCodeResult = W_DBHeaderWithSeparate_BZ39 + "52.0", R_InboundNumber = W_DBHeaderWithSeparate_BZ39 + "104.0", R_OutboundNumber = W_DBHeaderWithSeparate_BZ39 + "108.0", R_Inbound_TaskID = W_DBHeaderWithSeparate_BZ39 + "112.0", R_Outbound_TaskID = W_DBHeaderWithSeparate_BZ39 + "114.0", R_ForceOutboundMode = W_DBHeaderWithSeparate_BZ39 + "50.3", }); _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = StationLocationEnum.BZ12.ToString(), R_ReqParseData = W_DBHeaderWithSeparate_BZ12 + "50.0", R_PalletizingFinish = W_DBHeaderWithSeparate_BZ12 + "50.1", R_PalletizingTaskNo = W_DBHeaderWithSeparate_BZ12 + "108.0", R_ReadCodeResult = W_DBHeaderWithSeparate_BZ12 + "52.0", R_PalletizingStation1 = W_DBHeaderWithSeparate_BZ12 + "104.0", R_PalletizingStation2 = W_DBHeaderWithSeparate_BZ12 + "106.0", R_PalletizingAck = W_DBHeaderWithSeparate_BZ12 + "50.2", //R_Inbound_TaskID = W_DBHeaderWithSeparate_BZ12 + "112.0", //R_Outbound_TaskID = W_DBHeaderWithSeparate_BZ12 + "114.0", }); _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = StationLocationEnum.BZ21.ToString(), R_PalletizingAck = W_DBHeaderWithSeparate_BZ12 + "50.2", R_ReqParseData = W_DBHeaderWithSeparate_BZ21 + "50.0", R_SurrouondTaskFinish = W_DBHeaderWithSeparate_BZ21 + "50.1", R_SurrouondTaskNo = W_DBHeaderWithSeparate_BZ21 + "104.0", R_ReadCodeResult = W_DBHeaderWithSeparate_BZ21 + "52.0", }); return _dbBlockForRead; } } }