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_BZ01 = "3001" + 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"
});
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",
});
return _dbBlockForRead;
}
}
}