using iWareCommon.Utils;
|
using iWareModel;
|
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_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;
|
public static string W_DBHeaderWithSeparate_BZ30 = "3005" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
public static string W_DBHeaderWithSeparate_269 = "3006" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
public static string W_DBHeaderWithSeparate_3007 = "3007" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
public static string W_DBHeaderWithSeparate_3000 = "3000" + 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_3000 + "80.0",
|
|
|
#endregion
|
};
|
|
//写入地址
|
_dbBlockForWrite.W_StationForWriteCommList = new List<StationDBForWriteComm>();
|
|
|
_dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm()
|
{
|
StationCode = StationLocationEnum.首次扫码工位.ToString(),
|
|
W_DataFinish = W_DBHeaderWithSeparate_269 + "0.0",
|
});
|
_dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm()
|
{
|
StationCode = StationLocationEnum.BZ01.ToString(),
|
|
W_DataFinish = W_DBHeaderWithSeparate_BZ01 + "0.0",
|
W_KittingInfo = W_DBHeaderWithSeparate_BZ01 + "2.0",
|
//W_PersonAllow = W_DBHeaderWithSeparate_BZ01 + "0.1",
|
});
|
|
_dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm()
|
{
|
StationCode = StationLocationEnum.BZ39.ToString(),
|
|
W_AllowIn = W_DBHeaderWithSeparate_BZ39 + "0.3",
|
|
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_NgFlag = W_DBHeaderWithSeparate_BZ21 + "0.2",
|
|
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",
|
|
});
|
|
_dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm()
|
{
|
StationCode = StationLocationEnum.BZ30.ToString(),
|
|
W_DataFinish = W_DBHeaderWithSeparate_BZ30 + "0.0",
|
W_KittingInfo = W_DBHeaderWithSeparate_BZ30 + "2.0",
|
});
|
|
return _dbBlockForWrite;
|
}
|
|
|
/// <summary>
|
/// 读取地址集合赋值
|
/// </summary>
|
/// <param name="_dbBlockForWrite"></param>
|
/// <param name="_dbBlockForRead"></param>
|
private static StationDBForRead SetR_StationForWriteCommList()
|
{
|
StationDBForRead _dbBlockForRead = new StationDBForRead()
|
{
|
//TODO:这里写配置的DB地址
|
#region 读取
|
R_HandShake_FJ = W_DBHeaderWithSeparate_3000 + "0.0",
|
R_Mode_FJ = W_DBHeaderWithSeparate_3000 + "2.0",
|
R_Warning_FJ = W_DBHeaderWithSeparate_3000 + "4.0",
|
|
R_HandShake_MB = W_DBHeaderWithSeparate_3000 + "20.0",
|
R_Mode_MB = W_DBHeaderWithSeparate_3000 + "22.0",
|
R_Warning_MB = W_DBHeaderWithSeparate_3000 + "24.0",
|
|
R_HandShake_HB = W_DBHeaderWithSeparate_3000 + "40.0",
|
R_Mode_HB = W_DBHeaderWithSeparate_3000 + "42.0",
|
R_Warning_HB = W_DBHeaderWithSeparate_3000 + "44.0",
|
|
R_HandShake_FX = W_DBHeaderWithSeparate_3000 + "60.0",
|
R_Mode_FX = W_DBHeaderWithSeparate_3000 + "62.0",
|
R_Warning_FX = W_DBHeaderWithSeparate_3000 + "64.0",
|
|
R_StationForReadCommList = new List<StationDBForReadComm>()
|
#endregion
|
};
|
|
|
_dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm()
|
{
|
StationCode = StationLocationEnum.BZ3007.ToString(),
|
|
R_AllowCut = W_DBHeaderWithSeparate_3007 + "0.0",
|
});
|
|
_dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm()
|
{
|
StationCode = StationLocationEnum.首次扫码工位.ToString(),
|
|
R_ReqParseData = W_DBHeaderWithSeparate_269 + "50.0",
|
R_ReadCodeResult = W_DBHeaderWithSeparate_269 + "52.0",
|
});
|
|
_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_BZ21 + "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",
|
|
});
|
_dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm()
|
{
|
StationCode = StationLocationEnum.BZ30.ToString(),
|
R_PalletizingAck = W_DBHeaderWithSeparate_BZ30 + "50.0",
|
});
|
return _dbBlockForRead;
|
|
}
|
|
}
|
}
|