Commit 10a4dfe6 张东亮

回原优化,agv交互测试ok

1 个父辈 a718ffd1
...@@ -237,8 +237,8 @@ namespace AutoScanAndLabel ...@@ -237,8 +237,8 @@ namespace AutoScanAndLabel
private void btn左侧电滚筒退出_Click(object sender, EventArgs e) private void btn左侧电滚筒退出_Click(object sender, EventArgs e)
{ {
IOManager.IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH);
} }
private void btn左侧电滚筒停止_Click(object sender, EventArgs e) private void btn左侧电滚筒停止_Click(object sender, EventArgs e)
{ {
...@@ -247,14 +247,14 @@ namespace AutoScanAndLabel ...@@ -247,14 +247,14 @@ namespace AutoScanAndLabel
} }
private void btn右侧电滚筒进入_Click(object sender, EventArgs e) private void btn右侧电滚筒进入_Click(object sender, EventArgs e)
{ {
IOManager.IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH);
} }
private void btn右侧电滚筒退出_Click(object sender, EventArgs e) private void btn右侧电滚筒退出_Click(object sender, EventArgs e)
{ {
IOManager.IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW); IOManager.IOMove(IO_Type.RightMoto_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH);
} }
private void btn右侧电滚筒停止_Click(object sender, EventArgs e) private void btn右侧电滚筒停止_Click(object sender, EventArgs e)
......
...@@ -9,6 +9,7 @@ using System.Data; ...@@ -9,6 +9,7 @@ using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
...@@ -83,7 +84,8 @@ namespace AutoScanAndLabel.UC ...@@ -83,7 +84,8 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); // Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入 RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv(); ShelfOutAgv();
...@@ -93,7 +95,8 @@ namespace AutoScanAndLabel.UC ...@@ -93,7 +95,8 @@ namespace AutoScanAndLabel.UC
} }
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
ToStandby(); ToStandby();
//通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去
...@@ -127,18 +130,21 @@ namespace AutoScanAndLabel.UC ...@@ -127,18 +130,21 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开 RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv(); ShelfEnterAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf) while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf)
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
//通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
...@@ -178,7 +184,7 @@ namespace AutoScanAndLabel.UC ...@@ -178,7 +184,7 @@ namespace AutoScanAndLabel.UC
} }
private bool WaitMissionOk() private bool WaitMissionOk()
{ {
return curState != null && curState.MissionResult.Equals(MissionResult.任务执行成功); return WaitMissionOk((uint)AGVManager.CurMissionId);
} }
private void button_Leftleavefull_Click(object sender, EventArgs e) private void button_Leftleavefull_Click(object sender, EventArgs e)
{ {
...@@ -202,19 +208,22 @@ namespace AutoScanAndLabel.UC ...@@ -202,19 +208,22 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while(!WaitMissionOk()) while(!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开 RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv(); ShelfEnterAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf) while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf)
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
//通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
...@@ -246,18 +255,21 @@ namespace AutoScanAndLabel.UC ...@@ -246,18 +255,21 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入 RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv(); ShelfOutAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf) while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf)
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
//通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
Task.Delay(1000).Wait(); //Task.Delay(1000).Wait();
Thread.Sleep(1000);
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
......
...@@ -57,9 +57,9 @@ namespace DL.StandardRobot ...@@ -57,9 +57,9 @@ namespace DL.StandardRobot
{ {
if (data.Length >= 240) if (data.Length >= 240)
{ {
preState.RunMissionId = GetUInt32(new byte[] { data[195], data[194], data[193], data[192] }); preState.RunMissionId = GetUInt32(new byte[] { data[192], data[193], data[194], data[195] });
preState.MissionRunState = (MissionRunState)GetUInt16(data[197], data[196]); preState.MissionRunState = (MissionRunState)GetUInt16(data[196], data[197]);
preState.MissionResult = (MissionResult)GetUInt16(data[199], data[198]); preState.MissionResult = (MissionResult)GetUInt16(data[198], data[199]);
if (!missionState.Equals(preState)) if (!missionState.Equals(preState))
{ {
missionState.RunMissionId = preState.RunMissionId; missionState.RunMissionId = preState.RunMissionId;
......
...@@ -68,14 +68,13 @@ namespace DL.Com.TCP ...@@ -68,14 +68,13 @@ namespace DL.Com.TCP
{ {
try try
{ {
Online = tcpClient.IsConnected();
if (!Online) if (!Online)
{ {
if (IsAutoReconnect) if (IsAutoReconnect)
{ {
bool rtn = tcpClient.Connect(IP, Port, ReceiveMessage); online = tcpClient.Connect(IP, Port, ReceiveMessage);
Thread.Sleep(1000); Thread.Sleep(1000);
if(rtn) if (online)
{ {
RequestInfo requestInfo = GetPeek(); RequestInfo requestInfo = GetPeek();
if (requestInfo != null && requestInfo.Requested) if (requestInfo != null && requestInfo.Requested)
...@@ -371,6 +370,8 @@ namespace DL.Com.TCP ...@@ -371,6 +370,8 @@ namespace DL.Com.TCP
RequestInfo requestInfo = GetPeek(); RequestInfo requestInfo = GetPeek();
if (requestInfo != null && (!requestInfo.Requested || requestInfo.RequestTimeOut)) if (requestInfo != null && (!requestInfo.Requested || requestInfo.RequestTimeOut))
{ {
try
{
bool rtn = tcpClient.Send(GetRequestBytes(requestInfo.FunCode, requestInfo.StartAddr, requestInfo.CountOrValue, requestInfo.EquipAddr, requestInfo.Values)); bool rtn = tcpClient.Send(GetRequestBytes(requestInfo.FunCode, requestInfo.StartAddr, requestInfo.CountOrValue, requestInfo.EquipAddr, requestInfo.Values));
requestInfo.SetRequestState(rtn); requestInfo.SetRequestState(rtn);
if (!GetFunction(requestInfo.FunCode).Equals(RegisterFunction.Read)) if (!GetFunction(requestInfo.FunCode).Equals(RegisterFunction.Read))
...@@ -378,6 +379,11 @@ namespace DL.Com.TCP ...@@ -378,6 +379,11 @@ namespace DL.Com.TCP
else else
LogUtil.Debug($"Request {requestInfo}"); LogUtil.Debug($"Request {requestInfo}");
} }
catch {
online = false;
}
}
} }
} }
/// <summary> /// <summary>
......
...@@ -32,8 +32,10 @@ namespace DeviceLibrary ...@@ -32,8 +32,10 @@ namespace DeviceLibrary
{ {
robot.MissionSateChanged -= changedEventHandler; robot.MissionSateChanged -= changedEventHandler;
} }
public static int CurMissionId=0;
public static void AddMission(int id) public static void AddMission(int id)
{ {
CurMissionId = id;
robot.AddMission(id); robot.AddMission(id);
} }
public static bool IsConnected() public static bool IsConnected()
......
...@@ -14,7 +14,7 @@ namespace DeviceLibrary ...@@ -14,7 +14,7 @@ namespace DeviceLibrary
{ {
partial class MainMachine partial class MainMachine
{ {
Point Label_p3;
void LabelProcess() void LabelProcess()
{ {
if (CheckWait(LabelMoveInfo)) if (CheckWait(LabelMoveInfo))
...@@ -23,12 +23,21 @@ namespace DeviceLibrary ...@@ -23,12 +23,21 @@ namespace DeviceLibrary
switch (LabelMoveInfo.MoveStep) switch (LabelMoveInfo.MoveStep)
{ {
case MoveStep.Lbl01: case MoveStep.Lbl01:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl_WaitPrint); LabelMoveInfo.NextMoveStep(MoveStep.Lbl02);
Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P2, Config.Label_X_P2_speed); Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_speed);
Label_Y_Axis.AbsMove(LabelMoveInfo, Config.Label_Y_P2, Config.Label_Y_P2_speed);
Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P2, Config.Label_Z_P2_speed); Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P2, Config.Label_Z_P2_speed);
LabelMoveInfo.log("Label_X到待机点,Label_Y到贴标前点");
break;
case MoveStep.Lbl02:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl02_1);
Label_Y_Axis.AbsMove(LabelMoveInfo, Config.Label_Y_P2, Config.Label_Y_P2_speed);
Label_R_Axis.AbsMove(LabelMoveInfo, Config.Label_R_P2, Config.Label_Z_P2_speed); Label_R_Axis.AbsMove(LabelMoveInfo, Config.Label_R_P2, Config.Label_Z_P2_speed);
LabelMoveInfo.log("Label_XYZ转到取标点,等待标签打印完毕"); LabelMoveInfo.log("Label_YR转到取标点");
break;
case MoveStep.Lbl02_1:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl_WaitPrint);
Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P2, Config.Label_X_P2_speed);
LabelMoveInfo.log("Label_X转到取标点,等待标签打印完毕");
break; break;
case MoveStep.Lbl_WaitPrint: case MoveStep.Lbl_WaitPrint:
if (LastPrintStatus == Asa.PrintLabel.PrinterStatus.Idle) { if (LastPrintStatus == Asa.PrintLabel.PrinterStatus.Idle) {
...@@ -89,19 +98,27 @@ namespace DeviceLibrary ...@@ -89,19 +98,27 @@ namespace DeviceLibrary
//计算贴标角度的脉冲值 //计算贴标角度的脉冲值
int labelAxisPos = Config.Label_R_360 / 350 * labelAngle; int labelAxisPos = Config.Label_R_360 / 350 * labelAngle;
//计算像素点位与中心点的差 //计算像素点位与中心点的差
Point Label_p3 = new Point(p.X - Right_Batch_Point.X , p.Y - Right_Batch_Point.Y); Label_p3 = new Point(p.X - Right_Batch_Point.X , p.Y - Right_Batch_Point.Y);
//计算像素*脉冲像素比得到脉冲值+中心点基准脉冲 //计算像素*脉冲像素比得到脉冲值+中心点基准脉冲
Label_p3.X = (int)(Label_p3.X * Config.Cam_Pixel_X_Ratio) + Config.Label_X_P3; Label_p3.X = (int)(Label_p3.X * Config.Cam_Pixel_X_Ratio) + Config.Label_X_P3;
Label_p3.Y = (int)(Label_p3.Y * Config.Cam_Pixel_Y_Ratio) + Config.Label_Y_P3; Label_p3.Y = (int)(Label_p3.Y * Config.Cam_Pixel_Y_Ratio) + Config.Label_Y_P3;
LabelMoveInfo.log($"计算贴标像素点位为{p},轴点位为{Label_p3},角度{labelAngle},R轴{labelAxisPos},盘宽{LabelMoveInfo.MoveParam.PlateW}"); LabelMoveInfo.log($"计算贴标像素点位为{p},轴点位为{Label_p3},角度{labelAngle},R轴{labelAxisPos},盘宽{LabelMoveInfo.MoveParam.PlateW}");
LabelMoveInfo.NextMoveStep(MoveStep.Lbl11); LabelMoveInfo.NextMoveStep(MoveStep.Lbl10_1);
Label_X_Axis.AbsMove(LabelMoveInfo, Label_p3.X, Config.Label_X_P3_speed); Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_speed);
Label_Y_Axis.AbsMove(LabelMoveInfo, Label_p3.Y, Config.Label_Y_P3_speed);
Label_R_Axis.AbsMove(LabelMoveInfo, labelAxisPos, Config.Label_R_P2_speed); Label_R_Axis.AbsMove(LabelMoveInfo, labelAxisPos, Config.Label_R_P2_speed);
Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed); Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed);
LabelMoveInfo.log("Label_X到待机点,Z转到贴标点.");
LabelMoveInfo.log("Label_XYZ转到贴标点."); break;
case MoveStep.Lbl10_1:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl10_2);
Label_Y_Axis.AbsMove(LabelMoveInfo, Label_p3.Y, Config.Label_Y_P3_speed);
LabelMoveInfo.log("Label_Y到贴标点.");
break;
case MoveStep.Lbl10_2:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl11);
Label_X_Axis.AbsMove(LabelMoveInfo, Label_p3.X, Config.Label_X_P3_speed);
LabelMoveInfo.log("Label_X到贴标点.");
break; break;
case MoveStep.Lbl11: case MoveStep.Lbl11:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl12); LabelMoveInfo.NextMoveStep(MoveStep.Lbl12);
......
...@@ -127,8 +127,8 @@ namespace DeviceLibrary ...@@ -127,8 +127,8 @@ namespace DeviceLibrary
break; break;
case MoveStep.L52: case MoveStep.L52:
LeftMoveInfo.NextMoveStep(MoveStep.L53); LeftMoveInfo.NextMoveStep(MoveStep.L53);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW);
IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.HIGH); IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.HIGH);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH, false);
MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftEnd_Check, IO_VALUE.LOW)); MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftEnd_Check, IO_VALUE.LOW));
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
LeftMoveInfo.log($"电滚筒向外滚动"); LeftMoveInfo.log($"电滚筒向外滚动");
...@@ -142,7 +142,7 @@ namespace DeviceLibrary ...@@ -142,7 +142,7 @@ namespace DeviceLibrary
break; break;
case MoveStep.L54: case MoveStep.L54:
LeftMoveInfo.NextMoveStep(MoveStep.REND); LeftMoveInfo.NextMoveStep(MoveStep.REND);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH, false, 500); IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.HIGH, false, 500);
LeftMoveInfo.log($"电滚停止"); LeftMoveInfo.log($"电滚停止");
break; break;
//} //}
...@@ -162,9 +162,9 @@ namespace DeviceLibrary ...@@ -162,9 +162,9 @@ namespace DeviceLibrary
case MoveStep.L62: case MoveStep.L62:
LeftMoveInfo.NextMoveStep(MoveStep.L63); LeftMoveInfo.NextMoveStep(MoveStep.L63);
IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.LOW); IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH, false); IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH);
MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftEnd_Check, IO_VALUE.HIGH)); MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftEnd_Check, IO_VALUE.HIGH));
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000)); LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(60000));
LeftMoveInfo.OneWaitCanEndStep = true; LeftMoveInfo.OneWaitCanEndStep = true;
LeftMoveInfo.log($"等待料串到位"); LeftMoveInfo.log($"等待料串到位");
break; break;
......
...@@ -155,8 +155,8 @@ namespace DeviceLibrary ...@@ -155,8 +155,8 @@ namespace DeviceLibrary
break; break;
case MoveStep.R32: case MoveStep.R32:
RightMoveInfo.NextMoveStep(MoveStep.R33); RightMoveInfo.NextMoveStep(MoveStep.R33);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW); IOMove(IO_Type.RightMoto_Run, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false); IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH);
MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightEnd_Check, IO_VALUE.LOW)); MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightEnd_Check, IO_VALUE.LOW));
RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
RightMoveInfo.log($"电滚筒向外滚动"); RightMoveInfo.log($"电滚筒向外滚动");
...@@ -170,7 +170,7 @@ namespace DeviceLibrary ...@@ -170,7 +170,7 @@ namespace DeviceLibrary
break; break;
case MoveStep.R34: case MoveStep.R34:
RightMoveInfo.NextMoveStep(MoveStep.REND); RightMoveInfo.NextMoveStep(MoveStep.REND);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false, 500); IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH, false, 500);
RightMoveInfo.log($"电滚停止"); RightMoveInfo.log($"电滚停止");
break; break;
//} //}
...@@ -189,10 +189,10 @@ namespace DeviceLibrary ...@@ -189,10 +189,10 @@ namespace DeviceLibrary
break; break;
case MoveStep.R42: case MoveStep.R42:
RightMoveInfo.NextMoveStep(MoveStep.R43); RightMoveInfo.NextMoveStep(MoveStep.R43);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH); IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false); IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH);
RightMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightEnd_Check, IO_VALUE.HIGH)); RightMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightEnd_Check, IO_VALUE.HIGH));
RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000)); RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(60000));
RightMoveInfo.OneWaitCanEndStep = true; RightMoveInfo.OneWaitCanEndStep = true;
RightMoveInfo.log($"等待料串到位"); RightMoveInfo.log($"等待料串到位");
break; break;
......
...@@ -13,14 +13,15 @@ namespace DeviceLibrary ...@@ -13,14 +13,15 @@ namespace DeviceLibrary
{ {
public partial class MainMachine : IRobot public partial class MainMachine : IRobot
{ {
public string Name { get; set; } = crc.GetString("Res0036","移载"); public string Name { get; set; } = crc.GetString("Res0036", "移载");
private bool _canRunning=true; private bool _canRunning = true;
public bool canRunning public bool canRunning
{ {
get { return _canRunning; } get { return _canRunning; }
set set
{ {
if (_canRunning != value) { if (_canRunning != value)
{
Msg.setlogones(); Msg.setlogones();
} }
_canRunning = value; _canRunning = value;
...@@ -69,20 +70,21 @@ namespace DeviceLibrary ...@@ -69,20 +70,21 @@ namespace DeviceLibrary
public MainMachine(Robot_Config _config) { public MainMachine(Robot_Config _config)
{
Config = _config; Config = _config;
RightMoveInfo = new MoveInfo(crc.GetString("Res0039","右侧取料")); RightMoveInfo = new MoveInfo(crc.GetString("Res0039", "右侧取料"));
RightMoveInfo.SetStateDelegate(RightState); RightMoveInfo.SetStateDelegate(RightState);
MiddleMoveInfo = new MoveInfo(crc.GetString("Res0042","移栽")); MiddleMoveInfo = new MoveInfo(crc.GetString("Res0042", "移栽"));
MiddleMoveInfo.SetStateDelegate(MiddleState); MiddleMoveInfo.SetStateDelegate(MiddleState);
LeftMoveInfo = new MoveInfo(crc.GetString("Res0051","左侧放料")); LeftMoveInfo = new MoveInfo(crc.GetString("Res0051", "左侧放料"));
LeftMoveInfo.SetStateDelegate(LeftState); LeftMoveInfo.SetStateDelegate(LeftState);
LabelMoveInfo = new MoveInfo(crc.GetString("Res0052","贴标")); LabelMoveInfo = new MoveInfo(crc.GetString("Res0052", "贴标"));
LabelMoveInfo.SetStateDelegate(LabelState); LabelMoveInfo.SetStateDelegate(LabelState);
ResetMoveInfo = new MoveInfo(crc.GetString("Res0053","重置")); ResetMoveInfo = new MoveInfo(crc.GetString("Res0053", "重置"));
#region 初始化led #region 初始化led
AlarmLed = new Led(Config.DOList[IO_Type.Alarm_HddLed].GetIOAddr()); AlarmLed = new Led(Config.DOList[IO_Type.Alarm_HddLed].GetIOAddr());
...@@ -106,36 +108,37 @@ namespace DeviceLibrary ...@@ -106,36 +108,37 @@ namespace DeviceLibrary
Take_Middle_Axis.interference += Take_Middle_Axis_interference; Take_Middle_Axis.interference += Take_Middle_Axis_interference;
electricClamp = RobotManage.electricGripper; electricClamp = RobotManage.electricGripper;
AlarmBuzzer.SetOnOffAction(() =>{ IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.HIGH); }, () => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.LOW); }); AlarmBuzzer.SetOnOffAction(() => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.HIGH); }, () => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.LOW); });
InitPrint(); InitPrint();
LedProcessInit(); LedProcessInit();
} }
private (bool,string) Take_Middle_Axis_interference(int from, int to) private (bool, string) Take_Middle_Axis_interference(int from, int to)
{ {
if (to > from) if (to > from)
{ {
if (Label_Y_Axis.GetAclPosition() > Config.Label_Y_P2 + Label_Y_Axis.Config.CanErrorCountMax) if (Label_Y_Axis.GetAclPosition() > Config.Label_Y_P2 + Label_Y_Axis.Config.CanErrorCountMax)
{ {
return (true,crc.GetString("Res0054","可能与贴标Y轴干涉")); return (true, crc.GetString("Res0054", "可能与贴标Y轴干涉"));
} }
} }
return (false,""); return (false, "");
} }
private (bool, string) Label_Y_Axis_interference(int from, int to) private (bool, string) Label_Y_Axis_interference(int from, int to)
{ {
if (to > from) if (to > from)
{ {
if (Take_Middle_Axis.GetAclPosition() > Math.Max(Config.Take_Middle_P1, Config.Take_Middle_P2) + Take_Middle_Axis.Config.CanErrorCountMax) { if (Take_Middle_Axis.GetAclPosition() > Math.Max(Config.Take_Middle_P1, Config.Take_Middle_P2) + Take_Middle_Axis.Config.CanErrorCountMax)
return (true, crc.GetString("Res0055","可能与旋转轴干涉")); ; {
return (true, crc.GetString("Res0055", "可能与旋转轴干涉")); ;
} }
} }
var Label_Z_Pos = Label_Z_Axis.GetAclPosition(); var Label_Z_Pos = Label_Z_Axis.GetAclPosition();
if (Label_Z_Pos>Math.Max(Config.Label_Z_P2,Config.Label_Z_P4)+ Label_Z_Axis.Config.CanErrorCountMax) if (Label_Z_Pos > Math.Max(Config.Label_Z_P2, Config.Label_Z_P4) + Label_Z_Axis.Config.CanErrorCountMax)
return (true, crc.GetString("Res0056","可能与贴标Z轴干涉")); ; return (true, crc.GetString("Res0056", "可能与贴标Z轴干涉")); ;
return (false, ""); return (false, "");
} }
...@@ -143,10 +146,12 @@ namespace DeviceLibrary ...@@ -143,10 +146,12 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 整机启动变量,设置为false后将退出线程,只在停止时调用 /// 整机启动变量,设置为false后将退出线程,只在停止时调用
/// </summary> /// </summary>
bool mstart=true; bool mstart = true;
public void Run() { public void Run()
{
mstart = true; mstart = true;
while (mstart) { while (mstart)
{
try try
{ {
canRunning = DeviceCheck(); canRunning = DeviceCheck();
...@@ -176,7 +181,8 @@ namespace DeviceLibrary ...@@ -176,7 +181,8 @@ namespace DeviceLibrary
Msg.add(ex.ToString(), MsgLevel.warning); Msg.add(ex.ToString(), MsgLevel.warning);
Msg.setlogones(); Msg.setlogones();
} }
finally { finally
{
ProcessMsgEvent?.Invoke(Msg.get()); ProcessMsgEvent?.Invoke(Msg.get());
//ProcessMoveinfoEvent?.Invoke(MoveInfo.List); //ProcessMoveinfoEvent?.Invoke(MoveInfo.List);
Msg.clear(); Msg.clear();
...@@ -184,7 +190,8 @@ namespace DeviceLibrary ...@@ -184,7 +190,8 @@ namespace DeviceLibrary
} }
LogUtil.info("主线程已退出."); LogUtil.info("主线程已退出.");
} }
public void Stop() { public void Stop()
{
mstart = false; mstart = false;
Thread.Sleep(300); Thread.Sleep(300);
Alarm(AlarmType.None); Alarm(AlarmType.None);
...@@ -193,7 +200,8 @@ namespace DeviceLibrary ...@@ -193,7 +200,8 @@ namespace DeviceLibrary
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW); IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW);
IOMove(IO_Type.LabelCylinder_Work, IO_VALUE.LOW); IOMove(IO_Type.LabelCylinder_Work, IO_VALUE.LOW);
} }
public void BeginHomeReset(bool firstRun=false) { public void BeginHomeReset(bool firstRun = false)
{
if (!firstRun) if (!firstRun)
{ {
StopMove(); StopMove();
...@@ -223,7 +231,7 @@ namespace DeviceLibrary ...@@ -223,7 +231,7 @@ namespace DeviceLibrary
Right_Batch_Axis.HomeMove(ResetMoveInfo); Right_Batch_Axis.HomeMove(ResetMoveInfo);
electricClamp.HomeReset(); electricClamp.HomeReset();
break; break;
case MoveStep.H02_HomeReset : case MoveStep.H02_HomeReset:
ResetMoveInfo.NextMoveStep(MoveStep.H03_HomeReset); ResetMoveInfo.NextMoveStep(MoveStep.H03_HomeReset);
Label_R_Axis.HomeMove(ResetMoveInfo); Label_R_Axis.HomeMove(ResetMoveInfo);
ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500)); ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
...@@ -258,9 +266,20 @@ namespace DeviceLibrary ...@@ -258,9 +266,20 @@ namespace DeviceLibrary
ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
break; break;
case MoveStep.H07_HomeReset: case MoveStep.H07_HomeReset:
ResetMoveInfo.NextMoveStep(MoveStep.HEND_HomeReset); ResetMoveInfo.NextMoveStep(MoveStep.H08_HomeReset);
Take_Middle_Axis.AbsMove(ResetMoveInfo, Config.Take_Middle_P1, Config.Take_Middle_P1_speed); Take_Middle_Axis.AbsMove(ResetMoveInfo, Config.Take_Middle_P1, Config.Take_Middle_P1_speed);
ResetMoveInfo.log("正在回原 进出料口滚筒正转10秒");
IOMove(IO_Type.LeftMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.HIGH);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH);
ResetMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
break;
case MoveStep.H08_HomeReset:
ResetMoveInfo.NextMoveStep(MoveStep.HEND_HomeReset);
ResetMoveInfo.log("正在回原 阻挡气缸判断"); ResetMoveInfo.log("正在回原 阻挡气缸判断");
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.LOW);
if (IOManager.IOValue(IO_Type.LeftEnd_Check) == IO_VALUE.LOW) if (IOManager.IOValue(IO_Type.LeftEnd_Check) == IO_VALUE.LOW)
{ {
CylinderMove(ResetMoveInfo, IO_Type.LeftStopUP, IO_Type.LeftStopDown); CylinderMove(ResetMoveInfo, IO_Type.LeftStopUP, IO_Type.LeftStopDown);
...@@ -283,18 +302,20 @@ namespace DeviceLibrary ...@@ -283,18 +302,20 @@ namespace DeviceLibrary
break; break;
} }
} }
public bool IgnoreSafecheck=false; public bool IgnoreSafecheck = false;
public bool IgnoreGratingSignal = false; public bool IgnoreGratingSignal = false;
bool lastSafeCheckStatus = true; bool lastSafeCheckStatus = true;
bool SafeCheck() { bool SafeCheck()
{
bool ok = true; bool ok = true;
if (UserPause) if (UserPause)
{ {
Msg.add(crc.GetString("Res0057","用户暂停"), MsgLevel.warning); Msg.add(crc.GetString("Res0057", "用户暂停"), MsgLevel.warning);
DeviceSuddenStop(); DeviceSuddenStop();
ok = false; ok = false;
}else if (IOValue(IO_Type.GratingSignal_Check).Equals(IO_VALUE.LOW)) }
else if (IOValue(IO_Type.GratingSignal_Check).Equals(IO_VALUE.LOW))
{ {
if (!IgnoreSafecheck && !IgnoreGratingSignal if (!IgnoreSafecheck && !IgnoreGratingSignal
&& IOValue(IO_Type.RightCar_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.RightCar_Check).Equals(IO_VALUE.LOW)
...@@ -303,17 +324,17 @@ namespace DeviceLibrary ...@@ -303,17 +324,17 @@ namespace DeviceLibrary
ok = false; ok = false;
DeviceSuddenStop(); DeviceSuddenStop();
} }
Msg.add(crc.GetString("Res0058","安全光栅被遮挡") + (ok ? crc.GetString("Res0061","[已忽略]") : ""), MsgLevel.warning); Msg.add(crc.GetString("Res0058", "安全光栅被遮挡") + (ok ? crc.GetString("Res0061", "[已忽略]") : ""), MsgLevel.warning);
} }
if (IOValue(IO_Type.HasNgBox).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.HasNgBox).Equals(IO_VALUE.LOW))
{ {
Msg.add(crc.GetString("Res0062","没有检测到NG料箱"), MsgLevel.warning); Msg.add(crc.GetString("Res0062", "没有检测到NG料箱"), MsgLevel.warning);
ok = false; ok = false;
} }
if (IOValue(IO_Type.HasPrinter).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.HasPrinter).Equals(IO_VALUE.LOW))
{ {
Msg.add(crc.GetString("Res0063","没有检测打印机"), MsgLevel.warning); Msg.add(crc.GetString("Res0063", "没有检测打印机"), MsgLevel.warning);
ok = false; ok = false;
} }
if (IOValue(IO_Type.LeftBackDoor_Check).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.LeftBackDoor_Check).Equals(IO_VALUE.LOW))
...@@ -323,7 +344,7 @@ namespace DeviceLibrary ...@@ -323,7 +344,7 @@ namespace DeviceLibrary
ok = false; ok = false;
DeviceSuddenStop(); DeviceSuddenStop();
} }
Msg.add(crc.GetString("Res0064","左后门没有关闭") + (ok ? crc.GetString("Res0061","[已忽略]") : ""), MsgLevel.warning); Msg.add(crc.GetString("Res0064", "左后门没有关闭") + (ok ? crc.GetString("Res0061", "[已忽略]") : ""), MsgLevel.warning);
} }
if (IOValue(IO_Type.RightBackDoor_Check).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.RightBackDoor_Check).Equals(IO_VALUE.LOW))
{ {
...@@ -332,13 +353,14 @@ namespace DeviceLibrary ...@@ -332,13 +353,14 @@ namespace DeviceLibrary
ok = false; ok = false;
DeviceSuddenStop(); DeviceSuddenStop();
} }
Msg.add(crc.GetString("Res0065","右后门没有关闭") + (ok ? crc.GetString("Res0061","[已忽略]") : ""), MsgLevel.warning); Msg.add(crc.GetString("Res0065", "右后门没有关闭") + (ok ? crc.GetString("Res0061", "[已忽略]") : ""), MsgLevel.warning);
} }
lastSafeCheckStatus = ok; lastSafeCheckStatus = ok;
return ok; return ok;
} }
void DeviceSuddenStop() { void DeviceSuddenStop()
{
if (lastSafeCheckStatus) if (lastSafeCheckStatus)
{ {
//lastSafeCheckStatus = false; //lastSafeCheckStatus = false;
...@@ -359,22 +381,24 @@ namespace DeviceLibrary ...@@ -359,22 +381,24 @@ namespace DeviceLibrary
DateTime lastAirCloseTime = DateTime.MinValue; DateTime lastAirCloseTime = DateTime.MinValue;
internal DateTime checkAlarmTime = DateTime.Now; internal DateTime checkAlarmTime = DateTime.Now;
public bool DeviceCheck() { public bool DeviceCheck()
{
bool ok = true; bool ok = true;
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
Alarm(AlarmType.SuddenStop); Alarm(AlarmType.SuddenStop);
Msg.add(crc.GetString("Res0066","急停中"), MsgLevel.warning); Msg.add(crc.GetString("Res0066", "急停中"), MsgLevel.warning);
ok = false; ok = false;
} }
else if (alarmType == AlarmType.SuddenStop) { else if (alarmType == AlarmType.SuddenStop)
{
//if (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.Left_BTN).Equals(IO_VALUE.HIGH)) //if (IOValue(IO_Type.Right_BTN).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.Left_BTN).Equals(IO_VALUE.HIGH))
//{ //{
// Alarm(AlarmType.None); // Alarm(AlarmType.None);
//} //}
//else //else
{ {
Msg.add(crc.GetString("Res0067","系统需要重置"), MsgLevel.warning); Msg.add(crc.GetString("Res0067", "系统需要重置"), MsgLevel.warning);
ok = false; ok = false;
} }
} }
...@@ -387,13 +411,14 @@ namespace DeviceLibrary ...@@ -387,13 +411,14 @@ namespace DeviceLibrary
if (span.TotalSeconds > RobotManage.Config.AirCheckSeconds) if (span.TotalSeconds > RobotManage.Config.AirCheckSeconds)
{ {
ok = false; ok = false;
Msg.add(crc.GetString("Res0068","气压不足"), MsgLevel.warning); Msg.add(crc.GetString("Res0068", "气压不足"), MsgLevel.warning);
} }
} }
else { else
{
lastAirCloseTime = DateTime.MinValue; lastAirCloseTime = DateTime.MinValue;
} }
if (alarmType!=AlarmType.SuddenStop) if (alarmType != AlarmType.SuddenStop)
{ {
TimeSpan span = DateTime.Now - checkAlarmTime; TimeSpan span = DateTime.Now - checkAlarmTime;
//在回原点,复位,出入库时,检测报警间隔减小 //在回原点,复位,出入库时,检测报警间隔减小
......
...@@ -18,6 +18,7 @@ namespace DeviceLibrary ...@@ -18,6 +18,7 @@ namespace DeviceLibrary
H05_HomeReset, H05_HomeReset,
H06_HomeReset, H06_HomeReset,
H07_HomeReset, H07_HomeReset,
H08_HomeReset,
HEND_HomeReset, HEND_HomeReset,
//右侧常规扫码流程 //右侧常规扫码流程
...@@ -101,10 +102,13 @@ namespace DeviceLibrary ...@@ -101,10 +102,13 @@ namespace DeviceLibrary
Lbl_Printted, Lbl_Printted,
Lbl01, Lbl01,
Lbl02, Lbl02,
Lbl02_1,
Lbl03, Lbl03,
Lbl04, Lbl04,
Lbl05, Lbl05,
Lbl10, Lbl10,
Lbl10_1,
Lbl10_2,
Lbl11, Lbl11,
Lbl12, Lbl12,
Lbl13, Lbl13,
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!