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 = "610" + 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", W_1015_ReScan = R_DBHeader_ScanWithSeparate + "302.0", //1015位置重新扫码 【EditBy shaocx,2022-05-02】 W_1019_ReScan = R_DBHeader_ScanWithSeparate + "368.0", //1019位置重新扫码, 【EditBy shaocx,2022-05-02】 W_Station_FinishACK = W_DBHeaderWithSeparate + "146.0", W_1002_ScanFailACK = R_DBHeader_ScanWithSeparate + "66.1", W_1004_ScanFailACK = R_DBHeader_ScanWithSeparate + "126.1", W_1006_ScanFailACK = R_DBHeader_ScanWithSeparate + "186.1", W_1007_ScanFailACK = R_DBHeader_ScanWithSeparate + "246.1", W_1002_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "66.0", W_1004_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "126.0", W_1006_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "186.0", W_1007_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "246.0", W_Out_MaterialModel = W_DBHeaderForXigangGetDataWithSeparate + "0.0", W_Out_OrderNo = W_DBHeaderForXigangGetDataWithSeparate + "18.0", W_Out_SerialNumber = W_DBHeaderForXigangGetDataWithSeparate + "36.0", #endregion }; //写入地址 _dbBlockForWrite.W_StationForWriteCommList = new List(); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1001", W_TaskID = W_DBHeaderWithSeparate + "6.0" }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1002", W_TaskID = W_DBHeaderWithSeparate + "14.0" }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1003", W_TaskID = W_DBHeaderWithSeparate + "22.0" }); return _dbBlockForWrite; } ///// ///// 读取地址集合赋值 ///// ///// ///// //private static StationDBForWrite SetW_StationForWriteCommList2() //{ // StationDBForWrite _dbBlockForRead = new StationDBForWrite() // { // //TODO:这里写配置的DB地址 // #region 读取 // W_HandShake = "0.0", // #endregion // }; // //读取地址 // double default_STP = 2.0; // double default_Destination = 4.0; // double default_TaskID = 6.0; // int addValue = 16; // _dbBlockForRead.W_StationForWriteCommList = new List(); // for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++) // { // var stationCode = WareSdaStruct.StationStationList[i]; // if (i > 0) // { // default_STP += addValue; // default_Destination += addValue; // default_TaskID += addValue; // } // _dbBlockForRead.W_StationForWriteCommList.Add(new StationDBForWriteComm() // { // StationCode = stationCode, // W_STP = default_STP.ToString("0.0"), // W_Destination = default_Destination.ToString("0.0"), // W_TaskID = default_TaskID.ToString("0.0"), // }); // } // return _dbBlockForRead; //} /// /// 读取地址集合赋值 /// /// /// private static StationDBForRead SetR_StationForWriteCommList() { StationDBForRead _dbBlockForRead = new StationDBForRead() { //TODO:这里写配置的DB地址 #region 读取 R_HandShake = R_DBHeaderWithSeparate + "0.0", //注意:这里用的扫描的地址块 R_1015_Scan = R_DBHeader_ScanWithSeparate + "48.0", R_1019_Scan = R_DBHeader_ScanWithSeparate + "356.0", R_1019_CargoNoScan = R_DBHeader_ScanWithSeparate + "378.0", R_1002_Scan = R_DBHeader_ScanWithSeparate + "108.0", R_1004_Scan = R_DBHeader_ScanWithSeparate + "168.0", R_1006_Scan = R_DBHeader_ScanWithSeparate + "228.0", R_1007_Scan = R_DBHeader_ScanWithSeparate + "288.0", R_1009_High1 = R_DBHeader_ScanWithSeparate + "300.0", R_1009_High2 = R_DBHeader_ScanWithSeparate + "300.1", R_1009_High3 = R_DBHeader_ScanWithSeparate + "300.2", R_Station_Finish = R_DBHeaderWithSeparate + "349.0", R_Station_Coordinate = R_DBHeader_ScanWithSeparate + "304.0" #endregion }; //读取地址 double default_PH_1 = 2.0; double default_PH_2 = 2.1; double default_ACK = 2.2; double default_Model = 4.0; double default_State = 6.0; double default_AlarmCode = 8.0; double default_Destination = 10.0; double default_Shape = 12.0; double default_TaskID = 14.0; int addValue = 16; _dbBlockForRead.R_StationForReadCommList = new List(); for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++) { var stationCode = WareSdaStruct.StationStationList[i]; if (stationCode == "1019") { _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = stationCode, R_PH_1 = R_DBHeaderWithSeparate + "350.0", R_PH_2 = R_DBHeaderWithSeparate + "350.1", R_ACK = R_DBHeaderWithSeparate + "350.2", R_Model = R_DBHeaderWithSeparate + ("352.0"), R_State = R_DBHeaderWithSeparate + ("354.0"), R_AlarmCode = R_DBHeaderWithSeparate + ("356.0"), R_Destination = R_DBHeaderWithSeparate + ("358.0"), R_Shape = R_DBHeaderWithSeparate + ("360.0"), R_TaskID = R_DBHeaderWithSeparate + ("362.0") }); } else { if (i > 0) { default_PH_1 += addValue; default_PH_2 += addValue; default_ACK += addValue; default_Model += addValue; default_State += addValue; default_AlarmCode += addValue; default_Destination += addValue; default_Shape += addValue; default_TaskID += addValue; } _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = stationCode, R_PH_1 = R_DBHeaderWithSeparate + default_PH_1.ToString("0.0"), R_PH_2 = R_DBHeaderWithSeparate + default_PH_2.ToString("0.0") , R_ACK = R_DBHeaderWithSeparate + default_ACK.ToString("0.0"), R_Model = R_DBHeaderWithSeparate + default_Model.ToString("0.0"), R_State = R_DBHeaderWithSeparate + default_State.ToString("0.0"), R_AlarmCode = R_DBHeaderWithSeparate + default_AlarmCode.ToString("0.0"), R_Destination = R_DBHeaderWithSeparate + default_Destination.ToString("0.0"), R_Shape = R_DBHeaderWithSeparate + default_Shape.ToString("0.0"), R_TaskID = R_DBHeaderWithSeparate + default_TaskID.ToString("0.0") }); } } return _dbBlockForRead; } } }