using IWareCC.Properties;
|
using IWareCommon.Enum.Chaidie;
|
using IWareCommon.Help;
|
using S7.Net;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace IWareCC.ChaiDie.Entity
|
{
|
public class ChaiDieEntity
|
{
|
/// <summary>
|
/// 拆叠名称
|
/// </summary>
|
public string ChaiDieName { get; set; }
|
|
/// <summary>
|
/// PLCl连接字符串
|
/// </summary>
|
public string PLCContionString { get; set; }
|
/// <summary>
|
/// 设备编号
|
/// </summary>
|
public int DeviceId { get; set; }
|
/// <summary>
|
/// 根据心跳判断堆垛机是否在线
|
/// </summary>
|
public bool IsOnline { get; set; }
|
/// <summary>
|
/// 下线次数
|
/// </summary>
|
public int OffLineTimes { get; set; }
|
|
/// <summary>
|
/// 上一次心跳数
|
/// </summary>
|
public int LastHandShake { get; set; }
|
|
/// <summary>
|
/// 连接PLC对象
|
/// </summary>
|
public PlcS7 RCDS71200 { get; set; }
|
/// <summary>
|
/// 连接PLC写的对象
|
/// </summary>
|
public PlcS7 WCDS71200 { get; set; }
|
|
#region 写入的值
|
|
/// <summary>
|
/// 拆叠机编号
|
/// </summary>
|
public string WChaiDieNo { get; set; }
|
|
/// <summary>
|
/// 复位
|
/// </summary>
|
public bool NeedCon { get; set; }
|
/// <summary>
|
/// 写入成功标志
|
/// </summary>
|
public bool WSTP { get; set; }
|
|
#endregion
|
|
#region 读取到的值
|
/// <summary>
|
/// 心跳
|
/// </summary>
|
public int RHandShake { get; set; }
|
/// <summary>
|
/// 设备编号
|
/// </summary>
|
public string RChaiDeiNo { get; set; }
|
/// <summary>
|
/// 模式
|
/// </summary>
|
public int RMode { get; set; }
|
/// <summary>
|
/// 是否有报警
|
/// </summary>
|
public bool RAlarm { get; set; }
|
|
/// <summary>
|
/// 报警编号
|
/// </summary>
|
public int RAlarmCode { get; set; }
|
/// <summary>
|
/// 状态
|
/// </summary>
|
public int RState { get; set; }
|
|
/// <summary>
|
/// 接收写入成功反馈
|
/// </summary>
|
public bool RACK { get; set; }
|
/// <summary>
|
/// 光电1
|
/// </summary>
|
public int PH1 { get; set; }
|
/// <summary>
|
/// 光电2
|
/// </summary>
|
public int PH2 { get; set; }
|
/// <summary>
|
/// 是否满盘或空盘(0:置位;1空盘;2满盘)
|
/// </summary>
|
public int EmptyStatus { get; set; }
|
#endregion
|
|
public OpcReadItem OpcReadItems { get; set; }
|
|
public OpcWriteItem OpcWriteItems { get; set; }
|
|
public ChaiDieEntity() { }
|
|
public ChaiDieEntity(string srmName, int deviceId, PlcS7 plc)
|
{
|
this.ChaiDieName = srmName;
|
this.DeviceId = deviceId;
|
this.RChaiDeiNo = deviceId.ToString();
|
this.WChaiDieNo = deviceId.ToString();
|
this.WCDS71200 = plc;
|
|
switch (srmName)
|
{
|
case "ChaiDei1":
|
|
OpcReadItems = new OpcReadItem
|
{
|
Mode = "DB600.DBW728",
|
Ph1 = "DB600.DBW730",
|
Ph2 = "DB600.DBW732",
|
State = "DB600.DBW734",
|
Alarm = "DB600.DBX736.0",
|
AlarmCode = "DB600.DBW738",
|
ACK = "DB600.DBX746.0",
|
EmptyStatus = "DB600.DBW748",
|
HandShake = "DB600.DBW0",
|
|
};
|
break;
|
case "ChaiDei2":
|
|
OpcReadItems = new OpcReadItem
|
{
|
Mode="DB600.DBW750",
|
Ph1 = "DB600.DBW752",
|
Ph2 = "DB600.DBW754",
|
State = "DB600.DBW756",
|
Alarm = "DB600.DBX758.0",
|
AlarmCode = "DB600.DBW760",
|
ACK = "DB600.DBX768.0",
|
EmptyStatus = "DB600.DBW770",
|
HandShake = "DB600.DBW0",
|
};
|
break;
|
case "ChaiDei3":
|
OpcWriteItems = new OpcWriteItem
|
{
|
NeedCon = "DB601.DBX270.0",
|
STP = "DB601.DBX270.1"
|
};
|
OpcReadItems = new OpcReadItem
|
{
|
Mode = "DB600.DBW772",
|
Ph1 = "DB600.DBW774",
|
Ph2 = "DB600.DBW776",
|
State = "DB600.DBW778",
|
Alarm = "DB600.DBX780.0",
|
AlarmCode = "DB600.DBW782",
|
ACK = "DB600.DBX790.0",
|
EmptyStatus = "DB600.DBW792",
|
HandShake = "DB600.DBW0",
|
};
|
break;
|
case "ChaiDei4":
|
OpcWriteItems = new OpcWriteItem
|
{
|
NeedCon = "DB601.DBX270.2",
|
STP = "DB601.DBX270.3"
|
};
|
OpcReadItems = new OpcReadItem
|
{
|
Mode = "DB600.DBW794",
|
Ph1 = "DB600.DBW796",
|
Ph2 = "DB600.DBW798",
|
State = "DB600.DBW800",
|
Alarm = "DB600.DBX802.0",
|
AlarmCode = "DB600.DBW804",
|
ACK = "DB600.DBX812.0",
|
EmptyStatus = "DB600.DBW814",
|
HandShake = "DB600.DBW0",
|
};
|
break;
|
}
|
|
}
|
|
public bool CanSendTask(int deviceId, out string msg)
|
{
|
msg = "";
|
if (!IsOnline)
|
{
|
msg = "已离线";
|
return false;
|
}
|
if (RMode != (int)EChaiDieModel.自动空闲模式)
|
{
|
msg = "当前非自动模式";
|
return false;
|
}
|
return true;
|
}
|
|
public bool SendTask(int deviceId, out string msg)
|
{
|
|
try
|
{
|
msg = "";
|
if (!CanSendTask(deviceId, out msg))
|
{
|
return false;
|
}
|
|
bool b1 = this.WriteValue(this.OpcWriteItems.NeedCon, 1);
|
bool b2 = this.WriteValue(this.OpcWriteItems.STP, 1);
|
|
if (!(b1&&b2))
|
{
|
msg = "写入OPC失败";
|
return false;
|
}
|
return true;
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "SendTask", msg);
|
return false;
|
}
|
}
|
|
|
|
public bool WriteValue(string addr, object value)
|
{
|
string msg = string.Empty;
|
if (!string.IsNullOrEmpty(addr))
|
{
|
try
|
{
|
if (!this.WCDS71200.IsConnected)
|
{
|
this.WCDS71200.Close();
|
Thread.Sleep(100);
|
this.WCDS71200.Open();
|
}
|
|
msg = this.WCDS71200.Write(addr, value).ToString();
|
if (msg != "NoError")
|
{
|
string msg1 = this.WCDS71200.Write(addr, value).ToString();
|
if (msg1 != "NoError")
|
{
|
this.WCDS71200.Close();
|
Thread.Sleep(100);
|
this.WCDS71200.Open();
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), this.ChaiDieName + "WriteValue" + addr, msg);
|
return false;
|
}
|
else
|
{
|
return true;
|
}
|
}
|
else
|
{
|
return true;
|
}
|
}
|
catch
|
{
|
|
msg = addr + "写入失败 ";
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), this.ChaiDieName+"WriteValue", msg);
|
return false;
|
}
|
}
|
else
|
{
|
msg = addr + "写入失败 ";
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), this.ChaiDieName + "WriteValue", msg);
|
return false;
|
}
|
}
|
|
public object ReadValuePoint(string add)
|
{
|
|
try
|
{
|
if (!this.WCDS71200.IsConnected)
|
{
|
this.WCDS71200.Close();
|
Thread.Sleep(100);
|
this.WCDS71200.Open();
|
}
|
object MyPlcData = this.WCDS71200.Read(add);
|
return MyPlcData;
|
}
|
catch (Exception ex)
|
{
|
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), this.ChaiDieName + "ReadValuePoint", ex.Message);
|
return 0;
|
}
|
|
}
|
}
|
}
|