Commit 10a4dfe6 张东亮

回原优化,agv交互测试ok

1 个父辈 a718ffd1
......@@ -26,7 +26,7 @@ namespace AutoScanAndLabel
GC.KeepAlive(t1);
RobotManage.LoadFinishEvent += RobotManage_LoadFinishEvent;
}
private void RobotManage_LoadFinishEvent(bool state, string msg)
......@@ -55,7 +55,7 @@ namespace AutoScanAndLabel
DIControlList.Clear();
DOControlList.Clear();
int roleindex = 0;
this.tableLayoutPanel1.Controls.Clear();
this.tableLayoutPanel1.Controls.Clear();
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.RowCount = RobotManage.Config.DIList.Count;
foreach (ConfigIO ioValue in RobotManage.Config.DIList.Values)
......@@ -237,8 +237,8 @@ namespace AutoScanAndLabel
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_Run, IO_VALUE.HIGH);
}
private void btn左侧电滚筒停止_Click(object sender, EventArgs e)
{
......@@ -247,14 +247,14 @@ namespace AutoScanAndLabel
}
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);
}
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.HIGH);
IOManager.IOMove(IO_Type.RightMoto_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH);
}
private void btn右侧电滚筒停止_Click(object sender, EventArgs e)
......
......@@ -9,6 +9,7 @@ using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
......@@ -83,7 +84,8 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
// Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv();
......@@ -93,7 +95,8 @@ namespace AutoScanAndLabel.UC
}
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
ToStandby();
//通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去
......@@ -127,18 +130,21 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf)
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
//通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
ToStandby();
InCalling = false;
......@@ -178,7 +184,7 @@ namespace AutoScanAndLabel.UC
}
private bool WaitMissionOk()
{
return curState != null && curState.MissionResult.Equals(MissionResult.任务执行成功);
return WaitMissionOk((uint)AGVManager.CurMissionId);
}
private void button_Leftleavefull_Click(object sender, EventArgs e)
{
......@@ -202,19 +208,22 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while(!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf)
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
//通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去
//等待agv到位
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
ToStandby();
InCalling = false;
......@@ -246,18 +255,21 @@ namespace AutoScanAndLabel.UC
//等待agv到位
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf)
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
//通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去
while (!WaitMissionOk())
{
Task.Delay(1000).Wait();
//Task.Delay(1000).Wait();
Thread.Sleep(1000);
}
ToStandby();
InCalling = false;
......
......@@ -57,9 +57,9 @@ namespace DL.StandardRobot
{
if (data.Length >= 240)
{
preState.RunMissionId = GetUInt32(new byte[] { data[195], data[194], data[193], data[192] });
preState.MissionRunState = (MissionRunState)GetUInt16(data[197], data[196]);
preState.MissionResult = (MissionResult)GetUInt16(data[199], data[198]);
preState.RunMissionId = GetUInt32(new byte[] { data[192], data[193], data[194], data[195] });
preState.MissionRunState = (MissionRunState)GetUInt16(data[196], data[197]);
preState.MissionResult = (MissionResult)GetUInt16(data[198], data[199]);
if (!missionState.Equals(preState))
{
missionState.RunMissionId = preState.RunMissionId;
......
......@@ -68,14 +68,13 @@ namespace DL.Com.TCP
{
try
{
Online = tcpClient.IsConnected();
if (!Online)
{
if (IsAutoReconnect)
{
bool rtn = tcpClient.Connect(IP, Port, ReceiveMessage);
online = tcpClient.Connect(IP, Port, ReceiveMessage);
Thread.Sleep(1000);
if(rtn)
if (online)
{
RequestInfo requestInfo = GetPeek();
if (requestInfo != null && requestInfo.Requested)
......@@ -371,12 +370,19 @@ namespace DL.Com.TCP
RequestInfo requestInfo = GetPeek();
if (requestInfo != null && (!requestInfo.Requested || requestInfo.RequestTimeOut))
{
bool rtn = tcpClient.Send(GetRequestBytes(requestInfo.FunCode, requestInfo.StartAddr, requestInfo.CountOrValue, requestInfo.EquipAddr, requestInfo.Values));
requestInfo.SetRequestState(rtn);
if (!GetFunction(requestInfo.FunCode).Equals(RegisterFunction.Read))
LogUtil.Info($"Request {requestInfo}");
else
LogUtil.Debug($"Request {requestInfo}");
try
{
bool rtn = tcpClient.Send(GetRequestBytes(requestInfo.FunCode, requestInfo.StartAddr, requestInfo.CountOrValue, requestInfo.EquipAddr, requestInfo.Values));
requestInfo.SetRequestState(rtn);
if (!GetFunction(requestInfo.FunCode).Equals(RegisterFunction.Read))
LogUtil.Info($"Request {requestInfo}");
else
LogUtil.Debug($"Request {requestInfo}");
}
catch {
online = false;
}
}
}
}
......
......@@ -32,8 +32,10 @@ namespace DeviceLibrary
{
robot.MissionSateChanged -= changedEventHandler;
}
public static int CurMissionId=0;
public static void AddMission(int id)
{
CurMissionId = id;
robot.AddMission(id);
}
public static bool IsConnected()
......
......@@ -14,7 +14,7 @@ namespace DeviceLibrary
{
partial class MainMachine
{
Point Label_p3;
void LabelProcess()
{
if (CheckWait(LabelMoveInfo))
......@@ -23,12 +23,21 @@ namespace DeviceLibrary
switch (LabelMoveInfo.MoveStep)
{
case MoveStep.Lbl01:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl02);
Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_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);
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);
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_R_Axis.AbsMove(LabelMoveInfo, Config.Label_R_P2, Config.Label_Z_P2_speed);
LabelMoveInfo.log("Label_XYZ转到取标点,等待标签打印完毕");
LabelMoveInfo.log("Label_X转到取标点,等待标签打印完毕");
break;
case MoveStep.Lbl_WaitPrint:
if (LastPrintStatus == Asa.PrintLabel.PrinterStatus.Idle) {
......@@ -89,19 +98,27 @@ namespace DeviceLibrary
//计算贴标角度的脉冲值
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.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.NextMoveStep(MoveStep.Lbl10_1);
Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_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);
LabelMoveInfo.log("Label_X到待机点,Z转到贴标点.");
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);
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_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed);
LabelMoveInfo.log("Label_XYZ转到贴标点.");
LabelMoveInfo.log("Label_X到贴标点.");
break;
case MoveStep.Lbl11:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl12);
......
......@@ -127,8 +127,8 @@ namespace DeviceLibrary
break;
case MoveStep.L52:
LeftMoveInfo.NextMoveStep(MoveStep.L53);
IOMove(IO_Type.LeftMoto_Run, IO_VALUE.LOW);
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));
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
LeftMoveInfo.log($"电滚筒向外滚动");
......@@ -142,7 +142,7 @@ namespace DeviceLibrary
break;
case MoveStep.L54:
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($"电滚停止");
break;
//}
......@@ -162,9 +162,9 @@ namespace DeviceLibrary
case MoveStep.L62:
LeftMoveInfo.NextMoveStep(MoveStep.L63);
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));
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000));
LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(60000));
LeftMoveInfo.OneWaitCanEndStep = true;
LeftMoveInfo.log($"等待料串到位");
break;
......
......@@ -155,8 +155,8 @@ namespace DeviceLibrary
break;
case MoveStep.R32:
RightMoveInfo.NextMoveStep(MoveStep.R33);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH);
MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.RightEnd_Check, IO_VALUE.LOW));
RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
RightMoveInfo.log($"电滚筒向外滚动");
......@@ -170,7 +170,7 @@ namespace DeviceLibrary
break;
case MoveStep.R34:
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($"电滚停止");
break;
//}
......@@ -189,10 +189,10 @@ namespace DeviceLibrary
break;
case MoveStep.R42:
RightMoveInfo.NextMoveStep(MoveStep.R43);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false);
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.LOW);
IOMove(IO_Type.RightMoto_Run, 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.log($"等待料串到位");
break;
......
......@@ -18,6 +18,7 @@ namespace DeviceLibrary
H05_HomeReset,
H06_HomeReset,
H07_HomeReset,
H08_HomeReset,
HEND_HomeReset,
//右侧常规扫码流程
......@@ -101,10 +102,13 @@ namespace DeviceLibrary
Lbl_Printted,
Lbl01,
Lbl02,
Lbl02_1,
Lbl03,
Lbl04,
Lbl05,
Lbl10,
Lbl10_1,
Lbl10_2,
Lbl11,
Lbl12,
Lbl13,
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!