using iWareCommon.Utils;
|
using iWareModel;
|
using iWareSda.Devices._3_Conveyer.ConveyerModel;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace iWareSda
|
{
|
/// <summary>
|
/// Conveyer实体类
|
/// </summary>
|
public static class Conveyer_CacheEntity
|
{
|
public static LogType curLogType = LogType.ConveyerSdaService;
|
|
#region Conveyer1
|
|
/// <summary>
|
/// 写入DB
|
/// </summary>
|
public static string W_DBHeaderWithSeparate = "2304" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
/// <summary>
|
/// 读取DB
|
/// </summary>
|
public static string R_DBHeaderWithSeparate = "2304" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(扫码)
|
/// </summary>
|
public static string R_DBHeader_AGV = "6900" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(报警专用)
|
/// </summary>
|
public static string R_DBHeader_Alert = "500" + WareSdaStruct.PLCDBADDRESS_SEPARATE;
|
|
/// <summary>
|
/// 读取DB(Conveyer报警专用)
|
/// </summary>
|
public static string R_DBHeader_Conveyer_Alert = "500";
|
|
private static ConveyerDBForWrite _dbBlockForWrite = SetW_ConveyerForWriteCommList();
|
|
|
private static ConveyerDBForRead _dbBlockForRead = SetR_ConveyerForWriteCommList();
|
|
|
private static HslCommunicationParam hslCommunicationParam = new HslCommunicationParam()
|
{
|
cpu = WareSdaStruct.Conveyer_SiemensPLCS,
|
ip = WareSdaStruct.Conveyer_Address,
|
rack = WareSdaStruct.Conveyer_Rack,
|
slot = WareSdaStruct.Conveyer_Slot,
|
port = WareSdaStruct.Conveyer_Port
|
};
|
private static SS7Param s7Param = new SS7Param()
|
{
|
cpu = WareSdaStruct.Conveyer_PLC_CpuType,
|
ip = WareSdaStruct.Conveyer_Address,
|
rack = WareSdaStruct.Conveyer_Rack,
|
slot = WareSdaStruct.Conveyer_Slot,
|
};
|
private static PLCService PLCService = PLCFactory.GetOPCService(WareSdaStruct.System_PlcServiceTypeEnum, s7Param, hslCommunicationParam);
|
private static ConveyerEntity Conveyer = new ConveyerEntity("Conveyer", (int)EDevice.输送线, _dbBlockForWrite, _dbBlockForRead, PLCService);
|
|
#endregion
|
|
private static List<ConveyerEntity> _deviceObjList = null;
|
private static object objLock = new object();
|
|
/// <summary>
|
/// 生成设备实体类
|
/// </summary>
|
public static List<ConveyerEntity> DeviceObjs
|
{
|
get
|
{
|
if (_deviceObjList == null)
|
{
|
lock (objLock)
|
{
|
if (_deviceObjList == null)
|
{
|
_deviceObjList = new List<ConveyerEntity>();
|
_deviceObjList.Add(Conveyer);
|
}
|
}
|
}
|
return Conveyer_CacheEntity._deviceObjList;
|
}
|
set { Conveyer_CacheEntity._deviceObjList = value; }
|
}
|
|
private static T GetDeviceObj<T>(int deviceId)
|
{
|
var device = Conveyer_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();
|
ConveyerEntity Conveyer = Conveyer_CacheEntity.GetDeviceObj<ConveyerEntity>(deviceId);
|
if (Conveyer == null)
|
{
|
return SdaResEntity.Failure("没有找到Conveyer设备");
|
}
|
return SdaResEntity.Success("成功", Conveyer);
|
}
|
|
|
/// <summary>
|
/// 写入地址集合赋值
|
/// </summary>
|
/// <param name="_dbBlockForWrite"></param>
|
/// <param name="_dbBlockForRead"></param>
|
private static ConveyerDBForWrite SetW_ConveyerForWriteCommList()
|
{
|
ConveyerDBForWrite _dbBlockForWrite = new ConveyerDBForWrite()
|
{
|
//TODO:这里写配置的DB地址
|
#region 写入
|
W_HandShake = W_DBHeaderWithSeparate + "0.0",
|
|
W_Scan1_ReceiveFinish = W_DBHeaderWithSeparate + "300.0",
|
|
W_AGV_RequestIn = R_DBHeader_AGV + "2.0",
|
W_AGV_RequestInArr = R_DBHeader_AGV + "2.1",
|
W_AGV_RequestOut = R_DBHeader_AGV + "2.2",
|
W_AGV_RequestOutArr = R_DBHeader_AGV + "2.3",
|
W_AGV_TaskType = R_DBHeader_AGV + "4.0",
|
#endregion
|
};
|
|
//写入地址
|
_dbBlockForWrite.W_ConveyerForWriteCommList = new List<ConveyerDBForWriteComm>();
|
|
double default_W_TaskID = 2.0;
|
double default_W_Source = 6.0;
|
double default_W_Destination = 8.0;
|
double default_W_TaskType = 10.0;
|
double default_W_SalverType = 12.0;
|
double default_W_STP = 14.0;
|
double default_W_ConfirmTaskFinish = 14.1;
|
|
double addValue = 14;
|
|
for (int i = 0; i < WareSdaStruct.ConveyerStationList.Count; i++)
|
{
|
var stationCode = WareSdaStruct.ConveyerStationList[i];
|
if (i > 0)
|
{
|
default_W_TaskID += addValue;
|
default_W_Source += addValue;
|
default_W_Destination += addValue;
|
default_W_TaskType += addValue;
|
default_W_SalverType += addValue;
|
default_W_STP += addValue;
|
default_W_ConfirmTaskFinish += addValue;
|
}
|
_dbBlockForWrite.W_ConveyerForWriteCommList.Add(new ConveyerDBForWriteComm()
|
{
|
StationCode = stationCode,
|
|
W_TaskID = W_DBHeaderWithSeparate + default_W_TaskID.ToString("0"),
|
W_Source = W_DBHeaderWithSeparate + default_W_Source.ToString("0"),
|
W_Destination = W_DBHeaderWithSeparate + default_W_Destination.ToString("0"),
|
W_TaskType = W_DBHeaderWithSeparate + default_W_TaskType.ToString("0"),
|
W_SalverType = W_DBHeaderWithSeparate + default_W_SalverType.ToString("0"),
|
W_STP = W_DBHeaderWithSeparate + default_W_STP.ToString("0.0"),
|
W_ConfirmTaskFinish = W_DBHeaderWithSeparate + default_W_ConfirmTaskFinish.ToString("0.0"),
|
});
|
|
}
|
return _dbBlockForWrite;
|
}
|
|
|
/// <summary>
|
/// 读取地址集合赋值
|
/// </summary>
|
/// <param name="_dbBlockForWrite"></param>
|
/// <param name="_dbBlockForRead"></param>
|
private static ConveyerDBForRead SetR_ConveyerForWriteCommList()
|
{
|
ConveyerDBForRead _dbBlockForRead = new ConveyerDBForRead()
|
{
|
//TODO:这里写配置的DB地址
|
#region 读取
|
R_HandShake = R_DBHeaderWithSeparate + "0.0",
|
|
//注意:这里用的扫描的地址块
|
R_Scan1_Success = R_DBHeaderWithSeparate + "800.0",
|
R_Shape = R_DBHeaderWithSeparate + "802.0",
|
R_Scan1_Value = R_DBHeaderWithSeparate + "804",
|
|
R_Mode_Auto = R_DBHeaderWithSeparate + "1100.0",
|
R_Mode_Manua = R_DBHeaderWithSeparate + "1100.1",
|
R_Mode_Breakdown = R_DBHeaderWithSeparate + "1100.2",
|
|
R_AGV_AllowIn = R_DBHeader_AGV + "502.0",
|
R_AGV_AllowInArr = R_DBHeader_AGV + "502.1",
|
R_AGV_AllowOut = R_DBHeader_AGV + "502.2",
|
R_AGV_AllowOutArr = R_DBHeader_AGV + "502.3"
|
#endregion
|
};
|
|
//读取地址
|
double default_R_TaskReciveFinish = 502.0;
|
double default_R_HasCargo = 502.1;
|
double default_R_TaskID = 504;
|
double default_R_TaskType = 508;
|
double default_R_SalverHeight = 510;
|
double default_R_SalverReach = 512.0;
|
double default_R_TaskFinish = 512.1;
|
|
int addValue = 12;
|
|
_dbBlockForRead.R_ConveyerForReadCommList = new List<ConveyerDBForReadComm>();
|
for (int i = 0; i < WareSdaStruct.ConveyerStationList.Count; i++)
|
{
|
var stationCode = WareSdaStruct.ConveyerStationList[i];
|
if (i > 0)
|
{
|
default_R_TaskReciveFinish += addValue;
|
default_R_HasCargo += addValue;
|
default_R_TaskID += addValue;
|
default_R_TaskType += addValue;
|
default_R_SalverHeight += addValue;
|
default_R_SalverReach += addValue;
|
default_R_TaskFinish += addValue;
|
}
|
_dbBlockForRead.R_ConveyerForReadCommList.Add(new ConveyerDBForReadComm()
|
{
|
StationCode = stationCode,
|
|
R_TaskReciveFinish = R_DBHeaderWithSeparate + default_R_TaskReciveFinish.ToString("0.0"),
|
R_HasCargo = R_DBHeaderWithSeparate + default_R_HasCargo.ToString("0.0"),
|
R_TaskID = R_DBHeaderWithSeparate + default_R_TaskID.ToString("0"),
|
R_TaskType = R_DBHeaderWithSeparate + default_R_TaskType.ToString("0"),
|
R_SalverHeight = R_DBHeaderWithSeparate + default_R_SalverHeight.ToString("0"),
|
R_SalverReach = R_DBHeaderWithSeparate + default_R_SalverReach.ToString("0.0"),
|
R_TaskFinish = R_DBHeaderWithSeparate + default_R_TaskFinish.ToString("0.0")
|
});
|
|
}
|
|
return _dbBlockForRead;
|
|
}
|
|
}
|
}
|