Commit 03579498 LN

增加运行日志打印

1 个父辈 c94c8fec
...@@ -113,6 +113,16 @@ ...@@ -113,6 +113,16 @@
<conversionPattern value="[%date][%t]%-5p %m%n" /> <conversionPattern value="[%date][%t]%-5p %m%n" />
</layout> </layout>
</appender> </appender>
<appender name="RunLog" type="log4net.Appender.RollingFileAppender">
<file value="logs/log/RunLog-line.log" />
<param name="Encoding" value="UTF-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" %m%n" />
</layout>
</appender>
<logger name="RollingLogFileAppender"> <logger name="RollingLogFileAppender">
<level value="Info" /> <level value="Info" />
<appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="RollingLogFileAppender" />
...@@ -125,6 +135,10 @@ ...@@ -125,6 +135,10 @@
<level value="Info" /> <level value="Info" />
<appender-ref ref="AIOBOX" /> <appender-ref ref="AIOBOX" />
</logger> </logger>
<logger name="RunLog">
<level value="Info" />
<appender-ref ref="RunLog" />
</logger>
<!--<root> <!--<root>
<level value="Info" /> <level value="Info" />
<appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="RollingLogFileAppender" />
......
...@@ -302,6 +302,7 @@ namespace OnlineStore.AssemblyLine ...@@ -302,6 +302,7 @@ namespace OnlineStore.AssemblyLine
{ {
LogUtil.info("即将退出程序,停止" + lineBean.Name + "运行 "); LogUtil.info("即将退出程序,停止" + lineBean.Name + "运行 ");
lineBean.StopRun(); lineBean.StopRun();
lineBean.SetWarnMsg();
} }
foreach (EquipBase equip in lineBean.AllEquipMap.Values) foreach (EquipBase equip in lineBean.AllEquipMap.Values)
{ {
...@@ -309,6 +310,7 @@ namespace OnlineStore.AssemblyLine ...@@ -309,6 +310,7 @@ namespace OnlineStore.AssemblyLine
{ {
LogUtil.info("即将退出程序,停止" + equip.Name + "运行 "); LogUtil.info("即将退出程序,停止" + equip.Name + "运行 ");
equip.StopRun(); equip.StopRun();
equip.SetWarnMsg();
} }
} }
// IOManager.instance.CloseAllDO(); // IOManager.instance.CloseAllDO();
...@@ -318,7 +320,7 @@ namespace OnlineStore.AssemblyLine ...@@ -318,7 +320,7 @@ namespace OnlineStore.AssemblyLine
if (Camera._cam != null) if (Camera._cam != null)
{ {
Camera._cam.CloseAll(); Camera._cam.CloseAll();
} }
// CodeManager.CloseAllCamera(); // CodeManager.CloseAllCamera();
// RFIDManager.Close(); // RFIDManager.Close();
//System.Environment.Exit(System.Environment.ExitCode); //System.Environment.Exit(System.Environment.ExitCode);
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
<Compile Include="util\NetTCPServer.cs"> <Compile Include="util\NetTCPServer.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="util\RunLogUtil.cs" />
<Compile Include="util\TcpClient.cs" /> <Compile Include="util\TcpClient.cs" />
<Compile Include="util\TcpServer.cs" /> <Compile Include="util\TcpServer.cs" />
<Compile Include="util\UdpServer.cs" /> <Compile Include="util\UdpServer.cs" />
......
...@@ -89,7 +89,7 @@ namespace OnlineStore.Common ...@@ -89,7 +89,7 @@ namespace OnlineStore.Common
} }
public static void error(ILog log, string errorMsg, Exception ex = null) public static void error(ILog log, string errorMsg, Exception ex = null)
{ {
if (errorMsg.Trim().Equals("")&&(ex==null)) if (errorMsg.Trim().Equals("") && (ex == null))
{ {
return; return;
} }
...@@ -103,7 +103,7 @@ namespace OnlineStore.Common ...@@ -103,7 +103,7 @@ namespace OnlineStore.Common
} }
AddToBox(errorMsg, Color.Red); AddToBox(errorMsg, Color.Red);
} }
private static object lockObj = ""; private static object lockObj = "";
private static void AddToBox(string msg, Color color) private static void AddToBox(string msg, Color color)
{ {
if (Monitor.TryEnter(lockObj, 2)) if (Monitor.TryEnter(lockObj, 2))
...@@ -123,7 +123,7 @@ namespace OnlineStore.Common ...@@ -123,7 +123,7 @@ namespace OnlineStore.Common
} }
else else
{ {
LOGGER.Debug ("ShowLogPro【" + msg + "】失败,未得到锁"); LOGGER.Debug("ShowLogPro【" + msg + "】失败,未得到锁");
} }
} }
private static List<string> logList = new List<string>(); private static List<string> logList = new List<string>();
...@@ -132,7 +132,7 @@ namespace OnlineStore.Common ...@@ -132,7 +132,7 @@ namespace OnlineStore.Common
private static void ShowLogPro(string msg, Color color) private static void ShowLogPro(string msg, Color color)
{ {
try try
{ {
if (logList.Count >= showCount) if (logList.Count >= showCount)
{ {
logList.RemoveAt(0); logList.RemoveAt(0);
...@@ -174,7 +174,7 @@ namespace OnlineStore.Common ...@@ -174,7 +174,7 @@ namespace OnlineStore.Common
LOGGER.Error("出错:" + ex.ToString()); LOGGER.Error("出错:" + ex.ToString());
} }
} }
private static DateTime lastTime = DateTime.Now; private static DateTime lastTime = DateTime.Now;
public static void UpdateLogbox() public static void UpdateLogbox()
{ {
if (logBox != null && logBox.Visible) if (logBox != null && logBox.Visible)
...@@ -192,7 +192,7 @@ namespace OnlineStore.Common ...@@ -192,7 +192,7 @@ namespace OnlineStore.Common
} }
public static void ClearLog() public static void ClearLog()
{ {
if (logBox != null) if (logBox != null)
{ {
LastText = ""; LastText = "";
...@@ -204,9 +204,9 @@ namespace OnlineStore.Common ...@@ -204,9 +204,9 @@ namespace OnlineStore.Common
{ {
debug(LOGGER, msg); debug(LOGGER, msg);
} }
public static void error(string errorMsg,Exception ex=null) public static void error(string errorMsg, Exception ex = null)
{ {
error(LOGGER, errorMsg,ex); error(LOGGER, errorMsg, ex);
} }
public static void info(string msg) public static void info(string msg)
{ {
......
using log4net;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
namespace OnlineStore.Common
{
public class RunLogUtil
{
public static readonly ILog RunLog = LogManager.GetLogger("RunLog");
public static void ErrorLog(ErrorLog log)
{
string jsonStr = JsonHelper.SerializeObject(log);
RunLog.Error(jsonStr);
}
public static void MoveLog(MoveLog log)
{
//if (log == null || (!log.IsValid()))
//{
// return;
//}
//string jsonStr = JsonHelper.SerializeObject(log);
//RunLog.Info(jsonStr);
}
public static void MoveEndLog(MoveEndLog log)
{
if (log == null || (!log.IsValid()))
{
return;
}
string jsonStr = JsonHelper.SerializeObject(log);
RunLog.Info(jsonStr);
}
public static void AxisLog(AxisMoveLog log)
{
string jsonStr = JsonHelper.SerializeObject(log);
RunLog.Error(jsonStr);
}
}
public class BaseLog
{
[JsonProperty(Order = 0)]
public string Name { get; set; } = "四楼环形线";
[JsonProperty(Order = 1)]
public string DeviceName { get; set; } = "";
[JsonProperty(Order = 2)]
public string LogType { get; set; } = "";
[JsonProperty(Order = 3)]
public string StartTime { get; set; } = "";
[JsonProperty(Order = 4)]
public string EndTime { get; set; } = "";
[JsonProperty(Order = 5)]
public string timeSpan { get; set; } = "";
}
public class ErrorLog : BaseLog
{
public ErrorLog()
{
this.LogType = "Error";
}
public ErrorLog(string deviceName, string errType, string errMsg, DateTime startTime, DateTime endTime, string operType = "", string posid = "", string barcode = "")
{
this.LogType = "Error";
this.DeviceName = deviceName.Trim();
this.ErrorType = errType.Trim();
this.ErrorMsg = errMsg.Trim();
this.StartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss");
this.EndTime = endTime.ToString("yyyy-MM-dd HH:mm:ss");
this.OperateType = operType.Trim();
this.PosId = posid.Trim();
this.Barcode = barcode.Trim();
TimeSpan span = endTime - startTime;
this.timeSpan = (Math.Round(span.TotalMinutes, 2)).ToString();//两位小数的分钟
}
public bool IsValid()
{
if (string.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(LogType) || string.IsNullOrEmpty(ErrorType) || string.IsNullOrEmpty(ErrorMsg))
{
return false;
}
return true;
}
[JsonProperty(Order = 11)]
public string ErrorType { get; set; } = "";
[JsonProperty(Order = 12)]
public string ErrorMsg { get; set; } = "";
[JsonProperty(Order = 13)]
public string OperateType { get; set; } = "";
[JsonProperty(Order = 14)]
public string PosId { get; set; } = "";
[JsonProperty(Order = 15)]
public string Barcode { get; set; } = "";
}
public class MoveLog : BaseLog
{
public MoveLog()
{
this.LogType = "Running";
}
public MoveLog(string deviceName, string moveType, string moveMsg, DateTime startTime, DateTime endTime, string posid = "", string barcode = "")
{
this.LogType = "Running";
this.DeviceName = deviceName.Replace("-Move", "").Replace("-SMove", "").Trim();
this.MoveType = moveType.Trim();
this.MoveMsg = moveMsg.Trim();
this.StartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss");
this.EndTime = endTime.ToString("yyyy-MM-dd HH:mm:ss");
this.PosId = posid.Trim();
this.Barcode = barcode.Trim();
TimeSpan span = endTime - startTime;
this.timeSpan = (Math.Round(span.TotalMinutes, 2)).ToString();//两位小数的分钟
}
public bool IsValid()
{
if (string.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(LogType) || string.IsNullOrEmpty(MoveType) || string.IsNullOrEmpty(MoveMsg))
{
return false;
}
return true;
}
[JsonProperty(Order = 11)]
public string MoveType { get; set; } = "";
[JsonProperty(Order = 12)]
public string MoveMsg { get; set; } = "";
[JsonProperty(Order = 13)]
public string PosId { get; set; } = "";
[JsonProperty(Order = 14)]
public string Barcode { get; set; } = "";
}
public class MoveEndLog : BaseLog
{
public MoveEndLog()
{
this.LogType = "InoutEnd";
}
public MoveEndLog(string deviceName, string moveType, DateTime startTime, DateTime endTime, string posid = "", string barcode = "")
{
this.LogType = "InoutEnd";
this.DeviceName = deviceName.Replace("-Move", "").Replace("-SMove", "").Trim();
this.MoveType = moveType.Trim();
this.StartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss");
this.EndTime = endTime.ToString("yyyy-MM-dd HH:mm:ss");
this.PosId = posid.Trim();
this.Barcode = barcode.Trim();
TimeSpan span = endTime - startTime;
this.timeSpan = (Math.Round(span.TotalMinutes, 2)).ToString();//两位小数的分钟
}
public bool IsValid()
{
if (string.IsNullOrEmpty(DeviceName) || string.IsNullOrEmpty(MoveType))
{
return false;
}
return true;
}
[JsonProperty(Order = 11)]
public string MoveType { get; set; } = "";
[JsonProperty(Order = 12)]
public string PosId { get; set; } = "";
[JsonProperty(Order = 13)]
public string Barcode { get; set; } = "";
}
public class AxisMoveLog : BaseLog
{
public AxisMoveLog()
{
this.LogType = "Axis";
}
public AxisMoveLog(string deviceName, string axisName, string moveType, int targetP, int speed, DateTime startTime, DateTime endTime, string posid = "", string barcode = "")
{
this.LogType = "Axis";
this.DeviceName = deviceName.Replace("-Move", "").Replace("-SMove", "").Trim();
this.MoveType = moveType.Trim();
this.AxisName = axisName;
this.TargetPos = targetP;
this.StartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss");
this.EndTime = endTime.ToString("yyyy-MM-dd HH:mm:ss");
this.PosId = posid.Trim();
this.Barcode = barcode.Trim();
TimeSpan span = endTime - startTime;
this.timeSpan = (Math.Round(span.TotalMinutes, 2)).ToString();//两位小数的分钟
this.Speed = speed;
}
public bool IsValid()
{
if (string.IsNullOrEmpty(DeviceName) || string.IsNullOrEmpty(MoveType))
{
return false;
}
return true;
}
[JsonProperty(Order = 11)]
public string AxisName { get; set; } = "";
[JsonProperty(Order = 12)]
public string MoveType { get; set; } = "";
[JsonProperty(Order = 13)]
public int TargetPos { get; set; } = 0;
[JsonProperty(Order = 14)]
public int Speed { get; set; }
[JsonProperty(Order = 15)]
public string PosId { get; set; } = "";
[JsonProperty(Order = 16)]
public string Barcode { get; set; } = "";
}
}
...@@ -194,6 +194,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -194,6 +194,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "复位", MoveInfo.MoveStartTime, DateTime.Now));
MoveEndS(); MoveEndS();
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
break; break;
...@@ -262,7 +263,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -262,7 +263,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(300); Thread.Sleep(300);
if (IOValue(IO_Type.DLine_SuddenStop).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.DLine_SuddenStop).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg(Name + "收到急停信号,急停报警"); SetWarnMsg(Name + "收到急停信号,急停报警", "急停报警");
Alarm(LineAlarmType.SuddenStop); Alarm(LineAlarmType.SuddenStop);
return; return;
} }
......
...@@ -190,6 +190,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -190,6 +190,8 @@ namespace OnlineStore.DeviceLibrary
int robotIndex = GetRobotIndex(); int robotIndex = GetRobotIndex();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料,接驳台有料,调用arriveRobotLocation=" + robotIndex + "[" + StationInfo_Move.CodeStr + "]"); LogUtil.info(hengyiName + MoveInfo.SLog + "送料,接驳台有料,调用arriveRobotLocation=" + robotIndex + "[" + StationInfo_Move.CodeStr + "]");
string msg = SServerManager.arriveRobotLocation(Name, robotIndex, StationInfo_Move.CodeStr); string msg = SServerManager.arriveRobotLocation(Name, robotIndex, StationInfo_Move.CodeStr);
MoveEndS(); MoveEndS();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料结束 [" + msg + "]"); LogUtil.info(hengyiName + MoveInfo.SLog + "送料结束 [" + msg + "]");
} }
...@@ -206,6 +208,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -206,6 +208,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_08_CRun)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_08_CRun))
{ {
SeparateStopRun(); SeparateStopRun();
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "送料", MoveInfo.MoveStartTime, DateTime.Now, "", StationInfo_Move.CodeStr));
MoveEndS(); MoveEndS();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料结束,停止接驳台皮带线 "); LogUtil.info(hengyiName + MoveInfo.SLog + "送料结束,停止接驳台皮带线 ");
} }
......
...@@ -185,19 +185,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -185,19 +185,8 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("IOTimeOutProcess出错:",ex); LogUtil.error("IOTimeOutProcess出错:",ex);
} }
} }
protected void ClearTimeoutAlarm(string msg)
{
if (isInSuddenDown || isNoAirCheck)
{
return;
}
if (WarnMsg.Contains(msg) && alarmType.Equals(LineAlarmType.IoSingleTimeOut))
{
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = LineAlarmType.None;
SetWarnMsg("");
}
}
protected bool CanStartRun() protected bool CanStartRun()
{ {
string canResult = LineManager.Line.CanStart(); string canResult = LineManager.Line.CanStart();
...@@ -380,7 +369,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -380,7 +369,7 @@ namespace OnlineStore.DeviceLibrary
IOMove(axis.Config.BreakOnDO, IO_VALUE.HIGH); IOMove(axis.Config.BreakOnDO, IO_VALUE.HIGH);
return true; return true;
} }
SetWarnMsg(Name + msg); SetWarnMsg(Name + msg,axis.Config.DisplayStr+"_轴报警");
//WarnMsg = DateTime.Now.ToLongTimeString() + " " + Name + msg; //WarnMsg = DateTime.Now.ToLongTimeString() + " " + Name + msg;
Alarm(LineAlarmType.AxisAlarm); Alarm(LineAlarmType.AxisAlarm);
return false; return false;
...@@ -443,16 +432,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -443,16 +432,24 @@ namespace OnlineStore.DeviceLibrary
if (wait.IsHomeMove) if (wait.IsHomeMove)
{ {
wait.IsEnd = AxisBean.HomeMoveIsEnd(moveInfo, wait.AxisInfo, out msg); wait.IsEnd = AxisBean.HomeMoveIsEnd(moveInfo, wait.AxisInfo, out msg);
if (wait.IsEnd)
{
RunLogUtil.AxisLog(new AxisMoveLog(Name, wait.AxisInfo.Explain, "回原点", 0, wait.AxisInfo.HomeHighSpeed, moveInfo.LastSetpTime, DateTime.Now, moveInfo.MoveParam.PosId, moveInfo.MoveParam.WareCode));
}
} }
else else
{ {
wait.IsEnd = AxisBean.ACAxisMoveIsEnd(moveInfo, wait.AxisInfo, wait.TargetPosition, wait.TargetSpeed, out msg); wait.IsEnd = AxisBean.ACAxisMoveIsEnd(moveInfo, wait.AxisInfo, wait.TargetPosition, wait.TargetSpeed, out msg);
if (wait.IsEnd)
{
RunLogUtil.AxisLog(new AxisMoveLog(Name, wait.AxisInfo.Explain, "绝对运动", wait.TargetPosition, wait.TargetSpeed, moveInfo.LastSetpTime, DateTime.Now, moveInfo.MoveParam.PosId, moveInfo.MoveParam.WareCode));
}
} }
if (!msg.Equals("")) if (!msg.Equals(""))
{ {
isOk = false; isOk = false;
WarnMsg = Name + msg; string type = moveInfo.GetStepDes() + "_轴运动报警";
SetWarnMsg(msg, type,moveInfo);
Alarm(LineAlarmType.AxisMoveError); Alarm(LineAlarmType.AxisMoveError);
CheckAlarmProcess(moveInfo, LineAlarmType.AxisMoveError); CheckAlarmProcess(moveInfo, LineAlarmType.AxisMoveError);
LogUtil.error(WarnMsg, DeviceID * 1000 + 14); LogUtil.error(WarnMsg, DeviceID * 1000 + 14);
...@@ -477,9 +474,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -477,9 +474,12 @@ namespace OnlineStore.DeviceLibrary
if (span.TotalSeconds > LineManager.Config.IOSingle_TimerOut && alarmType <= LineAlarmType.IoSingleTimeOut) if (span.TotalSeconds > LineManager.Config.IOSingle_TimerOut && alarmType <= LineAlarmType.IoSingleTimeOut)
{ {
ConfigIO io = baseConfig.getWaitIO(wait.IoType); ConfigIO io = baseConfig.getWaitIO(wait.IoType);
WarnMsg = moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "] 等待" + NotOkMsg + " 超时 " + Math.Round(span.TotalSeconds, 1) + "秒"; string msg= moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "] 等待" + NotOkMsg + " 超时 " + Math.Round(span.TotalSeconds, 1) + "秒";
LogUtil.error(MoveInfo.Name + WarnMsg, DeviceID * 1000 + 13); string type = moveInfo.GetStepDes() + "_" + "超时报警";
SetWarnMsg(msg, type,moveInfo);
//WarnMsg = moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "] 等待" + NotOkMsg + " 超时 " + Math.Round(span.TotalSeconds, 1) + "秒";
//LogUtil.error(MoveInfo.Name + WarnMsg, DeviceID * 1000 + 13);
if (NoAlarm()) if (NoAlarm())
{ {
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
...@@ -559,11 +559,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -559,11 +559,11 @@ namespace OnlineStore.DeviceLibrary
if (isOk) if (isOk)
{ {
moveInfo.EndStepWait(); moveInfo.EndStepWait();
ClearStepAlarm(moveInfo.GetStepDes());
} }
else if (span.TotalSeconds > moveInfo.TimeOutSeconds) else if (span.TotalSeconds > moveInfo.TimeOutSeconds)
{ {
WarnMsg = moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "]等待" + NotOkMsg
+ "超时[" + Math.Round(span.TotalSeconds, 1) + "]秒";
int second = 10; int second = 10;
if (IsLowAlarm(moveInfo)) if (IsLowAlarm(moveInfo))
{ {
...@@ -577,7 +577,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -577,7 +577,12 @@ namespace OnlineStore.DeviceLibrary
{ {
second = 10; second = 10;
} }
LogUtil.error(WarnMsg, DeviceID * 1000 + 15, second); //WarnMsg = moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "]等待" + NotOkMsg+ "超时[" + Math.Round(span.TotalSeconds, 1) + "]秒";
//LogUtil.error(WarnMsg, DeviceID * 1000 + 15, second);
string msg= moveInfo.Name + "[" + moveInfo.MoveType + "][" + moveInfo.MoveStep + "]等待" + NotOkMsg + "超时[" + Math.Round(span.TotalSeconds, 1) + "]秒";
string type = moveInfo.GetStepDes() + "_" + "超时报警";
SetWarnMsg(msg, type,moveInfo, second);
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
CheckAlarmProcess(moveInfo, LineAlarmType.IoSingleTimeOut); CheckAlarmProcess(moveInfo, LineAlarmType.IoSingleTimeOut);
} }
...@@ -587,6 +592,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -587,6 +592,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(moveInfo.Name + " [" + moveInfo.MoveStep + "] CheckWait 出错:", ex); LogUtil.error(moveInfo.Name + " [" + moveInfo.MoveStep + "] CheckWait 出错:", ex);
} }
} }
private bool IsLowAlarm(LineMoveInfo moveInfo) private bool IsLowAlarm(LineMoveInfo moveInfo)
{ {
//托盘卡的信号不报警,只提示 //托盘卡的信号不报警,只提示
......
...@@ -291,6 +291,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -291,6 +291,7 @@ namespace OnlineStore.DeviceLibrary
LogInfo("重置完成,出口检测到有料架,调用 " + Config.AgvOutName + " AgvClient.NeedLeave"); LogInfo("重置完成,出口检测到有料架,调用 " + Config.AgvOutName + " AgvClient.NeedLeave");
AgvClient.NeedLeave(Config.AgvOutName, LastOutShelfId, level); AgvClient.NeedLeave(Config.AgvOutName, LastOutShelfId, level);
} }
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "复位", MoveInfo.MoveStartTime, DateTime.Now));
MoveEndS(); MoveEndS();
break; break;
default: break; default: break;
...@@ -557,9 +558,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -557,9 +558,10 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
WarnMsg = Name + "TrayLCylinderAfter:提升轴当前不在下降位置P2,不后退定位气缸"; //WarnMsg = Name + "TrayLCylinderAfter:提升轴当前不在下降位置P2,不后退定位气缸";
//LogUtil.error(Name + "TrayLCylinderAfter:提升轴当前不在下降位置P2,不后退定位气缸");
SetWarnMsg("TrayLCylinderAfter:提升轴当前不在下降位置P2,不后退定位气缸");
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
LogUtil.error(Name + "TrayLCylinderAfter:提升轴当前不在下降位置P2,不后退定位气缸");
} }
} }
if (moveinfo != null) if (moveinfo != null)
...@@ -655,7 +657,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -655,7 +657,7 @@ namespace OnlineStore.DeviceLibrary
IsInProcess = true; IsInProcess = true;
lastOkTime = DateTime.Now; lastOkTime = DateTime.Now;
if (IOValue(TargetIoType).Equals(TargetIoValue)) if (IOValue(TargetIoType).Equals(TargetIoValue))
{ {
LogUtil.info(Name + "上料轴,检测到 " + TargetIoType + "=" + TargetIoValue + ",停止运动"); LogUtil.info(Name + "上料轴,检测到 " + TargetIoType + "=" + TargetIoValue + ",停止运动");
BatchAxis.SuddenStop(); BatchAxis.SuddenStop();
BatchAxisStopCheck(); BatchAxisStopCheck();
......
...@@ -436,8 +436,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -436,8 +436,8 @@ namespace OnlineStore.DeviceLibrary
{ {
if (SecondMoveInfo.IsTimeOut(15)) if (SecondMoveInfo.IsTimeOut(15))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待入库托盘超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; string msg= SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待入库托盘超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg + ",暂时放托盘离开"); LogUtil.error(msg + ",暂时放托盘离开");
TrayMoveOk(); TrayMoveOk();
} }
} }
...@@ -448,24 +448,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -448,24 +448,23 @@ namespace OnlineStore.DeviceLibrary
if (StartTrayOut(SecondMoveInfo.MoveParam)) if (StartTrayOut(SecondMoveInfo.MoveParam))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_201_WaitOutEnd); SecondMoveInfo.NextMoveStep(LineMoveStep.MO_201_WaitOutEnd);
} }
//如果当前无料串,或者料串已离开,直接放行 托盘
//如果当前无料串,或者料串已离开,直接放行 托盘
else if (SecondMoveInfo.IsTimeOut(30)) else if (SecondMoveInfo.IsTimeOut(30))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; string msg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg + ",暂时放托盘离开"); LogUtil.error(msg + ",暂时放托盘离开");
TrayMoveOk(); TrayMoveOk();
} }
else if (SecondMoveInfo.IsTimeOut(20)) else if (SecondMoveInfo.IsTimeOut(20))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(SecondMoveInfo, "等待出库移栽超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 21); //WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待出库移栽超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 21);
} //Alarm(LineAlarmType.IoSingleTimeOut);
}
} }
} }
private void TrayMoveOk(bool needCheck = false) private void TrayMoveOk(bool needCheck = false)
{ {
if (needCheck && (!SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember))) if (needCheck && (!SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember)))
...@@ -792,9 +791,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -792,9 +791,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(60))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 扫码执行结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "扫码执行结束超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 30); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 扫码执行结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 30);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_14_CylinderTake)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_14_CylinderTake))
...@@ -1001,9 +1001,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -1001,9 +1001,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(180)) else if (MoveInfo.IsTimeOut(180))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待空托盘到达超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 22); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 22);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_26_CylinderDown)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_26_CylinderDown))
...@@ -1162,7 +1163,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1162,7 +1163,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_59_TopDown)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_59_TopDown))
{ {
MoveEndS(); MoveEndS();
// MoveInfo.NextMoveStep(LineMoveStep.FI_39_OutLineRun); // MoveInfo.NextMoveStep(LineMoveStep.FI_39_OutLineRun);
LastOutShelfId = CurrShelfId; LastOutShelfId = CurrShelfId;
...@@ -1191,9 +1192,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -1191,9 +1192,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(15)) else if (MoveInfo.IsTimeOut(15))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 获取库位号超时 " + getPosIdMsg + " [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "获取库位号超时 " + getPosIdMsg + "");
LogUtil.error(WarnMsg, DeviceID * 1000 + 30); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 获取库位号超时 " + getPosIdMsg + " [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 30);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
...@@ -1447,9 +1449,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -1447,9 +1449,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(60))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待预扫码结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待预扫码结束超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 21); //WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待预扫码结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 21);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else else
...@@ -1499,8 +1502,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -1499,8 +1502,9 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
WarnMsg = Name + "提升轴运动报警。上升到P3点已重复" + LoopCount + "次,仍未检测到料盘信号"; //WarnMsg = Name + "提升轴运动报警。上升到P3点已重复" + LoopCount + "次,仍未检测到料盘信号";
LogUtil.error(WarnMsg); //LogUtil.error(WarnMsg);
SetWarnMsg("提升轴运动报警。上升到P3点已重复" + LoopCount + "次,仍未检测到料盘信号", "提升轴运动报警,未检测到料盘信号");
Alarm(LineAlarmType.AxisMoveError); Alarm(LineAlarmType.AxisMoveError);
} }
return; return;
......
...@@ -744,9 +744,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -744,9 +744,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(60))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待给服务器发送afterPut完成超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待给服务器发送afterPut完成超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 21); //WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待给服务器发送afterPut完成超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 21);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
} }
......
...@@ -719,7 +719,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -719,7 +719,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(300); Thread.Sleep(300);
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("收到急停信号,报警急停"); SetWarnMsg("收到急停信号,报警急停","急停报警");
Alarm(LineAlarmType.SuddenStop); Alarm(LineAlarmType.SuddenStop);
} }
//}); //});
...@@ -865,7 +865,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -865,7 +865,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if ((DateTime.Now - lastAirCloseTime).TotalSeconds > Config.AirCheckSeconds) if ((DateTime.Now - lastAirCloseTime).TotalSeconds > Config.AirCheckSeconds)
{ {
SetWarnMsg("持续"+Config.AirCheckSeconds+"秒未检测到气压信号"); SetWarnMsg("持续"+Config.AirCheckSeconds+"秒未检测到气压信号","未检测到气压信号");
//SendAlarmCode(0, LineAlarm.NoAirCheck); //SendAlarmCode(0, LineAlarm.NoAirCheck);
airValue = IO_VALUE.LOW; airValue = IO_VALUE.LOW;
Alarm(LineAlarmType.NoAirCheck ); Alarm(LineAlarmType.NoAirCheck );
...@@ -1028,8 +1028,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -1028,8 +1028,8 @@ namespace OnlineStore.DeviceLibrary
} }
else if (span.TotalSeconds > 120) else if (span.TotalSeconds > 120)
{ {
WarnMsg = Name + "[" + MoveInfo.MoveStep + "][" + msg + "]已等待[" + Math.Round(span.TotalSeconds, 1) + "]秒"; string wMsg = Name + "[" + MoveInfo.MoveStep + "][" + msg + "]已等待[" + Math.Round(span.TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, 903); SetWarnMsg(wMsg,$"{msg}超时", MoveInfo);
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
......
...@@ -110,9 +110,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -110,9 +110,9 @@ namespace OnlineStore.DeviceLibrary
if (span.TotalSeconds > LineManager.Config.IOSingle_TimerOut && NoAlarm()) if (span.TotalSeconds > LineManager.Config.IOSingle_TimerOut && NoAlarm())
{ {
ConfigIO io = baseConfig.getWaitIO(wait.IoType); ConfigIO io = baseConfig.getWaitIO(wait.IoType);
WarnMsg = Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时"; string warnMsg= checkWaitInfo.Name + "[" + checkWaitInfo.MoveStep + "]等待" + NotOkMsg + " 超时";
SetWarnMsg(warnMsg, checkWaitInfo.GetStepDes()+"_超时报警", checkWaitInfo);
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
LogUtil.error(MoveInfo.Name + WarnMsg, 901);
} }
//超过报警时长 //超过报警时长
else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < LineManager.Config.IOSingle_TimerOut * 2) else if (rwSpan.TotalSeconds > 5 && span.TotalSeconds > 6 && span.TotalSeconds < LineManager.Config.IOSingle_TimerOut * 2)
...@@ -183,11 +183,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -183,11 +183,12 @@ namespace OnlineStore.DeviceLibrary
if (isOk) if (isOk)
{ {
checkWaitInfo.EndStepWait(); checkWaitInfo.EndStepWait();
ClearStepAlarm(checkWaitInfo.GetStepDes());
} }
else if (span.TotalSeconds > checkWaitInfo.TimeOutSeconds) else if (span.TotalSeconds > checkWaitInfo.TimeOutSeconds)
{ {
WarnMsg = checkWaitInfo.Name + "[" + checkWaitInfo.MoveStep + "][" + NotOkMsg + "]已等待[" + Math.Round(span.TotalSeconds, 1) + "]秒"; string wanMsg = checkWaitInfo.Name + "[" + checkWaitInfo.MoveStep + "][" + NotOkMsg + "]已等待[" + Math.Round(span.TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, 900); SetWarnMsg(wanMsg, checkWaitInfo.GetStepDes()+"_超时报警" , checkWaitInfo);
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
......
...@@ -285,9 +285,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -285,9 +285,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (Shunt_MoveInfo.IsTimeOut(120)) else if (Shunt_MoveInfo.IsTimeOut(120))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待分流横移2可以上升[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(Shunt_MoveInfo, "等待分流横移2可以上升");
LogUtil.error(WarnMsg, DeviceID * 1000 + 12); //WarnMsg = Shunt_MoveInfo.Name + "[" + Shunt_MoveInfo.MoveType + "][" + Shunt_MoveInfo.SLog + "]等待分流横移2可以上升[" + Math.Round(Shunt_MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 12);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else if (Shunt_MoveInfo.MoveStep.Equals(LineMoveStep.Shunt07_Top2Up)) else if (Shunt_MoveInfo.MoveStep.Equals(LineMoveStep.Shunt07_Top2Up))
......
...@@ -337,9 +337,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -337,9 +337,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (Shunt2_MoveInfo.IsTimeOut(120)) else if (Shunt2_MoveInfo.IsTimeOut(120))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待分流横移22可以上升[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(Shunt2_MoveInfo, "等待分流横移2可以上升");
LogUtil.error(WarnMsg, DeviceID * 1000 + 12); //WarnMsg = Shunt2_MoveInfo.Name + "[" + Shunt2_MoveInfo.MoveType + "][" + Shunt2_MoveInfo.SLog + "]等待分流横移22可以上升[" + Math.Round(Shunt2_MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 12);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else if (Shunt2_MoveInfo.MoveStep.Equals(LineMoveStep.Shunt07_Top2Up)) else if (Shunt2_MoveInfo.MoveStep.Equals(LineMoveStep.Shunt07_Top2Up))
......
...@@ -161,6 +161,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -161,6 +161,7 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "复位", MoveInfo.MoveStartTime, DateTime.Now));
ResetEnd(); ResetEnd();
} }
......
...@@ -249,6 +249,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -249,6 +249,8 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down); CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
OutLog("出库处理结束!"); OutLog("出库处理结束!");
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "出库", MoveInfo.MoveStartTime, DateTime.Now, MoveInfo.MoveParam.PosId, MoveInfo.MoveParam.WareCode));
MoveEndS(); MoveEndS();
} }
...@@ -275,9 +277,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -275,9 +277,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(300)) else if (MoveInfo.IsTimeOut(300))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待空托盘到达超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 12); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 12);
//Alarm(LineAlarmType.IoSingleTimeOut);
return false; return false;
} }
return false; return false;
...@@ -521,13 +524,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -521,13 +524,14 @@ namespace OnlineStore.DeviceLibrary
if (sendCount >= 3) if (sendCount >= 3)
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] " + " 等待BOX开始入库超时 已发送" + sendCount + "次"; SetWarnMsg(MoveInfo.Name + "[" + MoveInfo.MoveStep + "] " + " 等待BOX开始入库超时 已发送" + sendCount + "次","等待BOX开始入库超时");
LogUtil.error(WarnMsg); //LogUtil.error(WarnMsg);
Alarm(LineAlarmType.IoSingleTimeOut); Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else else
{ {
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "入库", MoveInfo.MoveStartTime, DateTime.Now, MoveInfo.MoveParam.PosId, MoveInfo.MoveParam.WareCode));
sendCount = 0; sendCount = 0;
LogInfo("入库【" + posId + "】处理(移栽)全部完成!"); LogInfo("入库【" + posId + "】处理(移栽)全部完成!");
MoveEndS(); MoveEndS();
...@@ -535,6 +539,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -535,6 +539,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_16_SendEnd)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_16_SendEnd))
{ {
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "入库", MoveInfo.MoveStartTime, DateTime.Now, MoveInfo.MoveParam.PosId, MoveInfo.MoveParam.WareCode));
LogInfo("入库【" + posId + "】处理(移栽)全部完成!"); LogInfo("入库【" + posId + "】处理(移栽)全部完成!");
MoveEndS(); MoveEndS();
} }
...@@ -1072,8 +1077,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -1072,8 +1077,8 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_09_WaitLetFixtureGo); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_09_WaitLetFixtureGo);
}else if (SecondMoveInfo.IsTimeOut(30)) }else if (SecondMoveInfo.IsTimeOut(30))
{ {
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待开始入库超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; string msg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待开始入库超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg + ",暂时放托盘离开"); LogUtil.error(msg + ",暂时放托盘离开");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown); SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
InLog("放托盘(放开阻挡): " + MoveInfo.SLog + " 入库超时,放托盘离开,顶升气缸1下降"); InLog("放托盘(放开阻挡): " + MoveInfo.SLog + " 入库超时,放托盘离开,顶升气缸1下降");
CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down); CylinderMove(SecondMoveInfo, IO_Type.TopCylinder_UP, IO_Type.TopCylinder_Down);
...@@ -1131,9 +1136,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -1131,9 +1136,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (SecondMoveInfo.IsTimeOut(120)) else if (SecondMoveInfo.IsTimeOut(120))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待分流横移1空闲[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(SecondMoveInfo, "等待分流横移1空闲");
LogUtil.error(WarnMsg, DeviceID * 1000 + 12); //WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveType + "][" + SecondMoveInfo.SLog + "]等待分流横移1空闲[" + Math.Round(SecondMoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 12);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
......
...@@ -133,6 +133,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -133,6 +133,7 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten); CylinderMove(MoveInfo, IO_Type.ClampCylinder_Slack, IO_Type.ClampCylinder_Tighten);
break; break;
case LineMoveStep.MH_OtherCylinderBack: case LineMoveStep.MH_OtherCylinderBack:
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "复位", MoveInfo.MoveStartTime, DateTime.Now));
MoveInfo.EndMove(); MoveInfo.EndMove();
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
LogInfo(MoveInfo.MoveType + " 完成!"); LogInfo(MoveInfo.MoveType + " 完成!");
......
...@@ -423,8 +423,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -423,8 +423,9 @@ namespace OnlineStore.DeviceLibrary
} }
else if(SecondMoveInfo.IsTimeOut(30)) else if(SecondMoveInfo.IsTimeOut(30))
{ {
WarnMsg = Name + TrayDisableManager.ProWarnMsg+ "[" + currTrayNum + "], 请处理并启用托盘,已超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(SecondMoveInfo, "等待处理并启用托盘超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 20); //WarnMsg = Name + TrayDisableManager.ProWarnMsg+ "[" + currTrayNum + "], 请处理并启用托盘,已超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
//LogUtil.error(WarnMsg, DeviceID * 1000 + 20);
} }
else else
{ {
...@@ -639,10 +640,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -639,10 +640,10 @@ namespace OnlineStore.DeviceLibrary
PO_07_CylinderBefore(); PO_07_CylinderBefore();
} }
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_05_ClampCheck)) //else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_05_ClampCheck))
{ //{
PO_07_CylinderBefore(); // PO_07_CylinderBefore();
} //}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_06_WaitBox)) //else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_06_WaitBox))
//{ //{
// MoveInfo.NextMoveStep(LineMoveStep.PO_07_CylinderBefore); // MoveInfo.NextMoveStep(LineMoveStep.PO_07_CylinderBefore);
...@@ -681,9 +682,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -681,9 +682,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut()) else if (MoveInfo.IsTimeOut())
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待 皮带线可放料 " + "超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待皮带线可放料超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 20); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待 皮带线可放料 " + "超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 20);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
else else
...@@ -707,14 +709,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -707,14 +709,16 @@ namespace OnlineStore.DeviceLibrary
{ {
if (afterPutCutOK) if (afterPutCutOK)
{ {
RunLogUtil.MoveEndLog(new MoveEndLog(Name, "出库", MoveInfo.MoveStartTime, DateTime.Now, MoveInfo.MoveParam.PosId, MoveInfo.MoveParam.WareCode));
OutLog("出料【" + posId + "】处理完成!"); OutLog("出料【" + posId + "】处理完成!");
MoveEndS(); MoveEndS();
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(60))
{ {
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待 给服务器发送afterPutCutTask完成 " + "超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; MoveTimeoutAlarm(MoveInfo, "等待给服务器发送afterPutCutTask完成超时");
LogUtil.error(WarnMsg, DeviceID * 1000 + 20); //WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待 给服务器发送afterPutCutTask完成 " + "超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
Alarm(LineAlarmType.IoSingleTimeOut); //LogUtil.error(WarnMsg, DeviceID * 1000 + 20);
//Alarm(LineAlarmType.IoSingleTimeOut);
} }
} }
} }
......
...@@ -3,6 +3,7 @@ using OnlineStore.Common; ...@@ -3,6 +3,7 @@ using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
...@@ -19,26 +20,36 @@ namespace OnlineStore.DeviceLibrary ...@@ -19,26 +20,36 @@ namespace OnlineStore.DeviceLibrary
public static bool IsConnectServer = !ConfigAppSettings.GetValue(Setting_Init.http_server).Equals(""); public static bool IsConnectServer = !ConfigAppSettings.GetValue(Setting_Init.http_server).Equals("");
public static LineBean Line = null; public static LineBean Line = null;
public static Line_Config Config = null; public static Line_Config Config = null;
public static Dictionary<int, DeviceConfig> allConfigMap = null; public static Dictionary<int, DeviceConfig> allConfigMap = null;
public LineManager() public LineManager()
{ {
} }
public static void CheckEnum(Type type) public static Dictionary<string, string> StepDesMap = new Dictionary<string, string>();
public static void CheckEnum(Type type, bool isStep = false)
{ {
if (type.IsEnum) if (type.IsEnum)
{ {
List<int> valueList = new List<int>(); List<int> valueList = new List<int>();
Array array = Enum.GetValues(type); Array array = Enum.GetValues(type);
foreach (int item in array) foreach (int item in array)
{ {
if (valueList.Contains(item)) if (valueList.Contains(item))
{ {
LogUtil.error( type.Name + "枚举值:" + item + "重复存在,请检查代码!程序退出。"); LogUtil.error(type.Name + "枚举值:" + item + "重复存在,请检查代码!程序退出。");
Application.Exit(); Application.Exit();
break; break;
} }
valueList.Add(item); valueList.Add(item);
if (isStep)
{
LineMoveStep en = (LineMoveStep)item;
string des = EnumDesHelper.GetStepDes(en);
StepDesMap.Add(en.ToString(), des);
}
} }
} }
} }
...@@ -72,13 +83,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -72,13 +83,13 @@ namespace OnlineStore.DeviceLibrary
{ {
IsConnectServer = true; IsConnectServer = true;
} }
CheckEnum(typeof(LineMoveStep)); CheckEnum(typeof(LineMoveStep), true);
CheckEnum(typeof(LineStatus)); CheckEnum(typeof(LineStatus));
CheckEnum(typeof(LineRunStatus)); CheckEnum(typeof(LineRunStatus));
isInit = true; isInit = true;
string lineType = ConfigAppSettings.GetValue(Setting_Init.Line_Type); string lineType = ConfigAppSettings.GetValue(Setting_Init.Line_Type);
LogUtil.info( " 类型=" + lineType + ",开始加载 配置"); LogUtil.info(" 类型=" + lineType + ",开始加载 配置");
if (lineType == DeviceType.Line) if (lineType == DeviceType.Line)
{ {
string appPath = Application.StartupPath; string appPath = Application.StartupPath;
...@@ -93,16 +104,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -93,16 +104,16 @@ namespace OnlineStore.DeviceLibrary
{ {
string nameStr = i.ToString().PadLeft(2, '0'); string nameStr = i.ToString().PadLeft(2, '0');
string config = appPath + moveEquipConfig.Replace(".csv", "_" + nameStr + ".csv"); string config = appPath + moveEquipConfig.Replace(".csv", "_" + nameStr + ".csv");
MoveEquip_Config moveConfig = CSVConfigReader.LoadMoveConfig(i,DeviceType.MoveEquip, config); MoveEquip_Config moveConfig = CSVConfigReader.LoadMoveConfig(i, DeviceType.MoveEquip, config);
int subType = i; int subType = i;
// moveConfig.SetIO(subType); // moveConfig.SetIO(subType);
moveECMap.Add(i, moveConfig); moveECMap.Add(i, moveConfig);
// allConfigMap.Add(subType, moveConfig); // allConfigMap.Add(subType, moveConfig);
} }
foreach (int i in moveECMap.Keys) foreach (int i in moveECMap.Keys)
{ {
int subType = i; int subType = i;
moveECMap[i].SetIO(subType); moveECMap[i].SetIO(subType);
allConfigMap.Add(subType, moveECMap[i]); allConfigMap.Add(subType, moveECMap[i]);
} }
int feedingEquipCount = ConfigAppSettings.GetIntValue(Setting_Init.Line_feedingEquip_count); int feedingEquipCount = ConfigAppSettings.GetIntValue(Setting_Init.Line_feedingEquip_count);
...@@ -111,7 +122,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -111,7 +122,7 @@ namespace OnlineStore.DeviceLibrary
{ {
int subType = 100 + i; int subType = 100 + i;
string config = appPath + feedingEquipConfig.Replace(".csv", "_" + i + ".csv"); string config = appPath + feedingEquipConfig.Replace(".csv", "_" + i + ".csv");
FeedingEquip_Config moveConfig = CSVConfigReader.LoadFeedingConfig(subType,DeviceType.FeedingEquip, config); FeedingEquip_Config moveConfig = CSVConfigReader.LoadFeedingConfig(subType, DeviceType.FeedingEquip, config);
moveConfig.SetIO(subType); moveConfig.SetIO(subType);
feedingECMap.Add(subType, moveConfig); feedingECMap.Add(subType, moveConfig);
allConfigMap.Add(subType, moveConfig); allConfigMap.Add(subType, moveConfig);
...@@ -123,7 +134,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -123,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
{ {
int subType = 200 + i; int subType = 200 + i;
string config = appPath + providingEquipConfig.Replace(".csv", "_" + i + ".csv"); string config = appPath + providingEquipConfig.Replace(".csv", "_" + i + ".csv");
ProvidingEquip_Config moveConfig = CSVConfigReader.LoadProvidingConfig(subType,DeviceType.ProvidingEquip, config); ProvidingEquip_Config moveConfig = CSVConfigReader.LoadProvidingConfig(subType, DeviceType.ProvidingEquip, config);
moveConfig.SetIO(subType); moveConfig.SetIO(subType);
providingECMap.Add(subType, moveConfig); providingECMap.Add(subType, moveConfig);
allConfigMap.Add(subType, moveConfig); allConfigMap.Add(subType, moveConfig);
...@@ -135,7 +146,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -135,7 +146,7 @@ namespace OnlineStore.DeviceLibrary
{ {
int subType = 300 + i; int subType = 300 + i;
string config = appPath + dischargeLineConfig.Replace(".csv", "_" + i + ".csv"); string config = appPath + dischargeLineConfig.Replace(".csv", "_" + i + ".csv");
DischargeLine_Config moveConfig = CSVConfigReader.LoadDischargeLineConfig(subType,DeviceType.DischargeLine, config); DischargeLine_Config moveConfig = CSVConfigReader.LoadDischargeLineConfig(subType, DeviceType.DischargeLine, config);
moveConfig.SetIO(subType); moveConfig.SetIO(subType);
disChargeLineMap.Add(subType, moveConfig); disChargeLineMap.Add(subType, moveConfig);
allConfigMap.Add(subType, moveConfig); allConfigMap.Add(subType, moveConfig);
...@@ -143,7 +154,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -143,7 +154,7 @@ namespace OnlineStore.DeviceLibrary
Config.SetIO(1000); Config.SetIO(1000);
Line = new LineBean(Config, moveECMap, feedingECMap, providingECMap, disChargeLineMap); Line = new LineBean(Config, moveECMap, feedingECMap, providingECMap, disChargeLineMap);
LoadTrayCheck(); LoadTrayCheck();
LogUtil.info( "加载 完成!"); LogUtil.info("加载 完成!");
return true; return true;
} }
} }
...@@ -154,24 +165,24 @@ namespace OnlineStore.DeviceLibrary ...@@ -154,24 +165,24 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("出错:",ex); LogUtil.error("出错:", ex);
MessageBox.Show(ex.ToString(), "加载配置错误(请检查配置)"); MessageBox.Show(ex.ToString(), "加载配置错误(请检查配置)");
Application.Exit(); Application.Exit();
} }
return false; return false;
} }
public static void SaveMoveEquipConfig(MoveEquip_Config config) public static void SaveMoveEquipConfig(MoveEquip_Config config)
{ {
try try
{ {
//位置配置到文件中 //位置配置到文件中
string appPath = Application.StartupPath; string appPath = Application.StartupPath;
string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_MoveEquip); string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_MoveEquip);
string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + config.Id.ToString().PadLeft(2,'0') + ".csv"); string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + config.Id.ToString().PadLeft(2, '0') + ".csv");
allConfigMap[config.Id] = config; allConfigMap[config.Id] = config;
bool result = CSVConfigReader.SaveConfig(configStr, config,typeof(MoveEquip_Config)); bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(MoveEquip_Config));
if (!result) if (!result)
{ {
LogUtil.error("保存配置文件失败:" + configStr); LogUtil.error("保存配置文件失败:" + configStr);
...@@ -179,7 +190,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -179,7 +190,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("出错:",ex); LogUtil.error("出错:", ex);
} }
} }
public static void SaveFeedingEquipConfig(FeedingEquip_Config config) public static void SaveFeedingEquipConfig(FeedingEquip_Config config)
...@@ -191,9 +202,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -191,9 +202,9 @@ namespace OnlineStore.DeviceLibrary
string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_FeedingEquip); string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_FeedingEquip);
int id = config.Id - 100; int id = config.Id - 100;
string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id+ ".csv"); string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv");
allConfigMap[config.Id] = config; allConfigMap[config.Id] = config;
bool result = CSVConfigReader.SaveConfig(configStr, config,typeof(FeedingEquip_Config)); bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(FeedingEquip_Config));
if (!result) if (!result)
{ {
LogUtil.error("保存配置文件失败:" + configStr); LogUtil.error("保存配置文件失败:" + configStr);
...@@ -201,7 +212,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -201,7 +212,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("出错:",ex); LogUtil.error("出错:", ex);
} }
} }
public static void SaveProvidingEquipConfig(ProvidingEquip_Config config) public static void SaveProvidingEquipConfig(ProvidingEquip_Config config)
...@@ -212,9 +223,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -212,9 +223,9 @@ namespace OnlineStore.DeviceLibrary
string appPath = Application.StartupPath; string appPath = Application.StartupPath;
string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_ProvidingEquip); string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_ProvidingEquip);
int id = config.Id - 200; int id = config.Id - 200;
string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv"); string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv");
allConfigMap[config.Id] = config; allConfigMap[config.Id] = config;
bool result = CSVConfigReader.SaveConfig(configStr, config,typeof(ProvidingEquip_Config)); bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(ProvidingEquip_Config));
if (!result) if (!result)
{ {
LogUtil.error("保存配置文件失败:" + configStr); LogUtil.error("保存配置文件失败:" + configStr);
...@@ -222,7 +233,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -222,7 +233,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("出错:",ex); LogUtil.error("出错:", ex);
} }
} }
...@@ -235,7 +246,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -235,7 +246,7 @@ namespace OnlineStore.DeviceLibrary
string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_DischargeLine); string moveEquipConfig = ConfigAppSettings.GetValue(Setting_Init.ConfigPath_DischargeLine);
int id = config.Id - 300; int id = config.Id - 300;
string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv"); string configStr = appPath + moveEquipConfig.Replace(".csv", "_" + id + ".csv");
// disChargeLineMap[config.Id] = config; // disChargeLineMap[config.Id] = config;
allConfigMap[config.Id] = config; allConfigMap[config.Id] = config;
bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(DischargeLine_Config)); bool result = CSVConfigReader.SaveConfig(configStr, config, typeof(DischargeLine_Config));
if (!result) if (!result)
...@@ -245,7 +256,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -245,7 +256,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("出错:",ex); LogUtil.error("出错:", ex);
} }
} }
...@@ -258,11 +269,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -258,11 +269,11 @@ namespace OnlineStore.DeviceLibrary
public static List<int> useTrayCheck = new List<int>(); public static List<int> useTrayCheck = new List<int>();
public static void LoadTrayCheck() public static void LoadTrayCheck()
{ {
string config = ConfigAppSettings.GetValue(Setting_Init.UseTrayCheck); string config = ConfigAppSettings.GetValue(Setting_Init.UseTrayCheck);
string[] array = config.Split(','); string[] array = config.Split(',');
foreach(string st in array) foreach (string st in array)
{ {
try try
{ {
...@@ -276,7 +287,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -276,7 +287,7 @@ namespace OnlineStore.DeviceLibrary
} }
} }
public static void AddTrayCheck(int id) public static void AddTrayCheck(int id)
{ {
if (useTrayCheck.Contains(id)) if (useTrayCheck.Contains(id))
{ {
...@@ -284,7 +295,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -284,7 +295,7 @@ namespace OnlineStore.DeviceLibrary
} }
useTrayCheck.Add(id); useTrayCheck.Add(id);
string config = ""; string config = "";
foreach(int i in useTrayCheck) foreach (int i in useTrayCheck)
{ {
config += i + ","; config += i + ",";
} }
...@@ -305,5 +316,5 @@ namespace OnlineStore.DeviceLibrary ...@@ -305,5 +316,5 @@ namespace OnlineStore.DeviceLibrary
} }
ConfigAppSettings.SaveValue(Setting_Init.UseTrayCheck, config); ConfigAppSettings.SaveValue(Setting_Init.UseTrayCheck, config);
} }
} }
} }
...@@ -28,10 +28,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -28,10 +28,9 @@ namespace OnlineStore.DeviceLibrary
/// 9=出库执行,10=出仓完成,11=出库失败 /// 9=出库执行,10=出仓完成,11=出库失败
/// </summary> /// </summary>
public LineStatus lineStatus = LineStatus.ResetMove; public LineStatus lineStatus = LineStatus.ResetMove;
/// <summary>
/// 提示消息,一般发给服务器后清空(LineBean表示报警提示消息,BoxBean表示出入库失败的原因记录)
/// </summary>
public string WarnMsg = ""; public string WarnMsg = "";
private WarnParam warnParam = new WarnParam();
public DeviceConfig baseConfig = null; public DeviceConfig baseConfig = null;
public string Name { get; set; } public string Name { get; set; }
public int DeviceID { get; set; } public int DeviceID { get; set; }
...@@ -41,7 +40,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -41,7 +40,7 @@ namespace OnlineStore.DeviceLibrary
protected System.Timers.Timer mainTimer; protected System.Timers.Timer mainTimer;
private bool isInit = false; private bool isInit = false;
public KTK_Store() public KTK_Store()
{ {
} }
...@@ -95,7 +94,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -95,7 +94,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(ex.ToString()); LogUtil.info(ex.ToString());
} }
} }
/// <summary> /// <summary>
/// 运动处理 /// 运动处理
/// </summary> /// </summary>
...@@ -132,7 +131,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -132,7 +131,7 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("BusyMoveProcess出错:",ex); LogUtil.error("BusyMoveProcess出错:", ex);
} }
isInPro = false; isInPro = false;
} }
...@@ -168,7 +167,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -168,7 +167,7 @@ namespace OnlineStore.DeviceLibrary
case LineAlarmType.IoSingleTimeOut: case LineAlarmType.IoSingleTimeOut:
aType = 3; aType = 3;
break; break;
default: break; default: break;
} }
alarmInfo = new AlarmInfo(DeviceID, aType, alarmDetial, alarmMsg, inoutStatus); alarmInfo = new AlarmInfo(DeviceID, aType, alarmDetial, alarmMsg, inoutStatus);
...@@ -178,7 +177,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -178,7 +177,7 @@ namespace OnlineStore.DeviceLibrary
/// 没有严重的报警 /// 没有严重的报警
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
internal bool NoErrorAlarm() internal bool NoErrorAlarm()
{ {
if (isInSuddenDown || isNoAirCheck) if (isInSuddenDown || isNoAirCheck)
{ {
...@@ -198,9 +197,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -198,9 +197,9 @@ namespace OnlineStore.DeviceLibrary
} }
if (alarmType.Equals(LineAlarmType.None)) if (alarmType.Equals(LineAlarmType.None))
{ {
return true ; return true;
} }
return false ; return false;
} }
/// <summary> /// <summary>
/// 开始运行 /// 开始运行
...@@ -214,7 +213,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -214,7 +213,7 @@ namespace OnlineStore.DeviceLibrary
/// 报警 /// 报警
/// </summary> /// </summary>
/// <param name="alarmType"></param> /// <param name="alarmType"></param>
public abstract void Alarm(LineAlarmType alarmType ); public abstract void Alarm(LineAlarmType alarmType);
/// <summary> /// <summary>
/// 重置(夹料装置状态不变) /// 重置(夹料装置状态不变)
/// </summary> /// </summary>
...@@ -223,21 +222,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -223,21 +222,21 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 停止所有运动 /// 停止所有运动
/// </summary> /// </summary>
internal abstract void StopMove( ); internal abstract void StopMove();
/// <summary> /// <summary>
/// 重置处理 /// 重置处理
/// </summary> /// </summary>
protected abstract void ResetProcess(); protected abstract void ResetProcess();
/// <summary> /// <summary>
/// 初始化 /// 初始化
/// </summary> /// </summary>
protected virtual void Init() protected virtual void Init()
{ {
if (!isInit) if (!isInit)
{ {
mainTimer = new System.Timers.Timer(); mainTimer = new System.Timers.Timer();
mainTimer.Enabled = false; mainTimer.Enabled = false;
mainTimer.Interval = 300; mainTimer.Interval = 300;
...@@ -245,7 +244,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -245,7 +244,7 @@ namespace OnlineStore.DeviceLibrary
mainTimer.AutoReset = true; mainTimer.AutoReset = true;
isInit = true; isInit = true;
} }
} }
/// <summary> /// <summary>
/// 移动信息 /// 移动信息
...@@ -273,37 +272,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -273,37 +272,8 @@ namespace OnlineStore.DeviceLibrary
protected abstract void InStoreProcess(); protected abstract void InStoreProcess();
#endregion #endregion
public void SetWarnMsg(string msg = "")
{ public string GetRunStr()
if (String.IsNullOrEmpty(msg).Equals(false))
{
if (WarnMsg.Equals(msg))
{
if (msg.StartsWith(Name))
{
LogUtil.error(msg, 801);
}
else
{
LogUtil.error(Name + msg, 801);
}
}
else
{
if (msg.StartsWith(Name))
{
LogUtil.error(msg);
}
else
{
LogUtil.error(Name + msg);
}
}
}
WarnMsg = msg;
}
public string GetRunStr( )
{ {
string sta = "运行中"; string sta = "运行中";
string aa = ""; string aa = "";
...@@ -368,12 +338,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -368,12 +338,12 @@ namespace OnlineStore.DeviceLibrary
if (isInSuddenDown) if (isInSuddenDown)
{ {
aa = "急停中"; aa = "急停中";
}else if (isNoAirCheck) } else if (isNoAirCheck)
{ {
aa = "无气压信号"; aa = "无气压信号";
} }
} }
if (!aa.Equals("")) if (!aa.Equals(""))
{ {
return sta + "_" + aa; return sta + "_" + aa;
...@@ -457,16 +427,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -457,16 +427,16 @@ namespace OnlineStore.DeviceLibrary
} }
public bool CylinderIsOk(string IoLowType, string IoHighType) public bool CylinderIsOk(string IoLowType, string IoHighType)
{ {
if (IOManager.DIValue(IoLowType,DeviceID).Equals(IO_VALUE.LOW) && IOManager.DIValue(IoHighType, DeviceID).Equals(IO_VALUE.HIGH)){ if (IOManager.DIValue(IoLowType, DeviceID).Equals(IO_VALUE.LOW) && IOManager.DIValue(IoHighType, DeviceID).Equals(IO_VALUE.HIGH)) {
return true; return true;
} }
return false; return false;
} }
public void CylinderMove(LineMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false) public void CylinderMove(LineMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false)
{ {
try try
{ {
if (baseConfig.DType.Equals(DeviceType.FeedingEquip)) if (baseConfig.DType.Equals(DeviceType.FeedingEquip))
{ {
if (!baseConfig.DOList.ContainsKey(IoLowType)) if (!baseConfig.DOList.ContainsKey(IoLowType))
...@@ -494,7 +464,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -494,7 +464,7 @@ namespace OnlineStore.DeviceLibrary
} }
//如果是进仓门口 夹紧 //如果是进仓门口 夹紧
if (baseConfig.DType.Equals(DeviceType.MoveEquip) && (IoHighType.Equals(IO_Type.ClampCylinder_Slack))) if (baseConfig.DType.Equals(DeviceType.MoveEquip) && (IoHighType.Equals(IO_Type.ClampCylinder_Slack)))
{ {
moveInfo.WaitList.Add(WaitResultInfo.WaitTime(800)); moveInfo.WaitList.Add(WaitResultInfo.WaitTime(800));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW)); moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW));
} }
...@@ -520,11 +490,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -520,11 +490,11 @@ namespace OnlineStore.DeviceLibrary
IOMove(IoLowType, IO_VALUE.LOW); IOMove(IoLowType, IO_VALUE.LOW);
IOMove(IoHighType, IO_VALUE.HIGH); IOMove(IoHighType, IO_VALUE.HIGH);
} }
}catch(Exception ex) } catch (Exception ex)
{ {
LogUtil.error(Name + "CylinderMove ["+moveInfo.Name+"] ["+IoLowType+"] ["+IoHighType+"] ["+isCheckMove+"] 出错:"+ex.ToString()); LogUtil.error(Name + "CylinderMove [" + moveInfo.Name + "] [" + IoLowType + "] [" + IoHighType + "] [" + isCheckMove + "] 出错:" + ex.ToString());
} }
} }
public void CheckAndMove(string IoType, IO_VALUE value) public void CheckAndMove(string IoType, IO_VALUE value)
{ {
...@@ -555,7 +525,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -555,7 +525,7 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH; IO_VALUE tValue = value.Equals(IO_VALUE.HIGH) ? IO_VALUE.LOW : IO_VALUE.HIGH;
if (IOValue(IoType).Equals(tValue).Equals(false)) if (IOValue(IoType).Equals(tValue).Equals(false))
{ {
if (IoType.Equals(IO_Type.StopCylinder_Down1).Equals(false)&&IoType.Equals(IO_Type.SW_StopDown).Equals(false)) if (IoType.Equals(IO_Type.StopCylinder_Down1).Equals(false) && IoType.Equals(IO_Type.SW_StopDown).Equals(false))
{ {
LogUtil.info(Name + "定时回写IO: [" + IoType + "]=[" + value + "],[" + baseConfig.Id + "],msTime=" + msTime); LogUtil.info(Name + "定时回写IO: [" + IoType + "]=[" + value + "],[" + baseConfig.Id + "],msTime=" + msTime);
} }
...@@ -601,6 +571,143 @@ namespace OnlineStore.DeviceLibrary ...@@ -601,6 +571,143 @@ namespace OnlineStore.DeviceLibrary
return false; return false;
} }
} }
/// <summary>
/// 设置报警消息,报警类型,清除报警时记录日志
/// </summary>
/// <param name="msg"></param>
/// <param name="logtype"></param>
/// <param name="logseconds"></param>
public void SetWarnMsg(string msg = "", string alarmType = "", LineMoveInfo moveInfo = null, int logseconds = 10)
{
int logtype = 801;
if (moveInfo != null)
{
logtype = DeviceID * 10000 + (int)moveInfo.MoveStep;
}
if (String.IsNullOrEmpty(msg).Equals(false))
{
if (WarnMsg.Equals(msg))
{
if (msg.StartsWith(Name))
{
LogUtil.error(msg, logtype, logseconds);
}
else
{
LogUtil.error(Name + msg, logtype, logseconds);
}
}
else
{
if (msg.StartsWith(Name))
{
LogUtil.error(msg);
}
else
{
LogUtil.error(Name + msg);
}
}
}
if (!warnParam.AlarmType.Equals(alarmType))
{
//报警类型不一致,若之前不是空,记录日志
if (!String.IsNullOrEmpty(warnParam.AlarmType))
{
RunLogUtil.ErrorLog(new ErrorLog(Name, warnParam.AlarmType, WarnMsg, warnParam.StartTime, DateTime.Now, warnParam.OperteType, warnParam.PosId, warnParam.Barcode));
}
//更新开始时间
warnParam.StartTime = DateTime.Now;
if (moveInfo != null)
{
warnParam.PosId = moveInfo.MoveParam?.PosId;
warnParam.Barcode = moveInfo.MoveParam?.WareCode;
warnParam.OperteType = moveInfo.GetMoveType();
}
else
{
warnParam.PosId = "";
warnParam.Barcode = "";
warnParam.OperteType = "";
}
}
WarnMsg = msg;
warnParam.AlarmType = alarmType;
}
protected void MoveTimeoutAlarm(LineMoveInfo move, string alarmType)
{
SetWarnMsg(move.Name + "[" + move.GetMoveType() + "][" + move.SLog + "] " + alarmType + " [" + FormUtil.GetSpanStr(move.StepSpan()) + "]", alarmType, move);
Alarm(LineAlarmType.IoSingleTimeOut);
}
protected void ClearTimeoutAlarm(string msg)
{
if (isInSuddenDown || isNoAirCheck)
{
return;
}
if (WarnMsg.Contains(msg) && alarmType.Equals(LineAlarmType.IoSingleTimeOut))
{
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = LineAlarmType.None;
SetWarnMsg("");
}
}
protected void ClearStepAlarm(string stepDes)
{
if (isInSuddenDown || isNoAirCheck)
{
return;
}
if (String.IsNullOrEmpty(WarnMsg).Equals(false) && String.IsNullOrEmpty(warnParam.AlarmType).Equals(false))
{
if (alarmType.Equals(LineAlarmType.IoSingleTimeOut)){
string alarmTypeStr = stepDes + "_超时报警";
if (warnParam.AlarmType.Equals(alarmTypeStr))
{
LogUtil.info(Name + $"步骤{stepDes}结束,清理【{ WarnMsg }】 ");
alarmType = LineAlarmType.None;
SetWarnMsg("");
}
} else if (alarmType.Equals(LineAlarmType.AxisMoveError))
{
string alarmTypeStr = stepDes + "_轴运动报警";
if (warnParam.AlarmType.Equals(alarmTypeStr))
{
LogUtil.info(Name + $"步骤{stepDes}结束,清理【{ WarnMsg }】 ");
alarmType = LineAlarmType.None;
SetWarnMsg("");
}
}
}
}
}
public class WarnParam
{
public WarnParam()
{
}
public WarnParam(string alarmType ,DateTime startTime,string operType,string posId,string barcode)
{
this.AlarmType = alarmType;
this.StartTime = startTime;
this.OperteType = operType;
this.PosId = posId;
this.Barcode = barcode;
}
public string AlarmType = "";
public DateTime StartTime = DateTime.Now;
public string OperteType = "";
public string PosId = "";
public string Barcode = "";
} }
} }
...@@ -3,6 +3,7 @@ using OnlineStore.DeviceLibrary; ...@@ -3,6 +3,7 @@ using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
...@@ -36,6 +37,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -36,6 +37,9 @@ namespace OnlineStore.DeviceLibrary
public DateTime LastSetpTime { get; set; } public DateTime LastSetpTime { get; set; }
public DateTime MoveStartTime { get; set; }
/// <summary> /// <summary>
/// =true表示满足一个等待条件,就可以完成此步骤的等待 /// =true表示满足一个等待条件,就可以完成此步骤的等待
/// </summary> /// </summary>
...@@ -82,6 +86,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -82,6 +86,22 @@ namespace OnlineStore.DeviceLibrary
{ {
get { return moveStep; } get { return moveStep; }
} }
public string GetStepDes()
{
string currName = moveStep.ToString();
try
{
if (LineManager.StepDesMap.ContainsKey(currName))
{
return LineManager.StepDesMap[currName];
}
}
catch (Exception ex)
{
LogUtil.error("GetStepDes 出错:" + ex.ToString());
}
return currName;
}
public string SLog public string SLog
{ {
get { return " "+MoveStep + " "; } get { return " "+MoveStep + " "; }
...@@ -100,8 +120,31 @@ namespace OnlineStore.DeviceLibrary ...@@ -100,8 +120,31 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - LastSetpTime; TimeSpan span = DateTime.Now - LastSetpTime;
return span; return span;
} }
public string GetMoveType()
{
switch (moveType)
{
case LineMoveType.CheckFixture:
return "托盘处理";
break;
case LineMoveType.InStore:
return "入料";
break;
case LineMoveType.OutStore:
return "出料";
break;
case LineMoveType.Reset :
return "复位";
break;
case LineMoveType.ReturnHome:
return "回原";
break;
}
return "";
}
public void NextMoveStep(LineMoveStep step) public void NextMoveStep(LineMoveStep step)
{ {
StepMoveLog();
PreMoveStep = moveStep; PreMoveStep = moveStep;
moveStep = step; moveStep = step;
LastSetpTime = DateTime.Now; LastSetpTime = DateTime.Now;
...@@ -111,6 +154,18 @@ namespace OnlineStore.DeviceLibrary ...@@ -111,6 +154,18 @@ namespace OnlineStore.DeviceLibrary
OneWaitCanEndStep = false; OneWaitCanEndStep = false;
CanWhileCount = 5; CanWhileCount = 5;
} }
private void StepMoveLog()
{
try
{
RunLogUtil.MoveLog(new MoveLog(Name, GetMoveType(), GetStepDes(), LastSetpTime, DateTime.Now, MoveParam.PosId, MoveParam.WareCode));
}
catch (Exception ex)
{
}
}
/// <summary> /// <summary>
/// 当前步骤执行完成 /// 当前步骤执行完成
/// </summary> /// </summary>
...@@ -128,6 +183,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -128,6 +183,7 @@ namespace OnlineStore.DeviceLibrary
WaitList = new List<WaitResultInfo>(); WaitList = new List<WaitResultInfo>();
WriteIoList = new List<WriteIOInfo>(); WriteIoList = new List<WriteIOInfo>();
MoveNum++; MoveNum++;
MoveStartTime = DateTime.Now;
} }
public void NewMove(LineMoveType type, InOutParam param) public void NewMove(LineMoveType type, InOutParam param)
{ {
...@@ -137,9 +193,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -137,9 +193,11 @@ namespace OnlineStore.DeviceLibrary
LastSetpTime = DateTime.Now; LastSetpTime = DateTime.Now;
WaitList = new List<WaitResultInfo>(); WaitList = new List<WaitResultInfo>();
WriteIoList = new List<WriteIOInfo>(); WriteIoList = new List<WriteIOInfo>();
MoveStartTime = DateTime.Now;
} }
public void EndMove() public void EndMove()
{ {
StepMoveLog();
this.moveType = LineMoveType.None; this.moveType = LineMoveType.None;
this.MoveParam = null; this.MoveParam = null;
moveStep = LineMoveStep.Wait; moveStep = LineMoveStep.Wait;
...@@ -217,40 +275,40 @@ namespace OnlineStore.DeviceLibrary ...@@ -217,40 +275,40 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = false; wait.IsEnd = false;
return wait; return wait;
} }
public static WaitResultInfo WaitStell(byte slvAddr, int targetPosition, int speed) //public static WaitResultInfo WaitStell(byte slvAddr, int targetPosition, int speed)
{ //{
WaitResultInfo wait = new WaitResultInfo(); // WaitResultInfo wait = new WaitResultInfo();
wait.CanWhileMoveCount =10; // wait.CanWhileMoveCount =10;
wait.WaitType = WaitEnum.W004_StellMove; // wait.WaitType = WaitEnum.W004_StellMove;
wait.SlvAddr = slvAddr; // wait.SlvAddr = slvAddr;
wait.IsHomeMove = false; // wait.IsHomeMove = false;
wait.TargetPosition = targetPosition; // wait.TargetPosition = targetPosition;
wait.TargetSpeed = speed; // wait.TargetSpeed = speed;
wait.IsEnd = false; // wait.IsEnd = false;
return wait; // return wait;
} //}
public static WaitResultInfo WaitStellHome(byte slvAddr, int targetPosition, int speed) // public static WaitResultInfo WaitStellHome(byte slvAddr, int targetPosition, int speed)
{ //{
WaitResultInfo wait = new WaitResultInfo(); // WaitResultInfo wait = new WaitResultInfo();
wait.CanWhileMoveCount = 10; // wait.CanWhileMoveCount = 10;
wait.WaitType = WaitEnum.W004_StellMove; // wait.WaitType = WaitEnum.W004_StellMove;
wait.SlvAddr = slvAddr; // wait.SlvAddr = slvAddr;
wait.IsHomeMove = true; // wait.IsHomeMove = true;
wait.TargetPosition = 0; // wait.TargetPosition = 0;
wait.TargetSpeed = speed; // wait.TargetSpeed = speed;
wait.IsEnd = false; // wait.IsEnd = false;
return wait; // return wait;
} //}
public static WaitResultInfo WaitShuoKe(int slvAddr, int targetPosition, bool isHome) // public static WaitResultInfo WaitShuoKe(int slvAddr, int targetPosition, bool isHome)
{ // {
WaitResultInfo wait = new WaitResultInfo(); // WaitResultInfo wait = new WaitResultInfo();
wait.CanWhileMoveCount = 0; // wait.CanWhileMoveCount = 0;
wait.WaitType = WaitEnum.W005_ShuoKe; // wait.WaitType = WaitEnum.W005_ShuoKe;
wait.SlvAddr =(byte) slvAddr; // wait.SlvAddr =(byte) slvAddr;
wait.TargetPosition = targetPosition; // wait.TargetPosition = targetPosition;
wait.IsHomeMove = isHome; // wait.IsHomeMove = isHome;
return wait; // return wait;
} // }
public static WaitResultInfo WaitTime(int MScends) public static WaitResultInfo WaitTime(int MScends)
{ {
WaitResultInfo wait = new WaitResultInfo(); WaitResultInfo wait = new WaitResultInfo();
...@@ -572,10 +630,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -572,10 +630,6 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 移栽装置的停止,需要先远点返回,然后停止 /// 移栽装置的停止,需要先远点返回,然后停止
/// </summary> /// </summary>
StopMove = 5, StopMove = 5,
///// <summary>
///// 移栽检测托盘
///// </summary>
//CheckFixture=6,
} }
} }
...@@ -4,6 +4,7 @@ using OnlineStore.DeviceLibrary; ...@@ -4,6 +4,7 @@ using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.IO.Ports; using System.IO.Ports;
...@@ -14,11 +15,29 @@ using System.Windows.Forms; ...@@ -14,11 +15,29 @@ using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
{ {
public static class EnumDesHelper
/// <summary> {
///0= 等待启动/已经停止,1=初始化完成, 2=正常运行中,3=可以进行新的处理,4=忙碌,重置 public static string GetStepDes(this Enum val)
/// </summary> {
public enum LineRunStatus var type = val.GetType();
var memberInfo = type.GetMember(val.ToString());
var attributes = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes == null || attributes.Length != 1)
{
//如果没有定义描述,就把当前枚举值的对应名称返回
return val.ToString();
}
return (attributes.Single() as DescriptionAttribute).Description;
}
}
/// <summary>
///0= 等待启动/已经停止,1=初始化完成, 2=正常运行中,3=可以进行新的处理,4=忙碌,重置
/// </summary>
public enum LineRunStatus
{ {
/// <summary> /// <summary>
/// 等待启动/已经停止 /// 等待启动/已经停止
...@@ -115,318 +134,320 @@ namespace OnlineStore.DeviceLibrary ...@@ -115,318 +134,320 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 无操作,等待状态 /// 无操作,等待状态
/// </summary> /// </summary>
[Description("等待开始")]
Wait = 0, Wait = 0,
#region 流水线入仓操作 100开始
/// <summary>
/// 流水线入仓,开始扫码 扫描枪触发,数据处理
/// </summary>
LI_Scannering = 101,
/// <summary>
/// 流水线入仓,料仓号及库位号发送, 夹具号编码记忆(X5,X6.X7)数据接收
/// </summary>
LI_WaitServerResult = 102,
/// <summary>
/// 等待100毫秒后再放行
/// </summary>
LI_00_Wait100 = 103,
/// <summary>
/// 阻挡气缸0-2下降
/// </summary>
LI_01_Stop2Down = 104,
/// <summary>
/// 检测夹具检测1=0 ) 开始
/// </summary>
LI_02_FixtureCheck = 105,
/// <summary>
/// 阻挡气缸0-2上升
/// </summary>
LI_03_Stop2Up = 106,
/// <summary>
/// 阻挡气缸0-1下降
/// </summary>
LI_04_Stop1Down = 107,
#endregion
#region 流水线出库操作200开始 #region 移栽装置原点返回和重置步骤 1000开始
/// <summary>
/// 流水线出库,等待100毫秒之后在放行
/// </summary>
LO_00_Wait100 = 200,
/// <summary>
/// 流水线出库,阻挡气缸0-2下降
/// </summary>
LO_01_Stop2Down = 201,
/// <summary>
/// 流水线出库, 检测夹具检测1=0
/// </summary>
LO_02_FixtureCheck = 202,
/// <summary>
/// 流水线出库,阻挡气缸0-2上升
/// </summary>
LO_03_Stop2Up = 203,
/// <summary>
/// 阻挡气缸0-1下降
/// </summary>
LO_04_Stop1Up = 204,
#endregion
#region 移栽装置原点返回和重置步骤 2000开始
/// <summary> /// <summary>
/// 上下气缸回原点 /// 上下气缸回原点
/// </summary> /// </summary>
MH_UpDownHome = 2000, [Description("复位_升降轴原点返回")]
MH_UpDownHome = 1000,
/// <summary> /// <summary>
/// 料仓移栽装置,上下气缸上升端 /// 料仓移栽装置,上下气缸上升端
/// </summary> /// </summary>
MH_CylinderUp = 2001, [Description("复位_上下气缸到待机点")]
MH_CylinderUp ,
/// <summary> /// <summary>
/// 料仓移载装置,其他气缸运行到初始状态( 顶升气缸下降端,前后气缸后退端,夹料气缸放松端,阻挡气缸输入=0 ) /// 料仓移载装置,其他气缸运行到初始状态( 顶升气缸下降端,前后气缸后退端,夹料气缸放松端,阻挡气缸输入=0 )
/// </summary> /// </summary>
MH_OtherCylinderBack = 2002, [Description("复位_其他气缸复位,顶升气缸下降,前后气缸后退,夹料气缸放松")]
MH_OtherCylinderBack ,
/// <summary> /// <summary>
/// 料仓移载装置,等待夹爪无料 /// 料仓移载装置,等待夹爪无料
/// </summary> /// </summary>
MH_ClampCheck = 2003, [Description("复位_等待夹爪无料")]
MH_ClampCheck ,
#endregion #endregion
#region 移载装置入库处理 3000-3050 #region 移载装置入库处理 1100-1150
/// <summary> /// <summary>
///移载装置入库处理,升降气缸上升 ///移载装置入库处理,升降气缸上升
/// </summary> /// </summary>
MI_00_UpdownUp = 3000, [Description("入库_取料前_升降气缸上升")]
MI_00_UpdownUp = 1100,
/// <summary> /// <summary>
///移载装置入库处理,横移气缸后退 ///移载装置入库处理,横移气缸后退
/// </summary> /// </summary>
[Description("入库_取料前_前后气缸后退,等待夹爪无料")]
MI_01_ToLineUp, MI_01_ToLineUp,
/// <summary> /// <summary>
///移载装置入库处理,如果是>=30的料,先顶升上升 ///移载装置入库处理,如果是>=30的料,先顶升上升
/// </summary> /// </summary>
[Description("入库_取料前_顶升气缸上升")]
MI_02_TopUP, MI_02_TopUP,
/// <summary> /// <summary>
///移载装置入库处理,编码与仓位一致,上下气缸1下降 ///移载装置入库处理,升降气缸下降,顶升气缸上升
/// </summary> /// </summary>
[Description("入库_取料前_升降气缸下降,顶升气缸上升")]
MI_03_CylinderDown, MI_03_CylinderDown,
/// <summary> /// <summary>
///移载装置入库处理,编码与仓位一致,上下气缸1下降后,等待0.3秒,防止没有 下降到位就夹紧 ///移载装置入库处理,等待200ms后夹紧
/// </summary> /// </summary>
[Description("入库_取料_等待200ms后夹紧")]
MI_04_DownWait, MI_04_DownWait,
/// <summary> /// <summary>
///移载装置入库处理,夹料气缸1夹紧 ///移载装置入库处理,夹料气缸1夹紧
/// </summary> /// </summary>
[Description("入库_取料_夹料气缸夹紧")]
MI_05_CylinderOpen, MI_05_CylinderOpen,
/// <summary> /// <summary>
///移载装置入库处理,上下气缸1上升 ///移载装置入库处理,上下气缸1上升
/// </summary> /// </summary>
[Description("入库_取料完成_升降气缸上升")]
MI_06_CylinderUp, MI_06_CylinderUp,
/// <summary> /// <summary>
///移载装置入库处理,等待夹爪有料 ///移载装置入库处理,等待夹爪有料
/// </summary> /// </summary>
[Description("入库_取料完成_等待夹爪有料")]
MI_07_ClampCheck, MI_07_ClampCheck,
/// <summary> /// <summary>
/// 移载装置入库处理,等待box等待状态才能继续操作 /// 移载装置入库处理,等待box等待状态才能继续操作
/// </summary> /// </summary>
[Description("入库_取料完成_等待box可入库")]
MI_08_WaitBox, MI_08_WaitBox,
/// <summary> /// <summary>
///移载装置入库处理,,前后气缸1前进 ///移载装置入库处理,,前后气缸1前进
/// </summary> /// </summary>
[Description("入库_取料完成_前后气缸前进")]
MI_09_CylinderBefore, MI_09_CylinderBefore,
/// <summary> /// <summary>
///移载装置入库处理,上下气缸1下降 ///移载装置入库处理,上下气缸1下降
/// </summary> /// </summary>
MI_11_CylinderDown = 3011, [Description("入库_取料完成_升降气缸下降")]
MI_11_CylinderDown = 1111,
/// <summary> /// <summary>
///移载装置入库处理,,夹料气缸1放松 ///移载装置入库处理,,夹料气缸1放松
/// </summary> /// </summary>
MI_12_CylinderRelax = 3012, [Description("入库_放料_夹料气缸放松")]
MI_12_CylinderRelax ,
/// <summary> /// <summary>
///移载装置入库处理,上下气缸1上升 ///移载装置入库处理,上下气缸1上升
/// </summary> /// </summary>
MI_13_UpdownCylinderUp = 3013, [Description("入库_放料完成_升降气缸上升")]
MI_13_UpdownCylinderUp ,
/// <summary> /// <summary>
///移载装置入库处理,,前后气缸1后退 ///移载装置入库处理,,前后气缸1后退
/// </summary> /// </summary>
MI_14_CylinderAfter = 3014, [Description("入库_放料完成_前后气缸后退")]
MI_14_CylinderAfter,
/// <summary> /// <summary>
///移载装置入库处理,,前后气缸已后退,通知料仓入库 ///移载装置入库处理,,前后气缸已后退,通知料仓入库
/// </summary> /// </summary>
MI_15_SendPosToStore = 3015, [Description("入库_放料完成_通知料仓入库")]
MI_15_SendPosToStore,
/// <summary> /// <summary>
///移载装置入库处理,检测到X102-1=1送料流程完成 ///移载装置入库处理,检测到X102-1=1送料流程完成
/// </summary> /// </summary>
MI_16_SendEnd = 3016, [Description("入库_放料完成")]
MI_16_SendEnd,
/// <summary> /// <summary>
///入库:升降轴下降取料盘失败,升降轴上升,托盘禁用,托盘放行 ///入库:升降轴下降取料盘失败,升降轴上升,托盘禁用,托盘放行
/// </summary> /// </summary>
MI_18_UpdownUp=3018, [Description("入库_放料完成_升降气缸上升,顶升气缸下降")]
MI_18_UpdownUp,
#endregion #endregion
#region 移栽装置出入库共同模块 3080-3100 #region 移栽装置出入库共同模块 1180-1100
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1下降 ///移载(流水线)装置出入库处理,阻挡气缸1-1下降
/// </summary> /// </summary>
MIO_00_Stop1Down = 3080, [Description("托盘处理_前阻挡检测到托盘,前阻挡下降")]
MIO_00_Stop1Down = 1180,
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,夹具检测1-4=1 ///移载(流水线)装置出入库处理,夹具检测1-4=1
/// </summary> /// </summary>
MIO_01_FixtureCheck = 3081, [Description("托盘处理_等待托盘检测信号亮")]
/// <summary> MIO_01_FixtureCheck ,
/// 移载(流水线)装置出入库处理,等待夹具持续500毫秒 // /// <summary>
/// </summary> // /// 移载(流水线)装置出入库处理,等待夹具持续500毫秒
MIO_02_WaitFixture = 3082, ///// </summary>
//MIO_02_WaitFixture ,
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,阻挡气缸1-1上升 ///移载(流水线)装置出入库处理,阻挡气缸1-1上升
/// </summary> /// </summary>
MIO_03_Stop2Down = 3083, [Description("托盘处理_托盘检测信号亮,前阻挡上升")]
MIO_03_Stop2Down ,
/// <summary> /// <summary>
/// 检测夹具检测IO1=1 /// 检测夹具检测IO1=1
/// </summary> /// </summary>
MIO_04_Wait = 3084, [Description("托盘处理_等待托盘检测信号稳定")]
MIO_04_Wait ,
/// <summary> /// <summary>
/// 等待一秒钟 /// 托盘处理_托盘需要出入库,等待顶升气缸上升
/// </summary> /// </summary>
MIO_05_WaitTime = 3085, [Description("托盘处理_托盘需要出入库,等待顶升气缸上升")]
MIO_05_WaitTime ,
/// <summary> /// <summary>
///移载(流水线)装置出入库处理,顶 升气缸上升 ///移载(流水线)装置出入库处理,顶 升气缸上升
/// </summary> /// </summary>
MIO_06_TopUp = 3086, [Description("托盘处理_顶升气缸上升")]
/// <summary> MIO_06_TopUp ,
/// 移载(流水线)装置出入库处理,定位气缸上升 ///// <summary>
/// </summary> ///// 移载(流水线)装置出入库处理,定位气缸上升
MIO_07_LocationUp = 3087, ///// </summary>
//MIO_07_LocationUp ,
/// <summary> /// <summary>
/// 等待StoreMove完成当前操作开始入库 /// 等待StoreMove完成当前操作开始入库
/// </summary> /// </summary>
MIO_08_WaitInStore=3088, [Description("托盘处理_等待开始入库")]
MIO_08_WaitInStore ,
/// <summary> /// <summary>
/// 等待StoreMove移走料盘开始放托盘通过 /// 等待StoreMove移走料盘开始放托盘通过
/// </summary> /// </summary>
MIO_09_WaitLetFixtureGo=3089, [Description("托盘处理_开始出入库,等待移栽拿走料盘")]
MIO_09_WaitLetFixtureGo ,
/// <summary> /// <summary>
/// 等待禁用托盘被启用 /// 拦截禁用托盘,等待托盘启用后再放行
/// </summary> /// </summary>
MIO_10_WaitProDisableTray=3090, [Description("托盘处理_拦截禁用托盘,等待托盘启用后再放行")]
MIO_10_WaitProDisableTray,
#endregion #endregion
#region 移栽装置出库处理 3100-3200 #region 移栽装置出库处理 1200-1300
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 出库盘,高度>=30,需要先顶升下降 /// 移载(流水线)装置出库处理, 出库盘,高度>=30,需要先顶升下降
/// </summary> /// </summary>
MO_10_TopDown = 3100, [Description("托盘出库_出库前顶升气缸先下降")]
MO_10_TopDown = 1200,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 检测夹具编码并记忆,托盘 是空盘,并且BOX在出库等待中,开始移栽料盘 /// 移载(流水线)装置出库处理, 检测夹具编码并记忆,托盘 是空盘,并且BOX在出库等待中,开始移栽料盘
/// </summary> /// </summary>
MO_11_CodeRember = 3101, [Description("托盘出库_等待移栽拿走料盘")]
MO_11_CodeRember ,
/// <summary> /// <summary>
/// 移栽处理已完成,开始扫码或继续托盘处理流程 /// 移栽处理已完成,开始扫码或继续托盘处理流程
/// </summary> /// </summary>
MO_12_MoveOk=3102, [Description("托盘处理_取放料完成,托盘可离开")]
MO_12_MoveOk ,
/// <summary> /// <summary>
/// 移载(流水线)定位气缸下降 /// 移载(流水线)定位气缸下降
/// </summary> /// </summary
MO_13_LoactionDown = 3103, [Description("托盘离开_定位气缸下降")]
MO_13_LoactionDown ,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理 ,顶升气缸1下降 /// 移载(流水线)装置出库处理 ,顶升气缸1下降
/// </summary> /// </summary>
MO_14_TopDown = 3104, [Description("托盘离开_顶升气缸下降")]
MO_14_TopDown ,
/// <summary> /// <summary>
/// 如果是移栽2需要等待托盘是否可以走 /// 如果是移栽2需要等待托盘是否可以走
/// </summary> /// </summary>
MO_15_WaitCanGo=3105, [Description("托盘离开_托盘可离开,等待阻挡下降放托盘离开")]
MO_15_WaitCanGo ,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 阻挡气缸1-2下降 /// 移载(流水线)装置出库处理, 阻挡气缸1-2下降
/// </summary> /// </summary>
MO_16_Stop2Down = 3106, [Description("托盘离开_阻挡2下降")]
MO_16_Stop2Down ,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 阻挡2托盘检测=0, /// 移载(流水线)装置出库处理, 阻挡2托盘检测=0,
/// </summary> /// </summary>
MO_17_Stop2Check = 3107, [Description("托盘离开_等待托盘检测信号消失")]
MO_17_Stop2Check ,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 延迟500ms后上升阻挡2 /// 移载(流水线)装置出库处理, 延迟500ms后上升阻挡2
/// </summary> /// </summary>
MO_18_WaitTime = 3108, [Description("托盘离开_等待300ms后阻挡2上升")]
MO_18_WaitTime ,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理, 阻挡气缸1-1下降 阻挡气缸1-2上升 /// 移载(流水线)装置出库处理, 阻挡气缸1-1下降 阻挡气缸1-2上升
/// </summary> /// </summary>
MO_19_StopCylinder_Back = 3109, [Description("托盘离开_阻挡2上升")]
MO_19_StopCylinder_Back ,
/// <summary> /// <summary>
/// 移栽装置出库处理,开始出库 /// 移栽装置出库处理,开始出库
/// </summary> /// </summary>
MO_50_StartOutProcess=3150, [Description("开始出库_升降气缸上升")]
MO_50_StartOutProcess =1250,
/// <summary> /// <summary>
/// 移栽装置出库处理。。前后气缸1前进 /// 移栽装置出库处理。。前后气缸1前进
/// </summary> /// </summary>
[Description("出库_取料前_前后气缸前进")]
MO_51_CylinderBefore, MO_51_CylinderBefore,
/// <summary> /// <summary>
/// 移栽装置出库处理。上下气缸1下降 /// 移栽装置出库处理。上下气缸1下降
/// </summary> /// </summary>
[Description("出库_取料前_升降气缸下降")]
MO_52_CylinderDown, MO_52_CylinderDown,
/// <summary> /// <summary>
/// 移栽装置出库处理。上下气缸1下降后,等待0.3秒再夹紧,防止没有下降到位就夹紧操作 /// 移栽装置出库处理。上下气缸1下降后,等待0.3秒再夹紧,防止没有下降到位就夹紧操作
/// </summary> /// </summary>
[Description("出库_取料前_等待200ms后夹紧")]
MO_53_DownWait, MO_53_DownWait,
/// <summary> /// <summary>
/// 移栽装置出库处理。 夹料气缸1夹紧 /// 移栽装置出库处理。 夹料气缸1夹紧
/// </summary> /// </summary>
[Description("出库_取料_夹爪夹紧")]
MO_54_CylinderOpen, MO_54_CylinderOpen,
/// <summary> /// <summary>
/// 移栽装置出库处理。 上下气缸1上升 /// 移栽装置出库处理。 上下气缸1上升
/// </summary> /// </summary>
[Description("出库_取料完成_升降气缸上升")]
MO_55_CylinderUp, MO_55_CylinderUp,
/// <summary> /// <summary>
/// 移栽装置出库处理。 检测夹爪有料 /// 移栽装置出库处理。 检测夹爪有料
/// </summary> /// </summary>
[Description("出库_取料完成_检测夹爪有料")]
MO_56_ClarmpCheck, MO_56_ClarmpCheck,
/// <summary> /// <summary>
/// 移栽装置出库处理。 前后气缸1后退 /// 移栽装置出库处理。 前后气缸1后退
/// </summary> /// </summary>
[Description("出库_取料完成_前后气缸后退")]
MO_61_CylinderAfter, MO_61_CylinderAfter,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理,上下气缸1下降 /// 移载(流水线)装置出库处理,上下气缸1下降
/// </summary> /// </summary>
[Description("出库_取料完成_升降气缸下降")]
MO_62_CylinderDown, MO_62_CylinderDown,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理,夹爪放松 /// 移载(流水线)装置出库处理,夹爪放松
/// </summary> /// </summary>
[Description("出库_放料_夹爪放松")]
MO_63_CylinderRelax, MO_63_CylinderRelax,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理,夹爪夹紧 /// 移载(流水线)装置出库处理,夹爪夹紧
/// </summary> /// </summary>
[Description("出库_放料_夹爪夹紧")]
MO_64_CylinderWork, MO_64_CylinderWork,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理,夹爪放松 /// 移载(流水线)装置出库处理,夹爪放松
/// </summary> /// </summary>
[Description("出库_放料_再次夹爪放松")]
MO_65_CylinderRelax2, MO_65_CylinderRelax2,
/// <summary> /// <summary>
/// 移载(流水线)装置出库处理,上下气缸1上升 /// 移载(流水线)装置出库处理,上下气缸上升,同时顶升气缸先下降
/// </summary> /// </summary>
[Description("出库_放料完成_上下气缸上升,同时顶升气缸先下降")]
MO_66_CylinderUp, MO_66_CylinderUp,
#region 入料模块,紧急出料移栽处理 #region 入料模块,紧急出料移栽处理 1290
/// <summary> /// <summary>
/// 等待当前的出入库结束 /// 等待当前的出入库结束
/// </summary> /// </summary>
MO_200_WaitInoutParam =3200, [Description("紧急出料_等待紧急料模块开始出库")]
MO_200_WaitInoutParam =1290,
/// <summary> /// <summary>
/// 等待紧急出料结束 /// 等待紧急出料结束
/// </summary> /// </summary>
MO_201_WaitOutEnd=3201, [Description("紧急出料_等待紧急出料结束")]
MO_201_WaitOutEnd =1291,
#endregion #endregion
...@@ -435,192 +456,212 @@ namespace OnlineStore.DeviceLibrary ...@@ -435,192 +456,212 @@ namespace OnlineStore.DeviceLibrary
#region 横移轨道处理 5000 开始 #region 横移轨道处理 300 开始
SW00_Wait = 5000, [Description("托盘横移_等待")]
SW00_Wait = 300,
/// <summary> /// <summary>
/// 阻挡气缸下降 /// 阻挡气缸下降
/// </summary> /// </summary>
SW01_StopDown=5001, [Description("托盘横移_阻挡气缸下降")]
SW01_StopDown ,
/// <summary> /// <summary>
/// 等待到托盘信号后,需要持续一段时间 /// 等待横移托盘检测信号
/// </summary> /// </summary>
SW02_WaitCheckTime = 5002, [Description("托盘横移_等待横移托盘检测信号")]
SW02_WaitCheckTime ,
/// <summary> /// <summary>
/// 等待到托盘信号后,需要持续一段时间 /// 等待到托盘信号后,需要持续一段时间
/// </summary> /// </summary>
SW03_WaitTime = 5003, [Description("托盘横移_再次等待横移托盘检测信号")]
SW03_WaitTime ,
/// <summary> /// <summary>
/// 等待轨道1夹具检测信号,等待横移3或横移1无托盘 /// 等待轨道1夹具检测信号,等待横移3或横移1无托盘
/// </summary> /// </summary>
SW04_WaitCanUp= 5004, [Description("托盘横移_等待顶升气缸可顶升")]
SW04_WaitCanUp ,
/// <summary> /// <summary>
/// 定位气缸下降 /// 定位气缸下降
/// </summary> /// </summary>
SW05_LocationDown=5005, [Description("托盘横移_定位气缸下降")]
SW05_LocationDown ,
/// <summary> /// <summary>
/// 横移轨道顶升气缸上升 /// 横移轨道顶升气缸上升
/// </summary> /// </summary>
SW06_TopCylinderUp= 5006, [Description("托盘横移_顶升气缸上升")]
SW06_TopCylinderUp ,
/// <summary> /// <summary>
/// 等待第二个横移没有托盘 /// 等待第二个横移没有托盘
/// </summary> /// </summary>
SW07_WaitNoTray=5007, [Description("托盘横移_等待横移出口没有料盘")]
SW07_WaitNoTray ,
/// <summary> /// <summary>
/// 横移轨道点击转动 /// 横移轨道点击转动
/// </summary> /// </summary>
SW08_DriveMotorMove=5008, [Description("托盘横移_横移电机转动")]
SW08_DriveMotorMove ,
/// <summary> /// <summary>
/// 收到横移轨道2夹具检测信号 /// 收到横移轨道2夹具检测信号
/// </summary> /// </summary>
SW09_WaitOutCheck=5009, [Description("托盘横移_等待托盘到达横移出库")]
SW09_WaitOutCheck ,
/// <summary> /// <summary>
/// 等待出口信号持续一段时间 /// 等待出口信号持续一段时间
/// </summary> /// </summary>
SW10_WatOutFixture2=5010, [Description("托盘横移_再次验证托盘是否在出口处,停止横移入库电机转动")]
SW10_WatOutFixture2 ,
/// <summary> /// <summary>
/// 停止横移轨道转动,横移轨道顶升气缸下降 /// 停止横移轨道转动,横移轨道顶升气缸下降
/// </summary> /// </summary>
SW11_TopDown=5011, [Description("托盘横移_顶升气缸下降")]
SW11_TopDown ,
/// <summary> /// <summary>
/// 等待托盘流出,等待1秒后再检测托盘信号是否消失 /// 等待托盘流出,等待1秒后再检测托盘信号是否消失
/// </summary> /// </summary>
SW12_WaitTime = 5012, [Description("托盘横移_停止横移电机转动")]
SW12_WaitTime ,
/// <summary> /// <summary>
/// 等待托盘流出,上升阻挡气缸 /// 等待托盘流出,上升阻挡气缸
/// </summary> /// </summary>
SW13_WaitTrayGo =5013, [Description("托盘横移_等待托盘离开横移机构")]
SW13_WaitTrayGo ,
#endregion #endregion
#region 分流横移处理 6000 开始 #region 分流横移处理 400 开始
/// <summary> /// <summary>
/// 分流横移:前阻挡下降 /// 分流横移:前阻挡下降
/// </summary> /// </summary>
Shunt01_StopDown1 = 6001, [Description("分流横移_前阻挡下降")]
Shunt01_StopDown1 = 400,
/// <summary> /// <summary>
/// 分流横移:等待Shunt_Check1_Front亮 /// 分流横移:等待Shunt_Check1_Front亮
/// </summary> /// </summary>
[Description("分流横移_阻挡1亮,阻挡2亮,阻挡1上升,升降1下降")]
Shunt02_WaitTime , Shunt02_WaitTime ,
/// <summary> /// <summary>
/// 分流横移:等待阻挡可下降 /// 分流横移:等待阻挡可下降
/// </summary> /// </summary>
[Description("分流横移_等待阻挡可下降")]
Shunt03_WaitStop1Down, Shunt03_WaitStop1Down,
/// <summary> /// <summary>
/// 分流横移:托盘不需要横移,阻挡1下降1200, /// 分流横移:托盘不需要横移,阻挡1下降1200,
/// </summary> /// </summary>
[Description("分流横移_托盘不需要横移,阻挡1下降1200,")]
Shunt04_Stop1Down , Shunt04_Stop1Down ,
/// <summary> /// <summary>
/// 分流横移:等待检测1信号消失 /// 分流横移:等待检测1信号消失
/// </summary> /// </summary>
[Description("分流横移_等待检测1信号消失")]
Shunt05_WaitCheck1Low, Shunt05_WaitCheck1Low,
/// <summary> /// <summary>
/// 分流横移:阻挡1上升,升降1上升,等待升降2是否可上升 /// 分流横移:阻挡1上升,升降1上升,等待升降2是否可上升
/// </summary> /// </summary>
[Description("分流横移_阻挡1上升,升降1上升,等待升降2是否可上升")]
Shunt06_Top1Up, Shunt06_Top1Up,
/// <summary> /// <summary>
/// 分流横移:升降2开始上升 /// 分流横移:升降2开始上升
/// </summary> /// </summary>
Shunt07_Top2Up, [Description("分流横移_升降2开始上升")]
Shunt07_Top2Up,
/// <summary> /// <summary>
/// 分流横移:两边皮带线开始转动 /// 分流横移:两边皮带线开始转动
/// </summary> /// </summary>
[Description("分流横移_两边皮带线转动")]
Shunt08_DriveMotorMove, Shunt08_DriveMotorMove,
/// <summary> /// <summary>
/// 分流横移:等待检测2信号消失 /// 分流横移:等待检测2信号消失
/// </summary> /// </summary>
[Description("分流横移_等待检测2信号消失")]
Shunt09_Top1Down, Shunt09_Top1Down,
/// <summary> /// <summary>
/// 分流横移:升降1先下降,皮带1停止,等待检测4信号亮 /// 分流横移:升降1先下降,皮带1停止,等待检测4信号亮
/// </summary> /// </summary>
[Description("分流横移_升降1先下降,皮带1停止,等待检测4信号亮")]
Shunt10_WaitCheck, Shunt10_WaitCheck,
/// <summary> /// <summary>
/// 分流横移:升降2下降,皮带线停止 /// 分流横移:升降2下降,皮带线停止
/// </summary> /// </summary>
[Description("分流横移_升降2下降,皮带线停止")]
Shunt11_TopDown , Shunt11_TopDown ,
#endregion #endregion
#region 入料装置原点返回,10000开始 #region 入料装置原点返回, 2000 开始
/// <summary> /// <summary>
/// 复位之前,所有阻挡先上升到位 /// 复位之前,所有阻挡先上升到位
/// </summary> /// </summary>
FR_01_StopUp = 10001, [Description("复位_所有阻挡上升")]
FR_01_StopUp = 2000,
/// <summary> /// <summary>
/// 复位之前,所有的链条先转动3秒钟 /// 复位之前,放料顶升下降, 所有阻挡上升,链条先转动3秒钟
/// </summary> /// </summary>
FR_02_LineRun=10002, [Description("复位_放料顶升下降, 所有阻挡上升,链条先转动3秒钟")]
FR_02_LineRun ,
/// <summary> /// <summary>
/// 横移装置上升, /// 链条停止转动,上料横移机构上升,出口顶升下降,所有阻挡气缸上升
/// </summary> /// </summary>
FR_03_CylinderUp = 10003, [Description("复位_链条停止转动,上料横移机构上升,出口顶升下降,所有阻挡气缸上升")]
FR_03_CylinderUp ,
/// <summary> /// <summary>
/// 升降伺服回原点 /// 升降伺服回原点
/// </summary> /// </summary>
FR_04_UpdownAxisHome = 10004, [Description("复位_升降伺服回原点")]
FR_04_UpdownAxisHome ,
/// <summary> /// <summary>
///上料装置:上料气缸放松SOL,升降机构到待机点 ///上料装置:上料气缸放松SOL,升降机构到待机点
/// </summary> /// </summary>
FR_05_UpdownAxis_P1 = 10005, [Description("复位_上料气缸放松,升降机构到待机点")]
FR_05_UpdownAxis_P1 ,
/// <summary> /// <summary>
///上料装置:上料横移气缸取料端SOL ///上料装置:上料横移气缸取料端SOL
/// </summary> /// </summary>
FR_06_CylinderGive = 10006, [Description("复位_上料横移气缸取料端")]
FR_06_CylinderGive ,
/// <summary> /// <summary>
/// 提升伺服回原点,夹紧装置放松 /// 提升伺服回原点,夹紧装置放松
/// </summary> /// </summary>
FR_11_BatchAxisHome = 10011, [Description("复位_提升伺服回原点,夹紧装置放松")]
FR_11_BatchAxisHome ,
/// <summary> /// <summary>
/// 然后提升伺服下降到P2点 /// 然后提升伺服下降到P2点
/// </summary> /// </summary>
[Description("复位_提升伺服下降到P2点")]
FR_12_BatchAxisToP2, FR_12_BatchAxisToP2,
/// <summary> /// <summary>
/// 放开定位气缸 /// 放开定位气缸
/// </summary> /// </summary>
[Description("复位_放开定位气缸")]
FR_13_LocationDown, FR_13_LocationDown,
/// <summary> /// <summary>
/// 顶升气缸下降 /// SL1定位气缸下降SOL,出口顶升气缸下降,夹紧气缸放松
/// </summary> /// </summary>
[Description("复位_SL1定位气缸下降SOL,出口顶升气缸下降,夹紧气缸放松")]
FR_14_TopDown, FR_14_TopDown,
/// <summary> /// <summary>
/// 提升伺服在上升到P1点 /// 提升伺服在上升到P1点
/// </summary> /// </summary>
[Description("复位_提升伺服在上升到P1点")]
FR_15_BatchAxisToP1, FR_15_BatchAxisToP1,
///// <summary>
/////上料装置:上料横移机构上升SOL
///// </summary>
//FR_07_MoveCylinder_Up = 10007,
///// <summary>
/////上料装置:上料气缸放松SOL
///// </summary>
//FR_08_MoveCylinder_Slack = 10008,
///// <summary>
/////上料装置:上料横移气缸取料端SOL
///// </summary>
//FR_09_MoveCylinder_Give = 10009,
///// <summary>
/////上料装置:出口顶升下降SOL
///// </summary>
//FR_10_OutTopCylinder_Down = 10010,
#endregion #endregion
#region 入料装置入料处理,11000开始
#region 入料装置入料处理,2100 开始
////SL1定位工位检测有信号,阻挡气缸不能下降。 ////SL1定位工位检测有信号,阻挡气缸不能下降。
//SL1定位工位检测无信号,阻挡气缸下降,然后料架到工位 //SL1定位工位检测无信号,阻挡气缸下降,然后料架到工位
...@@ -652,103 +693,126 @@ namespace OnlineStore.DeviceLibrary ...@@ -652,103 +693,126 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 提升轴先返回P2 /// 提升轴先返回P2
/// </summary> /// </summary>
FI_00_BatchAxisToP2 =11000, [Description("入料_提升轴返回P2")]
FI_00_BatchAxisToP2 =2100,
/// <summary> /// <summary>
/// 入料流程:升降盘定位气缸后退 /// 入料流程:升降盘定位气缸后退
/// </summary> /// </summary>
FI_01_TrayLocation_After = 11001, [Description("入料_升降盘定位气缸后退")]
FI_01_TrayLocation_After = 2101,
/// <summary> /// <summary>
/// 入料流程:定位气缸下降 /// 入料流程:定位气缸下降,提升伺服移动到P1
/// </summary> /// </summary>
FI_02_LocationCylinder_Down = 11002, [Description("入料_定位气缸下降,提升伺服移动到P1")]
FI_02_LocationCylinder_Down = 2102,
/// <summary> /// <summary>
/// 入口流水线转动,等待入料检测信号消失 /// 入口流水线转动,阻挡工位或进料口有新料架,相关阻挡上升,流水线转动1000
/// </summary> /// </summary>
FI_03_LineStart = 11003, [Description("入料_阻挡工位或进料口有新料架,相关阻挡上升,流水线转动1000")]
FI_03_LineStart ,
/// <summary> /// <summary>
/// 入口流水线转动,等待定位工位信号稳定1秒 /// 入口流水线转动,定位工位有料架,进料阻挡上升,缓冲阻挡上升, 等待3秒再次检测
/// </summary> /// </summary>
FI_04_WaitTime = 11004, [Description("入料_定位工位有料架,进料阻挡上升,缓冲阻挡上升, 等待3秒再次检测")]
FI_04_WaitTime ,
/// <summary> /// <summary>
///入料检测: 工位检测信号,定位气缸上升 ///入料检测: 工位检测信号,缓冲阻挡上升, 定位气缸上升,读取并缓存料架RFID
/// </summary> /// </summary>
[Description("入料_工位检测信号,缓冲阻挡上升, 定位气缸上升,读取并缓存料架RFID")]
FI_05_LocationCylinder_Up , FI_05_LocationCylinder_Up ,
/// <summary> /// <summary>
/// 入料检测:提升轴下降到位P2 /// 入料检测:提升轴下降到位P2,定位气缸上升
/// </summary> /// </summary>
[Description("入料_提升轴下降到位P2,定位气缸上升")]
FI_06_BatchAxisToP2 , FI_06_BatchAxisToP2 ,
/// <summary> /// <summary>
/// 入料检测:升降盘定位气缸第一次前进 /// 入料检测:升降盘定位气缸第一次前进 2秒,清空条码信息
/// </summary> /// </summary>
[Description("入料_升降盘定位气缸第一次前进 2秒,清空条码信息")]
FI_07_TrayLocation_Before, FI_07_TrayLocation_Before,
/// <summary> /// <summary>
/// 入料检测:升降盘定位气缸第一次后退 /// 入料检测:升降盘定位气缸后退,等待再次前进
/// </summary> /// </summary>
[Description("入料_升降盘定位气缸后退,等待再次前进")]
FI_08_TrayLocation_Back , FI_08_TrayLocation_Back ,
/// <summary> /// <summary>
/// 入料检测:升降盘定位气缸前进 /// 入料检测:升降盘定位气缸前进,清空条码信息
/// </summary> /// </summary>
[Description("入料_升降盘定位气缸前进,清空条码信息")]
FI_09_TrayLocation_Before , FI_09_TrayLocation_Before ,
/// <summary> /// <summary>
/// 入料检测:上料轴开始慢速上升到P3点,等待检测到料盘 /// 入料检测:上料轴开始慢速上升到P3点,等待检测到料盘
/// </summary> /// </summary>
[Description("入料_上料轴开始慢速上升到P3点,等待检测到料盘")]
FI_10_AxisUpMove , FI_10_AxisUpMove ,
/// <summary> /// <summary>
/// 入料取料:横移机构先上升 /// 入料取料:上料机构检测到料盘,横移机构上升
/// </summary> /// </summary>
[Description("入料_上料机构检测到料盘,横移机构上升")]
FI_11_CylinderUp, FI_11_CylinderUp,
/// <summary> /// <summary>
/// 入料取料:上料机构到放料端 /// 入料取料:上料机构检测到料盘,横移机构到放料端
/// </summary> /// </summary>
[Description("入料_上料机构检测到料盘,横移机构到放料端")]
FI_12_CylinderGive , FI_12_CylinderGive ,
/// <summary> /// <summary>
/// 入料检测到料盘:扫码 /// 入料检测到料盘:开始扫码
/// </summary> /// </summary>
[Description("入料_开始扫码")]
FI_13_ScanCode , FI_13_ScanCode ,
/// <summary> /// <summary>
/// 料盘移栽:有料盘:上料横移机构取料 /// 料盘移栽:有料盘:上料横移机构取料
/// </summary> /// </summary>
[Description("入料_取料_上料横移取料端")]
FI_14_CylinderTake , FI_14_CylinderTake ,
/// <summary> /// <summary>
/// 料盘移栽:升降轴到P3 /// 料盘移栽:升降轴到P3
/// </summary> /// </summary>
[Description("入料_取料_升降轴到P3")]
FI_15_UpdownAxisToP3, FI_15_UpdownAxisToP3,
/// <summary> /// <summary>
/// 料盘移栽:上料横移机构夹紧 /// 料盘移栽:上料横移机构夹紧
/// </summary> /// </summary>
[Description("入料_取料_上料横移机构夹紧")]
FI_16_CylinderTighten , FI_16_CylinderTighten ,
/// <summary> /// <summary>
/// 料盘移栽:升降伺服到P1点 /// 料盘移栽:升降伺服到P1点
/// </summary> /// </summary>
[Description("入料_取料完成_升降伺服到P1点")]
FI_17_UpdownAxisToP1, FI_17_UpdownAxisToP1,
/// <summary> /// <summary>
/// 料盘移栽:等待没有伺服料盘检测信号 /// 料盘移栽:等待没有伺服料盘检测信号
/// </summary> /// </summary>
[Description("入料_取料完成_等待伺服检测信号消失")]
FI_18_WaitNoLocationCheck, FI_18_WaitNoLocationCheck,
/// <summary> /// <summary>
/// 料盘移栽:批量轴到P3点,检测是否有料盘 /// 料盘移栽:提升伺服运动到P3,横移气缸上升
/// </summary> /// </summary>
[Description("入料_取料完成_提升伺服运动到P3,横移气缸上升")]
FI_19_BatchAxisToP3, FI_19_BatchAxisToP3,
/// <summary> /// <summary>
/// 料盘移栽:记录高度尺寸 /// 料盘移栽:记录高度尺寸
/// </summary> /// </summary>
[Description("入料_取料完成_记录高度尺寸")]
FI_20_SaveSize , FI_20_SaveSize ,
/// <summary> /// <summary>
/// 料盘移栽: 上料横移气缸放料SOL /// 料盘移栽: 上料横移气缸放料SOL,开始获取库位号
/// </summary> /// </summary>
[Description("入料_取料完成_上料横移气缸到放料端,开始获取库位号")]
FI_21_CylinderGive, FI_21_CylinderGive,
/// <summary> /// <summary>
/// 提升轴下降到料盘不溢出的位置 /// 提升轴下降到料盘不溢出的位置,移栽伺服下降到P2
/// </summary> /// </summary>
[Description("入料_取料完成_提升轴下降到料盘不溢出的位置,移栽伺服下降到P2")]
FI_22_BatchAxisDown, FI_22_BatchAxisDown,
///// <summary> ///// <summary>
...@@ -763,319 +827,364 @@ namespace OnlineStore.DeviceLibrary ...@@ -763,319 +827,364 @@ namespace OnlineStore.DeviceLibrary
//FI_24_GetPosID, //FI_24_GetPosID,
/// <summary> /// <summary>
/// 料盘移栽:等待空托盘到达,移栽伺服下降到P2,并预扫码 /// 料盘移栽:开始拦截空托盘
/// </summary> /// </summary>
[Description("入料_取料完成_开始拦截空托盘")]
FI_25_WaitTray, FI_25_WaitTray,
/// <summary> /// <summary>
/// 料盘移栽: 上料机构下降 /// 料盘移栽: 上料机构下降,更新托盘信息
/// </summary> /// </summary>
[Description("入料_放料_上料机构下降,更新托盘信息")]
FI_26_CylinderDown, FI_26_CylinderDown,
/// <summary> /// <summary>
/// 料盘移栽: 上料气缸放松 /// 料盘移栽: 上料气缸放松
/// </summary> /// </summary>
[Description("入料_放料_上料气缸放松")]
FI_27_CylinderRelax, FI_27_CylinderRelax,
/// <summary> /// <summary>
/// 料盘移栽: 上料气缸夹紧 /// 料盘移栽: 上料气缸夹紧
/// </summary> /// </summary>
[Description("入料_放料_夹爪气缸夹紧等待再次放松")]
FI_28_CylinderWork, FI_28_CylinderWork,
/// <summary> /// <summary>
/// 料盘移栽: 上料气缸再次放松 /// 料盘移栽: 上料气缸再次放松
/// </summary> /// </summary>
[Description("入料_放料_上料气缸再次放松")]
FI_29_CylinderRelax2, FI_29_CylinderRelax2,
/// <summary> /// <summary>
/// 料盘移栽: 上料横移机构上升 /// 料盘移栽: 上料横移机构上升
/// </summary> /// </summary>
[Description("入料_放料完成_上料横移机构上升")]
FI_30_WaitCylinderUp, FI_30_WaitCylinderUp,
/// <summary> /// <summary>
/// 料盘移栽:上料横移机构上升,定位或者顶升可以先下降 /// 料盘移栽:上料横移机构上升
/// </summary> /// </summary>
[Description("入料_放料完成_上料横移机构上升")]
FI_31_CylinderUp, FI_31_CylinderUp,
/// <summary> /// <summary>
/// 料盘移栽:升降伺服到P1点 /// 料盘移栽:升降轴到P1点,托盘放行
/// </summary> /// </summary>
[Description("入料_放料完成_升降轴到P1点,托盘放行")]
FI_32_UpDownAxisToP1, FI_32_UpDownAxisToP1,
/// <summary> /// <summary>
/// 上料完成,未检测到料盘,提升伺服到P2点 /// 上料完成,未检测到料盘,提升伺服到P2点
/// </summary> /// </summary>
FI_51_BatchAxisToP2 = 11051, [Description("入料_送料串离开_未检测到料盘,提升伺服到P2点")]
FI_51_BatchAxisToP2 = 2151,
/// <summary> /// <summary>
/// 上料完成,升降盘定位气缸后退 /// 上料完成,升降盘定位气缸后退
/// </summary> /// </summary>
[Description("入料_料串离开_升降盘定位气缸后退")]
FI_52_TrayLocationCylinder_After, FI_52_TrayLocationCylinder_After,
/// <summary> /// <summary>
/// 上料完成,提升伺服到P1点 /// 上料完成,提升伺服到P1点,定位气缸下降
/// </summary> /// </summary>
[Description("入料_料串离开_提升伺服到P1点,定位气缸下降")]
FI_53_BatchAxisToP1, FI_53_BatchAxisToP1,
/// <summary> /// <summary>
/// 上料完成,等待出料线体无料架 /// 上料完成,等待出料线体无料架
/// </summary> /// </summary>
[Description("入料_料串离开_等待出料线体无料架")]
FI_54_OutCheck, FI_54_OutCheck,
/// <summary> /// <summary>
/// 上料完成,出口顶升气缸上升 /// 上料完成,出口顶升气缸上升,出料缓冲阻挡上升
/// </summary> /// </summary>
[Description("入料_料串离开_出口顶升气缸上升,出料缓冲阻挡上升")]
FI_55_OutTopCylinder_Up , FI_55_OutTopCylinder_Up ,
/// <summary> /// <summary>
///上料完成, 线体横移电机运转,等待料架到达出口 ///上料完成, 线体横移电机运转,等待料架离开上料工位
/// </summary> /// </summary>
[Description("入料_料串离开_线体横移电机运转,等待料架离开上料工位")]
FI_56_SideWayLineRun , FI_56_SideWayLineRun ,
/// <summary> /// <summary>
///上料完成,等待料架到达出口 ///上料完成,线体横移电机运转,等待料架到达出口
/// </summary> /// </summary>
[Description("入料_料串离开_线体横移电机运转,等待料架到达出口")]
FI_57_WaitShelfGo, FI_57_WaitShelfGo,
/// <summary> /// <summary>
///上料完成, 料架到达出口,线体横移电机停止 ///上料完成, 料架到达出口,线体横移电机停止
/// </summary> /// </summary>
[Description("入料_料串离开_料架到达出口,线体横移电机停止")]
FI_58_LineStop , FI_58_LineStop ,
/// <summary> /// <summary>
///上料完成, 料架到达出口,出口顶升下降,定位气缸下降, ///上料完成, 料架到达出口,出口顶升下降 ,清理缓存料架RFID,
/// </summary> /// </summary>
[Description("入料_料串离开_料架到达出口,出口顶升下降 ,清理缓存料架RFID")]
FI_59_TopDown, FI_59_TopDown,
/// <summary>
///上料完成, 出口线体运转,料架到达出口处, 通知AGV取空料架
/// </summary>
FI_61_OutLineRun,
/// <summary>
///上料完成, AGV到达,继续转动出口线体,送走出料料架,
/// </summary>
FI_62_OutLineRun,
/// <summary>
///上料完成, 料架送出,
/// </summary>
FI_63_OutLineRun,
#endregion #endregion
#region 入料装置出料处理,12000开始 #region 入料装置出料处理,2200 开始
/// <summary> /// <summary>
/// 出库流程:提升伺服到P2 /// 出库流程:提升伺服到P2
/// </summary> /// </summary>
FO_00_BatchAxisToP2=12000, [Description("出料_料串准备_提升伺服到P2")]
FO_00_BatchAxisToP2 = 2200,
/// <summary> /// <summary>
/// 出料流程:升降盘定位气缸后退 /// 出料流程:升降盘定位气缸后退
/// </summary> /// </summary>
FO_01_TrayLocation_After = 12001, [Description("出料_料串准备_升降盘定位气缸后退")]
FO_01_TrayLocation_After = 2201,
/// <summary> /// <summary>
/// 出料流程:定位气缸下降 /// 出料流程:定位气缸下降,提升轴移动到P1
/// </summary> /// </summary>
FO_02_LocationDown = 12002, [Description("出料_料串准备_定位气缸下降,提升轴移动到P1")]
FO_02_LocationDown ,
/// <summary> /// <summary>
/// 入口流水线转动,等待出料检测信号消失 /// 入口流水线转动,阻挡工位或进料口有料串,相关阻挡上升,流水线转动
/// </summary> /// </summary>
FO_03_LineStart = 12003, [Description("出料_料串准备_阻挡工位或进料口有料串,相关阻挡上升,流水线转动")]
FO_03_LineStart ,
/// <summary> /// <summary>
/// 定位工位检测到料架,等待1秒钟后重新检测 /// 定位工位检测到料架,定位工位检测到料架:进料阻挡上升, 等待3秒再次检测
/// </summary> /// </summary>
FO_04_WaitTime=12004, [Description("出料_料串准备_定位工位检测到料架:进料阻挡上升, 等待3秒再次检测")]
FO_04_WaitTime ,
/// <summary> /// <summary>
///出料检测: 工位检测信号,定位气缸上升 ///出料检测: 缓冲阻挡下降, 定位气缸上升,读取并缓存料架RFID
/// </summary> /// </summary>
FO_05_LocationUp= 12005, [Description("出料_料串准备_缓冲阻挡下降, 定位气缸上升,读取并缓存料架RFID")]
FO_05_LocationUp ,
/// <summary> /// <summary>
/// 出料检测:提升轴下降到位P2 /// 出料检测:提升轴下降到位P2,定位气缸上升
/// </summary> /// </summary>
FO_06_BatchAxisToP2 = 12006, [Description("出料_料串准备_提升轴下降到位P2,定位气缸上升")]
FO_06_BatchAxisToP2 ,
/// <summary> /// <summary>
/// 出料检测:升降盘定位气缸第一次前进 /// 出料检测:升降盘定位气缸第一次前进 2秒
/// </summary> /// </summary>
[Description("出料_料串准备_升降盘定位气缸第一次前进 2秒")]
FO_07_TrayLocation_Before, FO_07_TrayLocation_Before,
/// <summary> /// <summary>
/// 出料检测:升降盘定位气缸第一次后退 /// 出料检测:升降盘定位气缸后退,等待再次前进
/// </summary> /// </summary>
[Description("出料_料串准备_升降盘定位气缸后退,等待再次前进")]
FO_08_TrayLocation_Back, FO_08_TrayLocation_Back,
/// <summary> /// <summary>
/// 出料检测:升降盘定位气缸前进 /// 出料检测:升降盘定位气缸前进
/// </summary> /// </summary>
[Description("出料_料串准备_升降盘定位气缸前进")]
FO_09_TrayLocation_Before, FO_09_TrayLocation_Before,
/// <summary> /// <summary>
/// 出料检测:上料轴开始慢速上升到P3点 /// 出料检测:上料轴开始慢速上升到P3点,等待检测到料盘
/// </summary> /// </summary>
[Description("出料_料串准备_上料轴开始慢速上升到P3点,等待检测到料盘")]
FO_10_AxisUpMove, FO_10_AxisUpMove,
/// <summary> /// <summary>
/// 紧急出料移栽:上料轴下降指定的高度,同时升降轴回待机点 /// 紧急出料移栽:上料轴下降指定的高度
/// </summary> /// </summary>
FO_211_AxisDownMove = 12211, [Description("出料_上料轴下降指定的高度")]
FO_211_AxisDownMove = 2211,
/// <summary> /// <summary>
/// 紧急出料移栽:上料横移机构取料端 /// 紧急出料移栽:上料横移机构取料端
/// /// </summary> /// /// </summary>
[Description("出料_取料_上料横移机构到取料端")]
FO_212_CylinderTake , FO_212_CylinderTake ,
/// <summary> /// <summary>
/// 紧急出料移栽:升降伺服下降到P2 /// 紧急出料移栽:升降伺服下降到P2
/// /// </summary> /// /// </summary>
[Description("出料_取料_升降伺服下降到P2")]
FO_213_UpdownAxisToP2, FO_213_UpdownAxisToP2,
/// <summary> /// <summary>
/// 紧急出料移栽:上料横移机构下降 /// 紧急出料移栽:上料横移机构下降
/// /// </summary> /// /// </summary>
[Description("出料_取料_上料横移机构下降")]
FO_214_CylinderDown, FO_214_CylinderDown,
/// <summary> /// <summary>
/// 紧急出料移栽:上料气缸夹紧 /// 紧急出料移栽:上料气缸夹紧
/// /// </summary> /// /// </summary>
[Description("出料_取料_上料气缸夹紧")]
FO_215_CylinderTighten, FO_215_CylinderTighten,
/// <summary> /// <summary>
/// 紧急出料移栽:上料横移机构上升 /// 紧急出料移栽:上料横移机构上升
/// /// </summary> /// /// </summary>
[Description("出料_取料完成_上料横移机构上升")]
FO_216_CylinderUp, FO_216_CylinderUp,
/// <summary> /// <summary>
/// 紧急出料移栽:等待夹爪有料 /// 紧急出料移栽:等待夹爪有料
/// </summary> /// </summary>
[Description("出料_取料完成_上料横移机构上升")]
FO_217_ClampCheck, FO_217_ClampCheck,
/// <summary> /// <summary>
/// 紧急出料移栽:升降伺服到P1 /// 紧急出料移栽:升降伺服到P1
/// /// </summary> /// /// </summary>
[Description("出料_取料完成_升降伺服到P1")]
FO_218_UpdownToP1, FO_218_UpdownToP1,
/// <summary> /// <summary>
/// 紧急出料移栽:上料横移机构到放料端 /// 紧急出料移栽:上料横移机构到放料端
/// /// </summary> /// /// </summary>
[Description("出料_放料_上料横移机构到放料端")]
FO_219_CylinderGive, FO_219_CylinderGive,
/// <summary> /// <summary>
/// 紧急出料移栽:升降伺服到P3 /// 紧急出料移栽:升降伺服到P3
/// </summary> /// </summary>
[Description("出料_放料_升降伺服到P3")]
FO_220_UpdownAxisToP3, FO_220_UpdownAxisToP3,
/// <summary> /// <summary>
/// 紧急出料移栽:出料横移机构放松 /// 紧急出料移栽:出料横移机构放松
/// </summary> /// </summary>
[Description("出料_放料_出料横移机构放松")]
FO_221_CylinderSlack, FO_221_CylinderSlack,
/// <summary> /// <summary>
/// 紧急出料移栽:升降伺服回P1 /// 紧急出料移栽:升降伺服回P1
/// </summary> /// </summary>
[Description("出料_放料完成_升降伺服回P1")]
FO_222_UpdownAxisToP1, FO_222_UpdownAxisToP1,
/// <summary> ///// <summary>
/// 紧急出料移栽:夹爪信号检测 ///// 紧急出料移栽:夹爪信号检测
/// </summary> ///// </summary>
FO_223_ClampCheck, //FO_223_ClampCheck,
/// <summary> /// <summary>
/// 紧急出料移栽:上料横移机构到取料端 /// 紧急出料移栽:上料横移机构到取料端
/// </summary> /// </summary>
[Description("出料_放料完成_上料横移机构到取料端")]
FO_224_CylinderTake , FO_224_CylinderTake ,
/// <summary> /// <summary>
/// 出料完成,料盘已放入料架,提升伺服到P2点 /// 出料完成,料盘已放入料架,提升伺服到P2点
/// </summary> /// </summary>
FO_30_BatchAxisToP2 = 12330, [Description("出料_料串离开_料盘已放入料架,提升伺服到P2点")]
FO_30_BatchAxisToP2 = 2230,
/// <summary> /// <summary>
/// 出料完成,升降盘定位气缸后退 /// 出料完成,升降盘定位气缸后退
/// </summary> /// </summary>
[Description("出料_料串离开_升降盘定位气缸后退")]
FO_31_TrayLocation_After, FO_31_TrayLocation_After,
/// <summary> /// <summary>
/// 出料完成,提升伺服到P1点 /// 出料完成,提升伺服到P1点,定位气缸下降
/// </summary> /// </summary>
[Description("出料_料串离开_提升伺服到P1点,定位气缸下降")]
FO_32_BatchAxisToP1, FO_32_BatchAxisToP1,
/// <summary> /// <summary>
/// 出料完成,等待出料线体无料架 /// 出料完成,等待出料线体无料架
/// </summary> /// </summary>
[Description("出料_料串离开_等待出料线体无料架")]
FO_34_OutCheck , FO_34_OutCheck ,
/// <summary> /// <summary>
/// 出料完成,出口顶升气缸上升 /// 出料完成,出口顶升气缸上升,出料缓冲阻挡上升
/// </summary> /// </summary>
[Description("出料_料串离开_出口顶升气缸上升,出料缓冲阻挡上升")]
FO_34_OutTopCylinder_Up, FO_34_OutTopCylinder_Up,
/// <summary> /// <summary>
///出料完成, 线体横移电机运转,等待料架到达出口 ///出料完成, 线体横移电机运转,等待料架离开定位工位
/// </summary> /// </summary>
[Description("出料_料串离开_线体横移电机运转,等待料架离开定位工位")]
FO_35_SideWayLineRun, FO_35_SideWayLineRun,
/// <summary> /// <summary>
///出料完成, 等待料架离开定位工位 ///出料完成, 线体横移电机运转,等待料架到达出口
/// </summary> /// </summary>
[Description("出料_料串离开_线体横移电机运转,等待料架到达出口")]
FO_36_WaitShelfGo, FO_36_WaitShelfGo,
/// <summary> /// <summary>
///出料完成, 料架到达出口,线体横移电机停止 ///出料完成, 料架到达出口,线体横移电机停止
/// </summary> /// </summary>
FO_37_LineStop , [Description("出料_料串离开_料架到达出口,线体横移电机停止")]
FO_37_LineStop,
/// <summary> /// <summary>
///出料完成, 料架到达出口,出口顶升下降,定位气缸下降, ///出料完成, 料架到达出口,出口顶升下降,清理缓存料架RFID,
/// </summary> /// </summary>
FO_38_TopDown , [Description("出料_料串离开_料架到达出口,出口顶升下降,清理缓存料架RFID")]
FO_38_TopDown,
/// <summary> ///// <summary>
///出料完成, 出口线体运转,料架到达出口处, 通知AGV取空料架 /////出料完成, 出口线体运转,料架到达出口处, 通知AGV取空料架, 出料结束
/// </summary> ///// </summary>
FO_39_OutLineRun , //FO_39_OutLineRun,
/// <summary> ///// <summary>
///出料完成, AGV到达,继续转动出口线体,送走出料料架, /////出料完成, AGV到达,继续转动出口线体,送走出料料架,
/// </summary> ///// </summary>
FO_40_OutLineRun, //FO_40_OutLineRun,
/// <summary> ///// <summary>
///出料完成, 料架送出, /////出料完成, 料架送出,
/// </summary> ///// </summary>
FO_41_OutLineRun, //FO_41_OutLineRun,
#endregion #endregion
#region 出料装置移栽出料,20000开始 #region 出料装置移栽出料,3000 开始
/// <summary> /// <summary>
/// 前后气缸后退 /// 前后气缸后退
/// </summary> /// </summary>
PO_00_CylinderAfter = 20000, [Description("出料_取料前_前后气缸后退")]
PO_00_CylinderAfter = 3000,
/// <summary> /// <summary>
/// 上下气缸下降 /// 上下气缸下降
/// </summary> /// </summary>
PO_01_CylinderDown = 20001, [Description("出料_取料前_上下气缸下降")]
PO_01_CylinderDown = 3101,
/// <summary> /// <summary>
/// 顶升气缸上升 /// 顶升气缸上升
/// </summary> /// </summary>
PO_02_TopUP = 20002, [Description("出料_取料前_顶升气缸上升")]
PO_02_TopUP ,
/// <summary> /// <summary>
/// 夹料气缸夹紧 /// 夹料气缸夹紧
/// </summary> /// </summary>
PO_03_CylinderOpen=20003, [Description("出料_取料_夹料气缸夹紧")]
PO_03_CylinderOpen ,
/// <summary> /// <summary>
/// 上下气缸上升 /// 上下气缸上升,皮带线准备出料
/// </summary> /// </summary>
PO_04_CylinderUp = 20004, [Description("出料_取料完成_上下气缸上升,皮带线准备出料")]
PO_04_CylinderUp,
/// <summary> ///// <summary>
/// 检测夹爪夹紧信号 ///// 检测夹爪夹紧信号
/// </summary> ///// </summary>
PO_05_ClampCheck, //PO_05_ClampCheck,
/// <summary> ///// <summary>
/// 等待可以移栽料盘到流水线 ///// 等待可以移栽料盘到流水线
/// </summary> ///// </summary>
PO_06_WaitBox, //PO_06_WaitBox,
/// <summary> /// <summary>
/// 前后气缸前进 /// 前后气缸前进
/// </summary> /// </summary>
[Description("出料_取料完成_前后气缸前进")]
PO_07_CylinderBefore, PO_07_CylinderBefore,
/// <summary> ///// <summary>
/// 上下气缸下降 ///// 上下气缸下降
/// </summary> ///// </summary>
PO_08_CylinderDown, //PO_08_CylinderDown,
/// <summary> /// <summary>
/// 夹料气缸放松 /// 夹料气缸放松
/// </summary> /// </summary>
[Description("出料_放料_夹料气缸放松")]
PO_09_CylinderRelax, PO_09_CylinderRelax,
/// <summary> ///// <summary>
/// 上下气缸上升 ///// 上下气缸上升
/// </summary> ///// </summary>
PO_10_CylinderUp, //PO_10_CylinderUp,
/// <summary> /// <summary>
/// 前后气缸后退,等待4000 /// 前后气缸后退,等待200 ,皮带线继续运动
/// </summary> /// </summary>
[Description("出料_放料完成_前后气缸后退")]
PO_11_CylinderAfter, PO_11_CylinderAfter,
...@@ -1083,183 +1192,127 @@ namespace OnlineStore.DeviceLibrary ...@@ -1083,183 +1192,127 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
#region 出料流水线处理,30000开始 #region 出料流水线处理,4000 开始
/// <summary> /// <summary>
/// 出料流水线复位,定位气缸下降,NG气缸后退 /// 出料流水线复位,关闭所有皮带线,定位气缸下降,NG气缸后退
/// </summary> /// </summary>
DL_R_CylinderDown =30001, [Description("复位_关闭所有皮带线,定位气缸下降,NG气缸后退")]
/// <summary> DL_R_CylinderDown =4001,
/// 转动皮带开始运行
/// </summary>
DL_R_StartRun=30002,
/// <summary>
/// 皮带线检测处理
/// </summary>
DL_R_LineCheck=30100,
#region 皮带线3送出料盘处理
/// <summary>
/// 出料皮带线开始扫码送出料盘,等待1000后扫码
/// </summary>
DO_01_WaitTime = 30201,
/// <summary>
/// 出料皮带线开始扫码送出料盘,开始扫码,等待扫码结果,最多等待6000
/// </summary>
DO_02_ScanCode = 30202,
/// <summary>
/// 出料皮带线开始扫码送出料盘,根据二维码从服务器获取料盘尺寸
/// </summary>
DO_03_GetTraySize = 30203,
/// <summary>
/// 出料皮带线开始扫码送出料盘,上升或下降分盘定位气缸
/// </summary>
DO_04_SUpDownMove = 30204,
#region 皮带线3送出料盘新处理,增加NG推出气缸后的处理 4501
/// <summary> /// <summary>
/// 出料皮带线开始扫码送出料盘,转动皮带线,同时转动分盘装置 /// 送料盘到双层线:NG气缸后退,等待100后获取尺寸,
/// </summary>
DO_05_LineRun1 = 30205,
/// <summary>
/// 出料皮带线转动第二个工位,同时转动分盘装置
/// </summary>
DO_06_LineRun2 = 30206,
/// <summary>
/// 出料皮带线开始扫码送出料盘,等待料盘到达分盘装置位置
/// </summary>
DO_07_SeparateCheck = 30207,
/// <summary>
/// 出料皮带线开始扫码送出料盘,到达后再转动500
/// </summary>
DO_08_CRun = 30208,
/// <summary>
/// 停止接驳台皮带线
/// </summary>
DO_10_StopSeparateLine=30210,
/// <summary>
/// 出料皮带线获取尺寸NG,先转动料盘到扫码的下一个工位
/// </summary>
DO_11_NGToNextStation=30211,
/// <summary>
/// 出料皮带线获取尺寸NG,NG气缸前进
/// </summary>
DO_12_NGCylinderForward = 30212,
/// <summary>
/// 出料皮带线获取尺寸NG,NG气缸前进后等待1000ms
/// </summary>
DO_13_NGCylinderWait = 30213,
/// <summary>
/// 出料皮带线获取尺寸NG,NG气缸后退
/// </summary>
DO_14_NGCylinderBack = 30214,
/// <summary>
/// 出料皮带线获取尺寸NG,,NG料到接驳台,接驳台皮带线反转
/// </summary>
DO_15_SeparateBackRun = 30215,
/// <summary>
/// 出料皮带线获取尺寸NG,,NG料到接驳台,反转等待3000
/// </summary>
DO_16_SeparateBackRunWait = 30216,
/// <summary>
/// 出料皮带线获取尺寸NG,,NG料已出,接驳台先停止反转
/// </summary> /// </summary>
DO_17_SeparateStopRun = 30217, [Description("出料_NG气缸后退,等待100后获取尺寸")]
DON_01_WaitTime = 4501,
/// <summary> /// <summary>
/// 出料皮带线获取尺寸NG,,NG料已出,接驳台皮带线恢复正转 /// 出口有料,NG气缸后退,等待100后获取盘尺寸
/// </summary> /// </summary>
DO_18_SeparateRun = 30218, [Description("出料_出口有料,NG气缸后退,等待100后获取盘尺寸")]
DO_02_ScanCode = 4502,
#endregion
#region 皮带线3送出料盘新处理,增加NG推出气缸后的处理
/// <summary> /// <summary>
/// 送料盘到双层线:NG气缸后退,等待100后处理, /// 送料盘到双层线:获取尺寸
/// </summary> /// </summary>
DON_01_WaitTime = 30401, [Description("出料_获取料盘尺寸")]
/// <summary> DON_03_GetTraySize = 4503,
/// 送料盘到双层线:根据二维码从服务器获取料盘尺寸
/// </summary>
DON_03_GetTraySize = 30403,
/// <summary> /// <summary>
/// 送料盘到双层线:上升或下降分盘定位气缸 /// 送料盘到双层线:上升或下降分盘定位气缸
/// </summary> /// </summary>
DON_04_SUpDownMove = 30404, [Description("出料_上升或下降分盘定位气缸")]
DON_04_SUpDownMove ,
/// <summary> /// <summary>
/// 送料盘到双层线:转动皮带线,同时转动分盘装置 /// 送料盘到双层线:NG->接驳台,转动接驳台皮带
/// </summary> /// </summary>
DON_05_LineRun = 30405, [Description("出料_NG->接驳台,转动接驳台皮带")]
DON_05_LineRun,
/// <summary> /// <summary>
/// 送料盘到双层线:等待料盘到达分盘装置位置 /// 送料盘到双层线:等待料盘到达接驳台
/// </summary> /// </summary>
DON_07_SeparateCheck = 30407, [Description("出料_等待料盘到达接驳台")]
DON_07_SeparateCheck,
/// <summary> /// <summary>
/// 送料盘到双层线:到达后再转动500 /// 送料盘到双层线:料盘到达接驳台,调用arriveRobotLocation
/// </summary> /// </summary>
DON_08_CRun = 30408, [Description("出料_料盘到达接驳台,调用arriveRobotLocation")]
DON_08_CRun,
/// <summary> /// <summary>
/// 横移NG料:NG气缸前进 /// 横移NG料:NG气缸前进
/// </summary> /// </summary>
DON_12_NGCylinderForward = 30412, [Description("出料_NG气缸前进")]
DON_12_NGCylinderForward ,
/// <summary> /// <summary>
/// 横移NG料:NG气缸前进后等待1000ms /// 横移NG料:NG气缸等待1500后后退
/// </summary> /// </summary>
DON_13_NGCylinderWait = 30413, [Description("出料_NG气缸等待1500后后退")]
DON_13_NGCylinderWait,
/// <summary> /// <summary>
/// 横移NG料:NG气缸后退 /// 横移NG料:NG气缸后退
/// </summary> /// </summary>
DON_14_NGCylinderBack = 30414, [Description("出料_NG气缸后退")]
DON_14_NGCylinderBack ,
#endregion #endregion
#region 皮带线12接收料盘并转动处理 #region 皮带线12接收料盘并转动处理 4601
/// <summary> /// <summary>
/// 皮带线12处理料盘:NG气缸后退 /// 皮带线12处理料盘:NG气缸后退
/// </summary> /// </summary>
DLO_01_NGBack = 30301, [Description("送料_NG气缸后退")]
DLO_01_NGBack = 4601,
/// <summary> /// <summary>
/// 皮带线12处理料盘:等待入口无料盘, 等待最后一盘料位置>1 /// 皮带线12处理料盘:等待入口无料盘, 最后一盘料位置>1
/// </summary> /// </summary>
[Description("送料_等待入口无料盘, 且最后一盘料位置>1")]
DLO_02_WaitEnteryNoTray, DLO_02_WaitEnteryNoTray,
///// <summary> ///// <summary>
///// 皮带线12处理料盘:入口出口都没有料盘,转动皮带线到入口定位亮 ///// 皮带线12处理料盘:入口出口都没有料盘,转动皮带线到入口定位亮
///// </summary> ///// </summary>
//DLO_03_LineRun, //DLO_03_LineRun,
/// <summary> /// <summary>
/// 皮带线12处理料盘:可以放入料盘,等待移栽放料盘 /// 皮带线12处理料盘:可以放入料盘,等待移栽放料盘
/// </summary> /// </summary>
[Description("送料_可以放入料盘,等待移栽放料盘")]
DLO_04_CanReviceTray, DLO_04_CanReviceTray,
/// <summary> /// <summary>
/// 皮带线12处理料盘:移栽放下料盘后更新为已放料盘 /// 皮带线12处理料盘:料盘放入完成
/// </summary> /// </summary>
[Description("送料_料盘放入完成")]
DLO_05_TrayIsOk, DLO_05_TrayIsOk,
/// <summary> /// <summary>
/// 皮带线12处理料盘:盘放下后等待2000ms /// 皮带线12处理料盘:等待2000,NG气缸前进
/// </summary> /// </summary>
[Description("送料_等待2000,NG气缸前进")]
DLO_06_WaitTime, DLO_06_WaitTime,
/// <summary> /// <summary>
/// 皮带线12处理料盘:出库有料盘,继续转动一个工位, /// 皮带线12处理料盘:转动到下个工位,
/// </summary> /// </summary>
[Description("送料_转动到下个工位")]
DLO_07_LineRun, DLO_07_LineRun,
/// <summary> /// <summary>
/// 皮带线12处理料盘:NG料盘,NG气缸前进 /// 皮带线12处理料盘:NG料盘,NG气缸前进
/// </summary> /// </summary>
[Description("送料_NG料盘,NG气缸前进")]
DLO_08_NGBefore, DLO_08_NGBefore,
/// <summary> /// <summary>
/// 皮带线12处理料盘:NG料盘,NG气缸后退 /// 皮带线12处理料盘:NG料盘,NG气缸后退
/// </summary> /// </summary>
[Description("送料_NG料盘,NG气缸后退")]
DLO_09_NGAfter, DLO_09_NGAfter,
///// <summary> ///// <summary>
///// 皮带线12处理料盘:判断出口是否有料盘,有料盘需要转动,没有料盘结束 ///// 皮带线12处理料盘:判断出口是否有料盘,有料盘需要转动,没有料盘结束
///// </summary> ///// </summary>
//DLO_10_LineRun, //DLO_10_LineRun,
/// <summary> ///// <summary>
/// 皮带线12处理料盘:出口无料盘,结束, ///// 皮带线12处理料盘:出口无料盘,结束,
/// </summary> ///// </summary>
DLO_11_ExitNoTray //DLO_11_ExitNoTray
#endregion #endregion
...@@ -1267,7 +1320,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1267,7 +1320,7 @@ namespace OnlineStore.DeviceLibrary
#endregion #endregion
} }
public enum LineAlarmType public enum LineAlarmType
{ {
/// <summary> /// <summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!