Commit 791e9e5c 张东亮

入库时若翻板未放平,则报警,并将料盘送到NG口

1 个父辈 58320050
...@@ -9,8 +9,9 @@ using System.Threading.Tasks; ...@@ -9,8 +9,9 @@ using System.Threading.Tasks;
namespace DeviceLibrary namespace DeviceLibrary
{ {
public class LiftMonitor:ISafetyDevice public class LiftMonitor : ISafetyDevice
{ {
string doorClose = IO_Type.StringDoor_Close;
/// <summary> /// <summary>
/// 关闭端延时 /// 关闭端延时
/// </summary> /// </summary>
...@@ -26,7 +27,8 @@ namespace DeviceLibrary ...@@ -26,7 +27,8 @@ namespace DeviceLibrary
int StrokeLength = 270000; int StrokeLength = 270000;
MoveInfo moveInfo1 = new MoveInfo("升降机构", false); MoveInfo moveInfo1 = new MoveInfo("升降机构", false);
bool paused = false; bool paused = false;
public LiftMonitor(string _up, string _down,string _saftylight,string _break, AxisBean _axisBean,int _StrokeLength,int _upspeed, int _downspeed= 0) { public LiftMonitor(string _up, string _down, string _saftylight, string _break, AxisBean _axisBean, int _StrokeLength, int _upspeed, int _downspeed = 0)
{
up = _up; up = _up;
down = _down; down = _down;
saftylight = _saftylight; saftylight = _saftylight;
...@@ -35,7 +37,8 @@ namespace DeviceLibrary ...@@ -35,7 +37,8 @@ namespace DeviceLibrary
axisbreak = _break; axisbreak = _break;
downspeed = _downspeed; downspeed = _downspeed;
StrokeLength = _StrokeLength; StrokeLength = _StrokeLength;
if (downspeed == 0) { if (downspeed == 0)
{
downspeed = upspeed; downspeed = upspeed;
} }
SafetyDevice.AddDevice(this); SafetyDevice.AddDevice(this);
...@@ -44,8 +47,10 @@ namespace DeviceLibrary ...@@ -44,8 +47,10 @@ namespace DeviceLibrary
{ {
} }
public bool isAtTOP { public bool isAtTOP
get { {
get
{
return IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH); return IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH);
} }
} }
...@@ -56,7 +61,8 @@ namespace DeviceLibrary ...@@ -56,7 +61,8 @@ namespace DeviceLibrary
return IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH); return IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH);
} }
} }
public void LiftUp(MoveInfo moveInfo) { public void LiftUp(MoveInfo moveInfo)
{
if (moveInfo == null) if (moveInfo == null)
moveInfo = moveInfo1; moveInfo = moveInfo1;
...@@ -66,7 +72,8 @@ namespace DeviceLibrary ...@@ -66,7 +72,8 @@ namespace DeviceLibrary
return; return;
} }
paused = false; paused = false;
if (IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH)) { if (IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH))
{
moveInfo.log($"{axisBean.AxisName},已在位置,无需上升"); moveInfo.log($"{axisBean.AxisName},已在位置,无需上升");
return; return;
} }
...@@ -81,22 +88,26 @@ namespace DeviceLibrary ...@@ -81,22 +88,26 @@ namespace DeviceLibrary
DateTime d = DateTime.Now; DateTime d = DateTime.Now;
moveInfo.log($"{axisBean.AxisName},LiftUp"); moveInfo.log($"{axisBean.AxisName},LiftUp");
var wr = WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitUp), $"等待顶升[{axisBean.Config.Explain}]机构上升"); var wr = WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitUp), $"等待顶升[{axisBean.Config.Explain}]机构上升");
if (moveInfo!=null) if (moveInfo != null)
moveInfo.WaitList.Add(wr); moveInfo.WaitList.Add(wr);
Task.Run(()=> { Task.Run(() =>
while (!IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH)) { {
while (!IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH))
{
Task.Delay(15).Wait(); Task.Delay(15).Wait();
if (paused) if (paused)
{ {
paused = false; paused = false;
return; return;
} }
if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) { if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
moveInfo.log("设备急停"); moveInfo.log("设备急停");
Pause(); emergencyStop();
return; return;
} }
if (!string.IsNullOrEmpty(saftylight) && IOManager.IOValue(saftylight).Equals(IO_VALUE.LOW) && IOManager.IOValue(down.ToString()).Equals(IO_VALUE.LOW)) { if (!string.IsNullOrEmpty(saftylight) && IOManager.IOValue(saftylight).Equals(IO_VALUE.LOW) && IOManager.IOValue(down.ToString()).Equals(IO_VALUE.LOW))
{
moveInfo.log("安全光栅触发停止"); moveInfo.log("安全光栅触发停止");
Pause(); Pause();
return; return;
...@@ -135,7 +146,8 @@ namespace DeviceLibrary ...@@ -135,7 +146,8 @@ namespace DeviceLibrary
return true; return true;
} }
if (!axisBean.IsBusy) { if (!axisBean.IsBusy)
{
LogUtil.info("恢复继续上升"); LogUtil.info("恢复继续上升");
LiftUp(null); LiftUp(null);
} }
...@@ -170,7 +182,8 @@ namespace DeviceLibrary ...@@ -170,7 +182,8 @@ namespace DeviceLibrary
if (moveInfo != null) if (moveInfo != null)
moveInfo.WaitList.Add(wr); moveInfo.WaitList.Add(wr);
Task.Run(() => { Task.Run(() =>
{
while (!IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH)) while (!IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH))
{ {
Task.Delay(15).Wait(); Task.Delay(15).Wait();
...@@ -182,7 +195,7 @@ namespace DeviceLibrary ...@@ -182,7 +195,7 @@ namespace DeviceLibrary
if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOManager.IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
LogUtil.info("设备急停"); LogUtil.info("设备急停");
Pause(); emergencyStop();
return; return;
} }
if (!string.IsNullOrEmpty(saftylight) && IOManager.IOValue(saftylight).Equals(IO_VALUE.LOW)) if (!string.IsNullOrEmpty(saftylight) && IOManager.IOValue(saftylight).Equals(IO_VALUE.LOW))
...@@ -232,9 +245,24 @@ namespace DeviceLibrary ...@@ -232,9 +245,24 @@ namespace DeviceLibrary
} }
return false; return false;
} }
bool isDoorClose()
{
return IOManager.IOValue(doorClose).Equals(IO_VALUE.HIGH);
}
void emergencyStop()
{
paused = true;
axisBean.SuddenStop();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
}
public void Pause() public void Pause()
{ {
if (!isDoorClose())
{
paused = true; paused = true;
axisBean.SuddenStop(); axisBean.SuddenStop();
if (!string.IsNullOrEmpty(axisbreak)) if (!string.IsNullOrEmpty(axisbreak))
...@@ -242,7 +270,7 @@ namespace DeviceLibrary ...@@ -242,7 +270,7 @@ namespace DeviceLibrary
IOManager.IOMove(axisbreak, IO_VALUE.LOW); IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff(); axisBean.ServoOff();
} }
}
} }
DateTime LastResumeTime = DateTime.Now; DateTime LastResumeTime = DateTime.Now;
public int ResumeWaitTimeSec = 0; public int ResumeWaitTimeSec = 0;
...@@ -268,7 +296,7 @@ namespace DeviceLibrary ...@@ -268,7 +296,7 @@ namespace DeviceLibrary
} }
} }
} }
catch{ } catch { }
} }
} }
} }
...@@ -65,7 +65,8 @@ namespace DeviceLibrary ...@@ -65,7 +65,8 @@ namespace DeviceLibrary
if (ClampMoveInfo.MoveStep != MoveStep.ReelClamp_WaitGaugeHeight) if (ClampMoveInfo.MoveStep != MoveStep.ReelClamp_WaitGaugeHeight)
{ {
ClampMoveInfo.log($"不再等待测高的步骤们无法设置盘高:{height}"); ClampMoveInfo.log($"不再等待测高的步骤们无法设置盘高:{height}");
return; } return;
}
ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_GetHeight); ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_GetHeight);
ClampMoveInfo.MoveParam.PlateH = height; ClampMoveInfo.MoveParam.PlateH = height;
ClampMoveInfo.log($"设置盘高:{height}"); ClampMoveInfo.log($"设置盘高:{height}");
...@@ -89,7 +90,7 @@ namespace DeviceLibrary ...@@ -89,7 +90,7 @@ namespace DeviceLibrary
case MoveStep.ReelClamp_01: case MoveStep.ReelClamp_01:
ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_02); ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_02);
ClampMoveInfo.log($"取料夹爪下降"); ClampMoveInfo.log($"取料夹爪下降");
Clamp_Axis.AbsMove(ClampMoveInfo,Config.Clamp_P2,Config.Clamp_P2_speed); Clamp_Axis.AbsMove(ClampMoveInfo, Config.Clamp_P2, Config.Clamp_P2_speed);
break; break;
case MoveStep.ReelClamp_02: case MoveStep.ReelClamp_02:
ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_03); ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_03);
...@@ -103,7 +104,7 @@ namespace DeviceLibrary ...@@ -103,7 +104,7 @@ namespace DeviceLibrary
break; break;
case MoveStep.ReelClamp_04: case MoveStep.ReelClamp_04:
ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_05); ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_05);
ClampMoveInfo.log($"检测盘宽"); ClampMoveInfo.log($"关闭翻板门,检测盘宽");
//CylinderMove(ClampMoveInfo, IO_Type.StringPosChecker_Home, IO_Type.StringPosChecker_Work, IO_VALUE.HIGH); //CylinderMove(ClampMoveInfo, IO_Type.StringPosChecker_Home, IO_Type.StringPosChecker_Work, IO_VALUE.HIGH);
ClampMoveInfo.MoveParam.PlateW = GetWidth(); ClampMoveInfo.MoveParam.PlateW = GetWidth();
CloseFlipDoor(ClampMoveInfo); CloseFlipDoor(ClampMoveInfo);
...@@ -149,6 +150,20 @@ namespace DeviceLibrary ...@@ -149,6 +150,20 @@ namespace DeviceLibrary
Clamp_Axis.AbsMove(ClampMoveInfo, Config.Clamp_P1, Config.Clamp_P1_speed); Clamp_Axis.AbsMove(ClampMoveInfo, Config.Clamp_P1, Config.Clamp_P1_speed);
break; break;
case MoveStep.ReelClamp_09: case MoveStep.ReelClamp_09:
if (IOValue(IO_Type.ReelFlipDoor_L_Work).Equals(IO_VALUE.LOW))
{
ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_01);
ClampMoveInfo.log($"左侧翻板水平信号未亮,料盘NG:{ClampMoveInfo.MoveParam.NgMsg}");
RobotManage.UserPause(crc.GetString("l_flipDoor_no_work", "左侧翻板水平信号未亮"));
}
else if (IOValue(IO_Type.ReelFlipDoor_R_Work).Equals(IO_VALUE.LOW))
{
ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_01);
ClampMoveInfo.log($"右侧翻板水平信号未亮,料盘NG:{ClampMoveInfo.MoveParam.NgMsg}");
RobotManage.UserPause(crc.GetString("r_flipDoor_no_work", "右侧翻板水平信号未亮"));
}
else
{
ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_10); ClampMoveInfo.NextMoveStep(MoveStep.ReelClamp_10);
if (RobotManage.InoutDebugMode) if (RobotManage.InoutDebugMode)
{ {
...@@ -166,6 +181,8 @@ namespace DeviceLibrary ...@@ -166,6 +181,8 @@ namespace DeviceLibrary
scantrytimes = 0; scantrytimes = 0;
ScanCode(); ScanCode();
} }
}
break; break;
case MoveStep.ReelClamp_10: case MoveStep.ReelClamp_10:
if (ScanTask.IsCompleted) if (ScanTask.IsCompleted)
...@@ -187,8 +204,8 @@ namespace DeviceLibrary ...@@ -187,8 +204,8 @@ namespace DeviceLibrary
ClampMoveInfo.MoveParam.IsNg = false; ClampMoveInfo.MoveParam.IsNg = false;
ClampMoveInfo.MoveParam.codeInfos = x; ClampMoveInfo.MoveParam.codeInfos = x;
var cc = x.Select((a) => a.CodeStr); var cc = x.Select((a) => a.CodeStr);
LastCode = String.Join("##",cc); LastCode = String.Join("##", cc);
ServerCM.SendInStoreRequest(cc.ToArray(), ClampMoveInfo.MoveParam,true); ServerCM.SendInStoreRequest(cc.ToArray(), ClampMoveInfo.MoveParam, true);
} }
} }
else if (ClampMoveInfo.IsTimeOut(15)) else if (ClampMoveInfo.IsTimeOut(15))
...@@ -284,10 +301,11 @@ namespace DeviceLibrary ...@@ -284,10 +301,11 @@ namespace DeviceLibrary
if (ConfigHelper.Config.Get("Device_ManualCloseSingleDoor", false)) if (ConfigHelper.Config.Get("Device_ManualCloseSingleDoor", false))
RobotManage.UserPause(crc.GetString("please_take_ngdoor_reel", "等待取走单口料盘")); RobotManage.UserPause(crc.GetString("please_take_ngdoor_reel", "等待取走单口料盘"));
} }
else { else
{
if (!ConfigHelper.Config.Get("CamTestReel_Ability", false)) if (!ConfigHelper.Config.Get("CamTestReel_Ability", false))
ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_04); ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_04);
RobotManage.UserPause(crc.GetString("please_take_ngdoor_reel","等待取走单口料盘")); RobotManage.UserPause(crc.GetString("please_take_ngdoor_reel", "等待取走单口料盘"));
} }
} }
else else
...@@ -313,7 +331,7 @@ namespace DeviceLibrary ...@@ -313,7 +331,7 @@ namespace DeviceLibrary
Msg.add(crc.GetString(L.x29_low_no_reel, "检测相机打开失败."), MsgLevel.alarm); Msg.add(crc.GetString(L.x29_low_no_reel, "检测相机打开失败."), MsgLevel.alarm);
} }
else else
if (IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.HIGH)&& !h.Value) if (IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.HIGH) && !h.Value)
{ {
ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_06); ClampMoveInfo.NextMoveStep(MoveStep.NGOUT_06);
ClampMoveInfo.log("关门NG口门"); ClampMoveInfo.log("关门NG口门");
...@@ -358,7 +376,8 @@ namespace DeviceLibrary ...@@ -358,7 +376,8 @@ namespace DeviceLibrary
else else
if (!ConfigHelper.Config.Get("CamTestReel_Ability", false) || h.Value) if (!ConfigHelper.Config.Get("CamTestReel_Ability", false) || h.Value)
{ } { }
else { else
{
ClampMoveInfo.log("单盘入库没有检测到放入料盘"); ClampMoveInfo.log("单盘入库没有检测到放入料盘");
ClampMoveInfo.NextMoveStep(MoveStep.Wait); ClampMoveInfo.NextMoveStep(MoveStep.Wait);
} }
...@@ -380,11 +399,11 @@ namespace DeviceLibrary ...@@ -380,11 +399,11 @@ namespace DeviceLibrary
} }
private int GetWidth() private int GetWidth()
{ {
if(ConfigHelper.Config.Get("Device_IO_HasX20",true) && IOManager.IOValue(IO_Type.WidthCheck_15).Equals(IO_VALUE.HIGH)) if (ConfigHelper.Config.Get("Device_IO_HasX20", true) && IOManager.IOValue(IO_Type.WidthCheck_15).Equals(IO_VALUE.HIGH))
{ {
return 15; return 15;
} }
else if(IOManager.IOValue(IO_Type.WidthCheck_13).Equals(IO_VALUE.HIGH)) else if (IOManager.IOValue(IO_Type.WidthCheck_13).Equals(IO_VALUE.HIGH))
{ {
return 13; return 13;
} }
...@@ -400,11 +419,11 @@ namespace DeviceLibrary ...@@ -400,11 +419,11 @@ namespace DeviceLibrary
string state = ""; string state = "";
if (ClampMoveInfo.MoveStep == MoveStep.Wait) if (ClampMoveInfo.MoveStep == MoveStep.Wait)
{ {
return crc.GetString(L.free,"空闲中"); return crc.GetString(L.free, "空闲中");
} }
else if (ClampMoveInfo.MoveStep > MoveStep.NGOUT_01) else if (ClampMoveInfo.MoveStep > MoveStep.NGOUT_01)
{ {
state = crc.GetString(L.ngdoor, "单料口:") +ClampMoveInfo.MoveParam.NgMsg; state = crc.GetString(L.ngdoor, "单料口:") + ClampMoveInfo.MoveParam.NgMsg;
} }
else if (ClampMoveInfo.MoveStep >= MoveStep.ReelClamp_09) else if (ClampMoveInfo.MoveStep >= MoveStep.ReelClamp_09)
{ {
...@@ -416,7 +435,8 @@ namespace DeviceLibrary ...@@ -416,7 +435,8 @@ namespace DeviceLibrary
} }
return state; return state;
} }
public bool IsScanRunning() { public bool IsScanRunning()
{
if (ScanTask == null) if (ScanTask == null)
return false; return false;
...@@ -427,14 +447,15 @@ namespace DeviceLibrary ...@@ -427,14 +447,15 @@ namespace DeviceLibrary
/// 扫码线程 /// 扫码线程
/// </summary> /// </summary>
Task<List<CodeInfo>> ScanTask; Task<List<CodeInfo>> ScanTask;
public void ScanCode() { public void ScanCode()
{
ClampMoveInfo.log("开始扫码"); ClampMoveInfo.log("开始扫码");
//RightMoveInfo.OneWaitCanEndStep = true; //RightMoveInfo.OneWaitCanEndStep = true;
//RightMoveInfo.WaitList.Add(WaitResultInfo.WaitScanCode()); //RightMoveInfo.WaitList.Add(WaitResultInfo.WaitScanCode());
//RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); //RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
try try
{ {
ScanTask = Task.Run(new Func<List<CodeInfo>>(()=> ScanTask = Task.Run(new Func<List<CodeInfo>>(() =>
{ {
IOMove(IO_Type.Device_Led, IO_VALUE.LOW); IOMove(IO_Type.Device_Led, IO_VALUE.LOW);
IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH); IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!