Commit 517829cb 张东亮

添加与服务器交互功能

1 个父辈 22bccea6
文件属性发生变化
文件属性发生变化
......@@ -20,7 +20,8 @@
<add key="ConfigPath_TrayList" value="\LineConfig\TrayList.data" />
<add key="ImagePath" value="\Images\" />
<add key="UseBuzzer" value="0" />
<add key="Line_CID" value="01" />
<!--获取库位的料仓cid列表;多个用,分割-->
<add key="Line_CID" value="01,02,03,04,05,06" />
<!--end one store config-->
<!--二维码类型列表配置,用#分割,一维码=Barcode 二维码: QR Code#Data Matrix ECC 200#Micro QR Code-->
<add key="CodeType" value="Data Matrix ECC 200#QR Code" />
......@@ -63,6 +64,8 @@
<add key="TrayInRobotInfo" value="" />
<!--出料口上的料盘信息-->
<add key="TrayInOutletInfo" value="" />
<!--入料口上的料盘信息-->
<add key="TrayInInletInfo" value="" />
<!--夹爪夹紧时忽略的料号列表,多个用#分割-->
<add key="PNList" value="3402021720#3402021721#3402021100#3402021101#3402021102#3402021103#3402021104#3402021105#3402021106#3402021107#3402021108#3402021109#3402021112#3402021122" />
</appSettings>
......
......@@ -36,9 +36,12 @@
this.tabPage2 = new System.Windows.Forms.TabPage();
this.panel1 = new System.Windows.Forms.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.robotDataControl = new OnlineStore.XLRStore.ReelDataControl();
this.robotControl = new OnlineStore.XLRStore.EquipControl();
this.inletControl = new OnlineStore.XLRStore.EquipControl();
this.outletControl = new OnlineStore.XLRStore.EquipControl();
this.outletDataControl = new OnlineStore.XLRStore.ReelDataControl();
this.inletDataControl = new OnlineStore.XLRStore.ReelDataControl();
this.ngboxDataControl = new OnlineStore.XLRStore.ReelDataControl();
this.lblStatus = new System.Windows.Forms.Label();
this.lblWarnMsg = new System.Windows.Forms.Label();
......@@ -154,20 +157,37 @@
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.robotDataControl, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.robotControl, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.inletControl, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.outletControl, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.ngboxDataControl, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.outletDataControl, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.inletDataControl, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.ngboxDataControl, 1, 3);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(988, 605);
this.tableLayoutPanel1.TabIndex = 0;
//
// robotDataControl
//
this.robotDataControl.BackColor = System.Drawing.Color.White;
this.robotDataControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.robotDataControl.ColorStatus = System.Drawing.Color.White;
this.robotDataControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.robotDataControl.Location = new System.Drawing.Point(3, 456);
this.robotDataControl.Name = "robotDataControl";
this.robotDataControl.ReelText = "机器人夹爪物料信息";
this.robotDataControl.Size = new System.Drawing.Size(488, 146);
this.robotDataControl.TabIndex = 8;
//
// robotControl
//
this.robotControl.BackColor = System.Drawing.Color.White;
......@@ -179,7 +199,7 @@
this.robotControl.Location = new System.Drawing.Point(3, 3);
this.robotControl.MoveInfo = "暂无出入库";
this.robotControl.Name = "robotControl";
this.robotControl.Size = new System.Drawing.Size(982, 195);
this.robotControl.Size = new System.Drawing.Size(982, 145);
this.robotControl.TabIndex = 0;
this.robotControl.WorkStatus = "暂未启动";
//
......@@ -190,10 +210,10 @@
this.inletControl.ColorStatus = System.Drawing.Color.White;
this.inletControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.inletControl.EquipText = "入料口";
this.inletControl.Location = new System.Drawing.Point(3, 204);
this.inletControl.Location = new System.Drawing.Point(3, 154);
this.inletControl.MoveInfo = "暂无出入库";
this.inletControl.Name = "inletControl";
this.inletControl.Size = new System.Drawing.Size(488, 195);
this.inletControl.Size = new System.Drawing.Size(488, 145);
this.inletControl.TabIndex = 1;
this.inletControl.WorkStatus = "暂未启动";
//
......@@ -204,24 +224,48 @@
this.outletControl.ColorStatus = System.Drawing.Color.White;
this.outletControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.outletControl.EquipText = "出料口";
this.outletControl.Location = new System.Drawing.Point(497, 204);
this.outletControl.Location = new System.Drawing.Point(497, 154);
this.outletControl.MoveInfo = "暂无出入库";
this.outletControl.Name = "outletControl";
this.outletControl.Size = new System.Drawing.Size(488, 195);
this.outletControl.Size = new System.Drawing.Size(488, 145);
this.outletControl.TabIndex = 2;
this.outletControl.WorkStatus = "暂未启动";
//
// outletDataControl
//
this.outletDataControl.BackColor = System.Drawing.Color.White;
this.outletDataControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.outletDataControl.ColorStatus = System.Drawing.Color.White;
this.outletDataControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.outletDataControl.Location = new System.Drawing.Point(497, 305);
this.outletDataControl.Name = "outletDataControl";
this.outletDataControl.ReelText = "出料口物料信息";
this.outletDataControl.Size = new System.Drawing.Size(488, 145);
this.outletDataControl.TabIndex = 5;
//
// inletDataControl
//
this.inletDataControl.BackColor = System.Drawing.Color.White;
this.inletDataControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.inletDataControl.ColorStatus = System.Drawing.Color.White;
this.inletDataControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.inletDataControl.Location = new System.Drawing.Point(3, 305);
this.inletDataControl.Name = "inletDataControl";
this.inletDataControl.ReelText = "入料口物料信息";
this.inletDataControl.Size = new System.Drawing.Size(488, 145);
this.inletDataControl.TabIndex = 7;
//
// ngboxDataControl
//
this.ngboxDataControl.BackColor = System.Drawing.Color.White;
this.ngboxDataControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ngboxDataControl.ColorStatus = System.Drawing.Color.White;
this.ngboxDataControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.ngboxDataControl.Location = new System.Drawing.Point(3, 405);
this.ngboxDataControl.Location = new System.Drawing.Point(497, 456);
this.ngboxDataControl.Name = "ngboxDataControl";
this.ngboxDataControl.ReelText = "NG箱物料信息";
this.ngboxDataControl.Size = new System.Drawing.Size(488, 197);
this.ngboxDataControl.TabIndex = 3;
this.ngboxDataControl.Size = new System.Drawing.Size(488, 146);
this.ngboxDataControl.TabIndex = 6;
//
// lblStatus
//
......@@ -618,6 +662,9 @@
private EquipControl robotControl;
private EquipControl inletControl;
private EquipControl outletControl;
private ReelDataControl robotDataControl;
private ReelDataControl outletDataControl;
private ReelDataControl inletDataControl;
private ReelDataControl ngboxDataControl;
}
}
......
......@@ -122,6 +122,9 @@ namespace OnlineStore.XLRStore
ShowNGState();
ngboxDataControl.linkClear.Click += LinkClear_ClickA1;
inletDataControl.linkClear.Click += LinkClear_Click;
outletDataControl.linkClear.Click += LinkClear_Click1;
robotDataControl.linkClear.Click += LinkClear_Click2;
robotControl.InitData(StoreManager.Client.robotEquip.Name);
inletControl.InitData(StoreManager.Client.inletEquip.Name);
outletControl.InitData(StoreManager.Client.outletEquip.Name);
......@@ -131,7 +134,63 @@ namespace OnlineStore.XLRStore
outletControl.DoubleClick += OutletControl_DoubleClick;
LoadOk = true;
}
/// <summary>
/// 机器人夹爪清除料盘按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
private void LinkClear_Click2(object sender, EventArgs e)
{
if (BufferDataManager.TrayInRobotInfo == null)
{
return;
}
DialogResult result = MessageBox.Show("确定清除机器人夹爪上的物料缓存?", "", MessageBoxButtons.OKCancel);
if (result.Equals(DialogResult.OK))
{
BufferDataManager.TrayInRobotInfo = null;
LogUtil.info(Name + "清除机器人夹爪上的物料缓存");
}
}
/// <summary>
/// 出料口清除料盘按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
private void LinkClear_Click1(object sender, EventArgs e)
{
if (BufferDataManager.TrayInOutletInfo == null)
{
return;
}
DialogResult result = MessageBox.Show("确定清除出料口的物料缓存?", "", MessageBoxButtons.OKCancel);
if (result.Equals(DialogResult.OK))
{
BufferDataManager.TrayInOutletInfo = null;
LogUtil.info(Name + "清除出料口的物料缓存");
}
}
/// <summary>
/// 入料口清除料盘按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
private void LinkClear_Click(object sender, EventArgs e)
{
if (BufferDataManager.TrayInInletInfo == null)
{
return;
}
DialogResult result = MessageBox.Show("确定清除入料口的物料缓存?", "", MessageBoxButtons.OKCancel);
if (result.Equals(DialogResult.OK))
{
BufferDataManager.TrayInInletInfo = null;
LogUtil.info(Name + "清除入料口的物料缓存");
}
}
private void ShowNGState()
{
......@@ -143,7 +202,32 @@ namespace OnlineStore.XLRStore
{
ngboxDataControl.ShowData("NG箱物料信息", BufferDataManager.TraysInNGBoxInfo, IO_VALUE.HIGH);
}
if (BufferDataManager.TrayInInletInfo == null)
{
ngboxDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.LOW);
}
else
{
ngboxDataControl.ShowData("入料口物料信息", BufferDataManager.TrayInInletInfo, IO_VALUE.HIGH);
}
if (BufferDataManager.TrayInOutletInfo == null)
{
ngboxDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.LOW);
}
else
{
ngboxDataControl.ShowData("出料口物料信息", BufferDataManager.TrayInOutletInfo, IO_VALUE.HIGH);
}
if (BufferDataManager.TrayInRobotInfo == null)
{
ngboxDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.LOW);
}
else
{
ngboxDataControl.ShowData("机器人夹爪物料信息", BufferDataManager.TrayInRobotInfo, IO_VALUE.HIGH);
}
}
private void OutletControl_DoubleClick(object sender, EventArgs e)
{
tabControl1.SelectedIndex = 3;
......
......@@ -80,6 +80,7 @@
this.lblStoreStatus = new System.Windows.Forms.Label();
this.btnStart = new System.Windows.Forms.Button();
this.btnStop = new System.Windows.Forms.Button();
this.lblrobotTaskInfo = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout();
this.groupBox4.SuspendLayout();
this.groupBox3.SuspendLayout();
......@@ -328,6 +329,7 @@
//
// groupBox6
//
this.groupBox6.Controls.Add(this.lblrobotTaskInfo);
this.groupBox6.Controls.Add(this.lblInoutInfo);
this.groupBox6.Controls.Add(this.lblMoveInfo);
this.groupBox6.Controls.Add(this.lblInstoreList);
......@@ -870,6 +872,17 @@
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// lblrobotTaskInfo
//
this.lblrobotTaskInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblrobotTaskInfo.ForeColor = System.Drawing.Color.Black;
this.lblrobotTaskInfo.Location = new System.Drawing.Point(2, 394);
this.lblrobotTaskInfo.Name = "lblrobotTaskInfo";
this.lblrobotTaskInfo.Size = new System.Drawing.Size(977, 109);
this.lblrobotTaskInfo.TabIndex = 282;
this.lblrobotTaskInfo.Text = "机器人获取任务";
//
// FrmRobotEquip
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
......@@ -973,6 +986,7 @@
private System.Windows.Forms.Label lblValue;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ComboBox cmbBoxAd;
private System.Windows.Forms.Label lblrobotTaskInfo;
}
}
......@@ -241,6 +241,7 @@ namespace OnlineStore.XLRStore
{
lblInoutInfo.Text = "";
}
lblrobotTaskInfo.Text = SServerManager.RobotTaskInfo;
lblMoveInfo.Text = robotEquip.GetMoveStr();//+ "料仓类型:" + (boxBean.Config.IsBigTray.Equals(1) ? "大料盘" : "小料盘");
//string canOut = boxBean.CanOutStore(boxBean.DeviceID) ? "可出库" : "不可出库";
lblStoreStatus.Text = DeviceBase.GetRunStr(robotEquip.runStatus);// + "(" + canOut + ")";
......
......@@ -103,6 +103,7 @@ namespace OnlineStore.Common
public static string TrayInRobotInfo = "TrayInRobotInfo";
public static string TrayInOutletInfo = "TrayInOutletInfo";
public static string TrayInInletInfo = "TrayInInletInfo";
public static string TraysInNGBoxInfo = "TraysInNGBoxInfo";
/// <summary>
/// 禁用光栅
......
......@@ -273,5 +273,7 @@ namespace OnlineStore.Common
public static string executeTime = "executeTime ";
public static string code = "code";
public static string type = "type";
public static string cid = "cid";
}
}
......@@ -9,7 +9,7 @@ PRO,0,IO信号超时时间(秒),IOSingle_TimerOut,15,,,,,,,,,,,,,,
PRO,0,机器人IP,Robot_IP,192.168.102.21,,,,,,,,,,,,,,
PRO,0,料盘高度转换系数,Coeff_Height,0.5,,,,,,,,,,,,,,
PRO,0,料盘宽度转换系数,Coeff_Width,0.5,,,,,,,,,,,,,,
PRO,0,扫码的相机名称(多个用#分隔),ScanCodeCamera,GigE:MV-CE200-10GC (00E70964538),,,,,,,,,,,,,,
PRO,0,扫码的相机名称(多个用#分隔),ScanCodeCamera,GigE:MV-CE200-10GC (00E70964538)#GigE:MV-CE200-10GC (00E70964539),,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,
PRO,0,行走机构_待机点,MoveAxis_P1,0,,,,,,,,,,,,
PRO,0,行走机构_入料口,MoveAxis_P2_Inlet,0,,,,,,,,,,,,
......@@ -76,5 +76,6 @@ DO,1,13寸料盘顶升下降,Inlet_13InchJackDown,9,HC,Y09,,,,,,,,,,,,
DO,2,出料线体顶升上升,Outlet_JackUp,10,HC,Y10,,,,,,,,,,,,
DO,2,出料线体顶升下降,Outlet_JackDown,11,HC,Y11,,,,,,,,,,,,
DO,1,入料线体送料允许,Inlet_AllowFeed,12,HC,Y12,,,,,,,,,,,,
DO,1,入料线体相机光源,Inlet_CamLed,13,HC,Y13,,,,,,,,,,,,
......@@ -195,8 +195,8 @@ namespace OnlineStore.DeviceLibrary
{
if (MoveInfo.MoveType.Equals(MoveType.None) && NoErrorAlarm())
{
if(TrayIsInPosition())
{
if (!TrayIsInPosition() && BufferDataManager.TrayInInletInfo == null)
{
StartInstore(new InOutParam());
}
......
......@@ -154,7 +154,8 @@ namespace OnlineStore.DeviceLibrary
// MoveLog(" " + MoveInfo.SLog + " 原有料盘尺寸:【" + oldPos.PlateW + "X" + oldPos.PlateH + "】服务器返回尺寸【" + LastPosInfo.PlateW + "X" + LastPosInfo.PlateH + "】 ");
//}
MoveInfo.MoveParam.PosInfo = lastPosInfo;
NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, "获取目标仓位成功,等待料盘离开");
NextMoveStep(StepEnum.Inlet_08_WaitTrayLeave, $"获取目标仓位成功【{MoveInfo.MoveParam.PosInfo.ToStr()}】,等待料盘离开");
BufferDataManager.TrayInInletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
AddWaitTrayInPosition(false);
SetCurCmd(RobotEquip.GetCmd_InletUp());
}
......@@ -166,7 +167,6 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.Inlet_08_WaitTrayLeave))
{
NextMoveStep(StepEnum.Inlet_09_WaitRobotInSafe, "料盘离开入料口,等待机器人到安全位置");
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo;
SetCurCmd(RobotEquip.GetCmd_Standby());
AddWaitTime(10000);
MoveInfo.OneWaitCanEndStep=true;
......@@ -203,16 +203,22 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000));
try
{
IOMove(IO_Type.Inlet_CamLed, IO_VALUE.HIGH);
LastCodeList = CodeManager.CameraScan(Config.ScanCodeCamera, Name);
if (LastCodeList.Count <= 0)
{
LastCodeList = CodeManager.CameraScan(Config.ScanCodeCamera, Name);
}
}
catch (Exception ex)
{
LogUtil.error("扫码出错", ex);
}
finally
{
IOMove(IO_Type.Inlet_CamLed, IO_VALUE.LOW);
}
}
string code = CodeManager.ProcessCode(LastCodeList);
......@@ -288,7 +294,7 @@ namespace OnlineStore.DeviceLibrary
Thread.Sleep(ms);
LogUtil.error(Name + "【" + pos.barcode + "】第[" + count + "]次 " + MoveInfo.SLog + " 结果【" + result.Result + "】,等待" + ms + "后重新获取");
}
else if (!result.Msg.Equals(""))
else if (!result.Result.Equals(0))
{
lastPosInfo = result.Param;
LogUtil.error(Name + "【" + pos.barcode + "】第[" + count + "]次 " + MoveInfo.SLog + " 入库NG:" + result.Msg);
......
......@@ -87,7 +87,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.Outlet_04_WaitTrayLeave))
{
NextMoveStep(StepEnum.Outlet_05_JackUp, "料盘离开完成,链条停止,顶升抬起");
NextMoveStep(StepEnum.Outlet_05_JackUp, "料盘离开完成,清除出料口缓存,链条停止,顶升抬起");
BufferDataManager.TrayInOutletInfo = null;
OutletRun(false);
JackUp(true);
AddWaitTrayCheck2(false);
......
......@@ -255,6 +255,14 @@ namespace OnlineStore.DeviceLibrary
if (!runStatus.Equals(RunStatus.Runing))
return;
}
private void CheckInStoreProcess()
{
if (StoreManager.Client.inletEquip.TrayIsInPosition() && BufferDataManager.TrayInInletInfo != null)
{
LogInfo("机器人执行入库【" + BufferDataManager.TrayInInletInfo.ToStr() + "】");
StartExecuctOut(new InOutParam(BufferDataManager.TrayInInletInfo));
}
}
private void ExecuteOutListProcess()
{
try
......@@ -289,6 +297,10 @@ namespace OnlineStore.DeviceLibrary
{
ExecuteOutListProcess();
}
if (runStatus.Equals(RunStatus.Runing))
{
CheckInStoreProcess();
}
BusyMoveProcess();
IOTimeOutProcess();
if (NoErrorAlarm())
......@@ -427,7 +439,7 @@ namespace OnlineStore.DeviceLibrary
{
preNgSig = curNgSig;
curNgSig = IOValue(IO_Type.NGBox_TrayCheck).Equals(IO_VALUE.HIGH);
if(curNgSig==true && preNgSig==false)
if (curNgSig == true && preNgSig == false)
{
BufferDataManager.AddTrayInNGBox(new InOutPosInfo());
}
......
......@@ -45,7 +45,7 @@ namespace OnlineStore.DeviceLibrary
InStore_06_CompressTray();
break;
case StepEnum.InStore_06_CompressTray:
NextMoveStep(StepEnum.InStore_07_ArmBackToP1, "在入料口取料完成,机械臂回待机点");
NextMoveStep(StepEnum.InStore_07_ArmBackToP1, "在入料口取料完成,清除入料口缓存,机械臂回待机点");
InStore_07_ArmBackToP1();
break;
case StepEnum.InStore_07_ArmBackToP1:
......@@ -75,7 +75,10 @@ namespace OnlineStore.DeviceLibrary
InStore_11_ReleaseTray();
break;
case StepEnum.InStore_11_ReleaseTray:
NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在仓门口放料完成,机械臂回待机点");
NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在仓门口放料完成,清除机器人料叉缓存,机械臂回待机点");
//在料仓口口放料完成
BufferDataManager.TrayInRobotInfo = null;
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.BOXDOOR);
InStore_16_ArmBackToP1();
break;
#region NG
......@@ -99,7 +102,10 @@ namespace OnlineStore.DeviceLibrary
InStore_15_ReleaseTray();
break;
case StepEnum.InStore_15_ReleaseTray:
NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在NG箱放料完成,机械臂回待机点");
NextMoveStep(StepEnum.InStore_16_ArmBackToP1, "在NG箱放料完成,清除机器人料叉缓存,机械臂回待机点");
//在料仓口口放料完成
BufferDataManager.TrayInRobotInfo = null;
// UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.BOXDOOR);
InStore_16_ArmBackToP1();
break;
#endregion
......@@ -146,6 +152,10 @@ namespace OnlineStore.DeviceLibrary
}
private void InStore_07_ArmBackToP1()
{
//在入料口取料完成
BufferDataManager.TrayInInletInfo = null;
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.INROBOT);
SendCmd(GetCmd_Standby());
}
private void InStore_08_MoveAxisToStore()
......@@ -197,6 +207,18 @@ namespace OnlineStore.DeviceLibrary
targetIndex = 0;
}
#endregion
/// <summary>
/// 机器人更新任务状态
/// </summary>
/// <param name="barcode"></param>
/// <param name="status"></param>
private void UpdateLocInfo(string barcode,string status)
{
string result=SServerManager.UpdateTrayLoc(barcode, status);
if(!result.Equals(""))
{
SServerManager.UpdateTrayLoc(barcode, status);
}
}
}
}
......@@ -45,7 +45,7 @@ namespace OnlineStore.DeviceLibrary
OutStore_06_CompressTray();
break;
case StepEnum.OutStore_06_CompressTray:
NextMoveStep(StepEnum.OutStore_07_ArmBackToP1, "在仓门口取料完成,机械臂回待机点");
NextMoveStep(StepEnum.OutStore_07_ArmBackToP1, "在仓门口取料完成,添加机器人缓存,机械臂回待机点");
OutStore_07_ArmBackToP1();
break;
case StepEnum.OutStore_07_ArmBackToP1:
......@@ -67,7 +67,7 @@ namespace OnlineStore.DeviceLibrary
OutStore_11_ReleaseTray();
break;
case StepEnum.OutStore_11_ReleaseTray:
NextMoveStep(StepEnum.OutStore_12_ArmBackToP1, "在出料口放料完成,机械臂回待机点");
NextMoveStep(StepEnum.OutStore_12_ArmBackToP1, "在出料口放料完成,清除机器人缓存,机械臂回待机点");
OutStore_12_ArmBackToP1();
break;
case StepEnum.OutStore_12_ArmBackToP1:
......@@ -101,6 +101,9 @@ namespace OnlineStore.DeviceLibrary
}
private void OutStore_07_ArmBackToP1()
{
//添加机器人缓存,并上报任务状态
BufferDataManager.TrayInRobotInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.INROBOT);
SendCmd(GetCmd_Standby());
}
......@@ -127,6 +130,10 @@ namespace OnlineStore.DeviceLibrary
}
private void OutStore_12_ArmBackToP1()
{
//上报任务状态
BufferDataManager.TrayInRobotInfo = null;
BufferDataManager.TrayInOutletInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
UpdateLocInfo(MoveInfo.MoveParam.PosInfo.barcode, TaskStatus.FINISHED);
SendCmd(GetCmd_Standby());
}
#endregion
......
......@@ -109,7 +109,10 @@ namespace OnlineStore.DeviceLibrary
string[] recv = bean.RobotData.RecvMsg.Split(',');
if (recv != null && recv.Length == 2 &&
recv[1].Equals(rtn_done))
{
LogUtil.info($"RobotMoveEnd:[{recv[0]},{recv[1]}]");
return true;
}
}
catch (Exception ex)
{
......@@ -272,7 +275,7 @@ namespace OnlineStore.DeviceLibrary
int targetIndex = 0;
private void MoveAxisToStore()
{
switch (MoveInfo.MoveParam.PosInfo.PosId.Substring(0, 2))
switch (MoveInfo.MoveParam.PosInfo.Cid)
{
case "01":
targetIndex = 1;
......@@ -345,7 +348,7 @@ namespace OnlineStore.DeviceLibrary
startInStoreTime = DateTime.Now;
LogInfo(" 启动入库【" + param.PosInfo.ToStr() + "】 ");
param.MoveP = new LineMoveP(Config, param.PosInfo.PosId);
LogInfo("LoadInoutParam:" + JsonHelper.SerializeObject(param.MoveP));
//LogInfo("LoadInoutParam:" + JsonHelper.SerializeObject(param.MoveP));
MoveInfo.NewMove(MoveType.InStore, param);
SetBoxStatus(DeviceStatus.InStoreExecute, RunStatus.Busy, param.PosInfo);
MoveInfo.NextMoveStep(StepEnum.InStore_01_Wait);
......@@ -376,15 +379,15 @@ namespace OnlineStore.DeviceLibrary
{
lock (outStoreObject)
{
if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.MoveParam.PosInfo.PosId.Equals(param.PosInfo.PosId))
if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.MoveParam.PosInfo.Cid.Equals(param.PosInfo.Cid))
{
LogUtil.error(Name + " 出库命令【" + param.PosInfo.ToStr() + "】重复,【" + MoveInfo.MoveParam.PosInfo.PosId + "】出库执行中");
LogUtil.error(Name + " 出库命令【" + param.PosInfo.ToStr() + "】重复,【" + MoveInfo.MoveParam.PosInfo.Cid + "】出库执行中");
return;
}
List<InOutParam> reviceList = new List<InOutParam>();
reviceList.AddRange(waitOutStoreList);
reviceList = (from m in reviceList where m.PosInfo.PosId.Equals(param.PosInfo.PosId) select m).ToList<InOutParam>();
reviceList = (from m in reviceList where m.PosInfo.Cid.Equals(param.PosInfo.Cid) select m).ToList<InOutParam>();
if (reviceList.Count == 0)
{
LogInfo(" 执行出库【" + param.PosInfo.ToStr() + "】失败,加入等待队列");
......@@ -418,7 +421,7 @@ namespace OnlineStore.DeviceLibrary
SetBoxStatus(DeviceStatus.OutStoreExecute, RunStatus.Busy, param.PosInfo);
MoveInfo.NewMove(MoveType.OutStore, param);
LogInfo("启动出库【" + param.PosInfo.ToStr() + "】 ");
LogInfo("LoadInoutParam:" + JsonHelper.SerializeObject(param.MoveP));
//LogInfo("LoadInoutParam:" + JsonHelper.SerializeObject(param.MoveP));
MoveInfo.NextMoveStep(StepEnum.OutStore_01_Wait);
return true;
......
......@@ -102,7 +102,7 @@ namespace OnlineStore.DeviceLibrary
}
public static List<string> CameraScan(string cameraName, string deviceName, bool findRightCodeBreak = false, int timeOut = 1500)
{
List<string> nameList = new List<string>() { cameraName };
List<string> nameList = cameraName.Split('#').ToList();//new List<string>() { cameraName };
return CameraScan(nameList, deviceName, findRightCodeBreak, timeOut);
}
private static int ScanCount = 0;
......
......@@ -11,6 +11,7 @@ namespace OnlineStore.DeviceLibrary
{
private static InOutPosInfo trayInRobotInfo = null;
private static InOutPosInfo trayInOutletInfo = null;
private static InOutPosInfo trayInInletInfo = null;
private static List<InOutPosInfo> traysInNGBoxInfo = null;
/// <summary>
///机器人夹爪上的料盘信息,null时无料
......@@ -33,6 +34,15 @@ namespace OnlineStore.DeviceLibrary
SaveData(Setting_Init.TrayInOutletInfo, value);
}
}
public static InOutPosInfo TrayInInletInfo
{
get { return trayInInletInfo; }
set
{
trayInInletInfo = value;
SaveData(Setting_Init.TrayInInletInfo, value);
}
}
/// <summary>
/// NG箱里的料盘信息
/// </summary>
......@@ -58,6 +68,7 @@ namespace OnlineStore.DeviceLibrary
TrayInRobotInfo = LoadInoutPosInfo(Setting_Init.TrayInRobotInfo);
TraysInNGBoxInfo = LoadNGBoxPosInfos(Setting_Init.TraysInNGBoxInfo);
TrayInOutletInfo = LoadInoutPosInfo(Setting_Init.TrayInOutletInfo);
TrayInInletInfo = LoadInoutPosInfo(Setting_Init.TrayInInletInfo);
}
private static InOutPosInfo LoadInoutPosInfo(string configStr)
{
......
......@@ -48,10 +48,6 @@ namespace OnlineStore.DeviceLibrary
}
public InOutPosInfo PosInfo { get; set; }
/// <summary>
/// 料叉已取料的信息
/// </summary>
public InOutPosInfo PosInfoBack { get; set; } = null;
public LineMoveP MoveP { get; set; }
/// <summary>
/// 入料机构从哪个料串取料,或出库放到哪个料串
......@@ -88,10 +84,11 @@ namespace OnlineStore.DeviceLibrary
inOut.CreateTime = DateTime.Now;
return inOut;
}
public string Cid { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; private set; }
public DateTime CreateTime { get; set; }
/// <summary>
/// 物品二维码
/// </summary>
......@@ -134,8 +131,7 @@ namespace OnlineStore.DeviceLibrary
public bool singleOut = false;
public string ToStr()
{
return " [" + barcode + "] [" + PosId + "] [" + PlateW + "x" + PlateH + "],urgentReel [" + urgentReel
+ "],cutReel [" + cutReel + "],smallReel [" + smallReel + "],rfid [" + rfid + "],rfidLoc [" + rfidLoc + "],singleOut[" + singleOut + "]";
return " [" + barcode + "] [" + PosId + "] [" + PlateW + "x" + PlateH + "],[cid="+Cid+"]";
}
public bool IsNG { get; set; } = false;
......@@ -191,11 +187,11 @@ namespace OnlineStore.DeviceLibrary
/// <param name="posId"></param>
public void UpdatePosById(string posId)
{
BoxPosition position = CSVPositionReader<BoxPosition>.GetPositon(posId);
if (position == null)
{
LogUtil.error("GetPositon[" + posId + "] =null,没有库位不能执行出入库");
}
//BoxPosition position = CSVPositionReader<BoxPosition>.GetPositon(posId);
//if (position == null)
//{
// LogUtil.error("GetPositon[" + posId + "] =null,没有库位不能执行出入库");
//}
}
/// <summary>
......
......@@ -154,6 +154,10 @@ namespace OnlineStore.LoadCSVLibrary
/// DO,1,入料线体送料允许,Inlet_AllowFeed,12,HC,Y12,,,,,,,,,,,,
/// </summary>
public static string Inlet_AllowFeed = "Inlet_AllowFeed";
/// <summary>
/// DO,1,入料线体相机光源,Inlet_CamLed,13,HC,Y13,,,,,,,,,,,,
/// </summary>
public static string Inlet_CamLed = "Inlet_CamLed";
}
public enum IO_VALUE
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!