using iWareCommon.Utils;
|
using iWareModel;
|
using iWareSda.Devices._3_Station.StationModel;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace iWareSda
|
{
|
/// <summary>
|
/// Station实体类
|
/// </summary>
|
public static class Station_CacheEntity
|
{
|
public static LogType curLogType = LogType.StationSdaService;
|
|
#region Station1
|
|
/// <summary>
|
/// 写入DB
|
/// </summary>
|
public static string W_DBHeaderWithSeparate = "610" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
/// <summary>
|
/// 读取DB
|
/// </summary>
|
public static string R_DBHeaderWithSeparate = "600" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(扫码)
|
/// </summary>
|
public static string R_DBHeader_ScanWithSeparate = "80" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(报警专用)
|
/// </summary>
|
public static string R_DBHeader_Alert = "91" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(Station报警专用)
|
/// </summary>
|
public static string R_DBHeader_Station_Alert = "1090";
|
|
|
/// <summary>
|
/// 西港方采集出库发动机数据,写入DB 【Editby shaocx,2023-07-23】
|
/// </summary>
|
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<StationEntity> _deviceObjList = null;
|
private static object objLock = new object();
|
|
/// <summary>
|
/// 生成设备实体类
|
/// </summary>
|
public static List<StationEntity> DeviceObjs
|
{
|
get
|
{
|
if (_deviceObjList == null)
|
{
|
lock (objLock)
|
{
|
if (_deviceObjList == null)
|
{
|
_deviceObjList = new List<StationEntity>();
|
_deviceObjList.Add(Station);
|
}
|
}
|
}
|
return Station_CacheEntity._deviceObjList;
|
}
|
set { Station_CacheEntity._deviceObjList = value; }
|
}
|
|
private static T GetDeviceObj<T>(int deviceId)
|
{
|
var device = Station_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId);
|
return (T)(Object)device;
|
}
|
|
|
/// <summary>
|
/// 获取设备对象
|
/// </summary>
|
/// <param name="deviceId"></param>
|
/// <returns></returns>
|
public static SdaResEntity GetDeviceObj(int deviceId)
|
{
|
SdaResEntity sdaResult = new SdaResEntity();
|
StationEntity Station = Station_CacheEntity.GetDeviceObj<StationEntity>(deviceId);
|
if (Station == null)
|
{
|
return SdaResEntity.Failure("没有找到Station设备");
|
}
|
return SdaResEntity.Success("成功", Station);
|
}
|
|
|
/// <summary>
|
/// 写入地址集合赋值
|
/// </summary>
|
/// <param name="_dbBlockForWrite"></param>
|
/// <param name="_dbBlockForRead"></param>
|
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<StationDBForWriteComm>();
|
|
_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;
|
}
|
|
///// <summary>
|
///// 读取地址集合赋值
|
///// </summary>
|
///// <param name="_dbBlockForWrite"></param>
|
///// <param name="_dbBlockForRead"></param>
|
//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<StationDBForWriteComm>();
|
// 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;
|
|
//}
|
|
/// <summary>
|
/// 读取地址集合赋值
|
/// </summary>
|
/// <param name="_dbBlockForWrite"></param>
|
/// <param name="_dbBlockForRead"></param>
|
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<StationDBForReadComm>();
|
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;
|
|
}
|
|
}
|
}
|