Commit 6204a70b LN

增加伺服报警检测功能

1 个父辈 9b480ac3
...@@ -383,6 +383,43 @@ namespace OnlineStore.DeviceLibrary ...@@ -383,6 +383,43 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(100); Thread.Sleep(100);
} }
private DateTime checkAlarmTime = DateTime.Now;
public bool CheckAxisAlarm(params AxisBean[] axisList )
{
if (!NoErrorAlarm())
{
return true;
}
TimeSpan span = DateTime.Now - checkAlarmTime;
//1秒钟检测一次轴报警
if (span.TotalSeconds < 3)
{
return false;
}
checkAlarmTime = DateTime.Now;
bool isInAlarm = false;
foreach (AxisBean axisInfo in axisList)
{
short axis = axisInfo.Config.GetAxisValue();
string deviceName = axisInfo.Config.GetNameStr();
int alarmIo = AxisManager.instance.GetAlarmStatus(deviceName, axis);
if (alarmIo == 1)
{
WarnMsg = Name + " 运动轴" + axisInfo.Config.Explain + "报警";
LogUtil.error(WarnMsg);
Alarm(LineAlarmType.AxisAlarm);
isInAlarm = true;
}
}
//判断报警状态
return isInAlarm;
}
#endregion #endregion
......
...@@ -154,19 +154,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -154,19 +154,19 @@ namespace OnlineStore.DeviceLibrary
case LineMoveStep.FR_01_StopUp: case LineMoveStep.FR_01_StopUp:
MoveInfo.NextMoveStep(LineMoveStep.FR_02_LineRun); MoveInfo.NextMoveStep(LineMoveStep.FR_02_LineRun);
//阻挡上升 //阻挡上升
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH)) //if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
{ //{
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,检测到定位工位有信号,不转动链条"); // LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,检测到定位工位有信号,不转动链条");
} //}
else //else
{ //{
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动3秒钟 "); LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动 3000 ");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
//线体开始转动 //线体开始转动
AllLineMove(IO_VALUE.HIGH); AllLineMove(IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
MoveInfo.OneWaitCanEndStep = true; //MoveInfo.OneWaitCanEndStep = true;
} //}
break; break;
case LineMoveStep.FR_02_LineRun: case LineMoveStep.FR_02_LineRun:
MoveInfo.NextMoveStep(LineMoveStep.FR_03_CylinderUp); MoveInfo.NextMoveStep(LineMoveStep.FR_03_CylinderUp);
...@@ -424,6 +424,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -424,6 +424,11 @@ namespace OnlineStore.DeviceLibrary
AgvStatusPro(); AgvStatusPro();
LedProcess(); LedProcess();
if (UseAxis && runStatus >= LineRunStatus.Runing)
{
CheckAxisAlarm(UpdownAxis,BatchAxis);
}
} }
} }
......
...@@ -180,6 +180,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -180,6 +180,10 @@ namespace OnlineStore.DeviceLibrary
CheckFixture(); CheckFixture();
} }
} }
if (UseAxis && runStatus >= LineRunStatus.Runing)
{
CheckAxisAlarm(UpdownAxis);
}
} }
} }
} }
...@@ -232,6 +232,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -232,6 +232,10 @@ namespace OnlineStore.DeviceLibrary
CheckFixture(); CheckFixture();
} }
} }
if (UseAxis&& runStatus >= LineRunStatus.Runing)
{
CheckAxisAlarm(UpdownAxis);
}
OutStoreListPro(); OutStoreListPro();
} }
......
...@@ -142,30 +142,39 @@ namespace OnlineStore.DeviceLibrary ...@@ -142,30 +142,39 @@ namespace OnlineStore.DeviceLibrary
{ {
return true; return true;
} }
//轴不报警时才重新运动,否则直接报警
int alarm = AxisManager.instance.GetAlarmStatus(deviceName, axisNo);
//判断是否需要重新运动 //判断是否需要重新运动
if (MoveInfo.CanWhileCount > 0) if (alarm.Equals(1))
{
msg = " " + MoveInfo.SLog + MoveInfo.Name + axis.DisplayStr + ",目标位置[" + targetPosition + "]当前位置[" + outCount
+ "],误差过大且轴报警";
LogUtil.error(msg, 600);
}
else if (MoveInfo.CanWhileCount > 0 && alarm.Equals(0))
{ {
string clearMsg = ""; string clearMsg = "";
//判断轴是否报警 ////判断轴是否报警
if (MoveInfo.CanWhileCount <= 3) //if (MoveInfo.CanWhileCount <= 3)
{ //{
int isAlarm = AxisManager.instance.GetAlarmStatus(deviceName, axisNo); // int isAlarm = AxisManager.instance.GetAlarmStatus(deviceName, axisNo);
if (isAlarm.Equals(1)) // if (isAlarm.Equals(1))
{ // {
clearMsg = "清理报警,"; // clearMsg = "清理报警,";
AxisManager.instance.AlarmClear(deviceName, axisNo); // AxisManager.instance.AlarmClear(deviceName, axisNo);
Thread.Sleep(200); // Thread.Sleep(200);
AxisManager.instance.ServoOn(deviceName, axisNo); // AxisManager.instance.ServoOn(deviceName, axisNo);
Thread.Sleep(500); // Thread.Sleep(500);
} // }
} //}
if (String.IsNullOrEmpty(clearMsg)) if (String.IsNullOrEmpty(clearMsg))
{ {
AxisManager.instance.SuddenStop(axis.DeviceName, axis.GetAxisValue()); AxisManager.instance.SuddenStop(axis.DeviceName, axis.GetAxisValue());
Thread.Sleep(100); Thread.Sleep(100);
} }
LogUtil.error(MoveInfo.Name + axis.DisplayStr + "目标位置[" + targetPosition + "]当前位置[" + outCount + LogUtil.error(MoveInfo.Name + axis.DisplayStr + "目标位置[" + targetPosition + "]当前位置[" + outCount +
"],误差过大,"+clearMsg+"重新开始运动,剩余[" + MoveInfo.CanWhileCount + "]次"); "],误差过大," + clearMsg + "重新开始运动,剩余[" + MoveInfo.CanWhileCount + "]次");
AxisManager.instance.AbsMove(axis.DeviceName, axis.GetAxisValue(), targetPosition, targetSpeed, axis.AddSpeed, axis.DelSpeed); AxisManager.instance.AbsMove(axis.DeviceName, axis.GetAxisValue(), targetPosition, targetSpeed, axis.AddSpeed, axis.DelSpeed);
MoveInfo.CanWhileCount--; MoveInfo.CanWhileCount--;
Thread.Sleep(200); Thread.Sleep(200);
...@@ -192,6 +201,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -192,6 +201,15 @@ namespace OnlineStore.DeviceLibrary
return true; return true;
} }
//判断是否需要重新运动 //判断是否需要重新运动
//轴不报警时才重新运动,否则直接报警
int alarm = AxisManager.instance.GetAlarmStatus(axis.DeviceName, axis.GetAxisValue());
//判断是否需要重新运动
if (alarm.Equals(1))
{
msg = " " + MoveInfo.SLog + MoveInfo.Name + axis.DisplayStr + ",收到原点完成信号,当前位置[" + outCount + "],误差过大且轴报警";
LogUtil.error(msg, 600);
}
if (MoveInfo.CanWhileCount > 0) if (MoveInfo.CanWhileCount > 0)
{ {
LogUtil.error(MoveInfo.Name + axis.DisplayStr + "收到原点完成信号,当前位置[" + outCount + "],重新回原点,剩余[" + MoveInfo.CanWhileCount + "]次"); LogUtil.error(MoveInfo.Name + axis.DisplayStr + "收到原点完成信号,当前位置[" + outCount + "],重新回原点,剩余[" + MoveInfo.CanWhileCount + "]次");
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!