Commit e8dd2942 张东亮

更新包装仓入库逻辑(针对料盘尺寸与料仓不匹配情况)

1 个父辈 3e714c06
此文件的差异太大,无法显示。
......@@ -49,7 +49,7 @@ namespace OnlineStore.ACPackingStore
{
if (BoxBean == null)
{
LogUtil.error( "找不到对应的料仓");
LogUtil.error("找不到对应的料仓");
this.Close();
return;
}
......@@ -105,12 +105,13 @@ namespace OnlineStore.ACPackingStore
this.ShowInTaskbar = true;
try
{
int num =Convert.ToInt32( BoxBean.CID.Substring(BoxBean.CID.Length - 2, 2));
int num = Convert.ToInt32(BoxBean.CID.Substring(BoxBean.CID.Length - 2, 2));
if (num >= 18 && num <= 24)
{
numericUpDown1.Value = num;
}
}catch(Exception ex)
}
catch (Exception ex)
{
}
......@@ -155,11 +156,11 @@ namespace OnlineStore.ACPackingStore
lblWarnMsg.Text = BoxBean.GetWarnMsg();
lblMoveInfo.Text = BoxBean.GetMoveStr();
if ( BoxBean.MoveInfo.MoveType.Equals(StoreMoveType.InStore))
if (BoxBean.MoveInfo.MoveType.Equals(StoreMoveType.InStore))
{
lblMoveEquipInfo.Text = "入库:" + BoxBean.MoveInfo.MoveParam.ToShortStr();
}
else if (BoxBean.MoveInfo.MoveType.Equals(StoreMoveType.OutStore) )
else if (BoxBean.MoveInfo.MoveType.Equals(StoreMoveType.OutStore))
{
lblMoveEquipInfo.Text = "出库:" + BoxBean.MoveInfo.MoveParam.ToShortStr();
}
......@@ -241,6 +242,14 @@ namespace OnlineStore.ACPackingStore
// lblWarnMsg.Text = "";
btnStartAuTo.Text = "开始自动出入库";
}
if(BoxBean.CompressSigTimeOut)
{
btnClearcurState.Visible = true;
}
else
{
btnClearcurState.Visible = false;
}
}
private void btnOutStore_Click(object sender, EventArgs e)
......@@ -250,7 +259,7 @@ namespace OnlineStore.ACPackingStore
string selectPositionNum = cmbPosition.Text;
string sleShelfNum = cmbShelfPosition.Text;
LineMoveP ktk = LoadPostion();
InOutParam param = new InOutParam("", selectPositionNum,sleShelfNum, ktk);
InOutParam param = new InOutParam("", selectPositionNum, sleShelfNum, ktk);
BoxBean.StartOutStoreMove(param);
}
else
......@@ -614,7 +623,7 @@ namespace OnlineStore.ACPackingStore
string poText = cmbPosition.Text;
BoxBean.AutoInout.autoMsg = "自动出库:" + poText;
LogUtil.info( BoxBean.Name + "开启自动出入库模式,开始位置【" + poText + "】(索引=" + currIndex + "),间隔=" + jiange + ",入库开始!");
LogUtil.info(BoxBean.Name + "开启自动出入库模式,开始位置【" + poText + "】(索引=" + currIndex + "),间隔=" + jiange + ",入库开始!");
//BoxBean.StartOutStoreMove(new InOutStoreParam("", poText));
BoxBean.StartInStoreMove(new InOutParam("", poText, cmbShelfPosition.Text));
......@@ -661,7 +670,7 @@ namespace OnlineStore.ACPackingStore
}
catch (Exception ex)
{
LogUtil.error( "出错:" + ex.StackTrace);
LogUtil.error("出错:" + ex.StackTrace);
}
}
......@@ -806,8 +815,8 @@ namespace OnlineStore.ACPackingStore
private void btnScanTest_Click(object sender, EventArgs e)
{
BoxBean. IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
List<string> codes = CodeManager.CameraScan(BoxBean.Config.GetCameraList(),BoxBean.Name);
BoxBean.IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
List<string> codes = CodeManager.CameraScan(BoxBean.Config.GetCameraList(), BoxBean.Name);
BoxBean.IOMove(IO_Type.Camera_Led, IO_VALUE.LOW);
string result = "";
if (codes.Count > 0)
......@@ -822,7 +831,7 @@ namespace OnlineStore.ACPackingStore
else
{
MessageBox.Show("未扫到二维码" );
MessageBox.Show("未扫到二维码");
}
}
......@@ -970,7 +979,7 @@ namespace OnlineStore.ACPackingStore
private void btnComP4_Click(object sender, EventArgs e)
{
int value = FormUtil.GetIntValue(txtComP4 );
int value = FormUtil.GetIntValue(txtComP4);
AxisABSMove(BoxBean.Config.Comp_Axis, value, BoxBean.Config.CompAxis_P4_Speed);
}
......@@ -1005,7 +1014,7 @@ namespace OnlineStore.ACPackingStore
{
return;
}
DialogResult result = MessageBox.Show("确定将库位改为【4D" + num.ToString().PadLeft(2,'0') + "XXXXXX】的格式?", "", MessageBoxButtons.YesNo);
DialogResult result = MessageBox.Show("确定将库位改为【4D" + num.ToString().PadLeft(2, '0') + "XXXXXX】的格式?", "", MessageBoxButtons.YesNo);
if (result.Equals(DialogResult.Yes))
{
string appPath = Application.StartupPath;
......@@ -1060,7 +1069,21 @@ namespace OnlineStore.ACPackingStore
{
int value = FormUtil.GetIntValue(txtInoutP101);
AxisABSMove(BoxBean.Config.InOut_Axis, value, BoxBean.Config.InOutAxis_P101_Speed );
AxisABSMove(BoxBean.Config.InOut_Axis, value, BoxBean.Config.InOutAxis_P101_Speed);
}
/// <summary>
/// 忽略料叉信号,使出库继续运行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClearcurState_Click(object sender, EventArgs e)
{
if (BoxBean.MoveInfo.MoveStep.Equals(StoreMoveStep.SO_07_CheckComSig))
{
BoxBean.IsIgnoreComSig = true;
BoxBean.MoveInfo.EndStepWait();
}
}
}
}
......@@ -15,6 +15,7 @@ namespace OnlineStore.DeviceLibrary
{
#region 出入库结果验证
public bool CompressSigTimeOut = false;
private void CheckWait()
{
List<WaitResultInfo> list = MoveInfo.WaitList;
......@@ -81,6 +82,10 @@ namespace OnlineStore.DeviceLibrary
isOk = false;
break;
}
if(wait.IoType.Equals(IO_Type.Compress_Check) && MoveInfo.MoveStep.Equals(StoreMoveStep.SO_07_CheckComSig))
{
CompressSigTimeOut = true;
}
}
}
else if (wait.WaitType.Equals(WaitEnum.W003_Time))
......@@ -351,6 +356,13 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P11, Config.MiddleAxis_P1_Speed);
}
private void StartMoveTrayBack(string str = "料盘不属于该仓库")
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_08_ToShelfPosition);
InOutStoreLog("送出料盘 " + MoveInfo.SLog + ":" + str + ",走到料架位置,旋转轴至P101,升降轴至P102");
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_HP102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P101, Config.MiddleAxis_P101_Speed);
}
protected override void InStoreProcess()
{
LineMoveP moveP = MoveInfo.MoveParam.MoveP;
......@@ -363,14 +375,34 @@ namespace OnlineStore.DeviceLibrary
return;
}
#region 料架取料盘扫码获取POSID
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_10_StartGetTray))
{
if(MoveInfo.IsShelfLocked)
{
if (MoveInfo.NextLockedShelfPos())
{
//新的料架库位
startInStoreTime = DateTime.Now;
MoveInfo.SingleInstore = false;
MoveInfo.NextMoveStep(StoreMoveStep.BI_11_InoutToP1);
InOutStoreLog("料架取料 " + MoveInfo.SLog + ":叉子后退到待机点P1, 重置盘信息");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
ClearLastTrayInfo();
}
else
{
//所有料盘已取料完成,送出料架
StartShelfOut();
}
}
else
{
if (MoveInfo.NextShelfPos())
{
//新的料架库位
startInStoreTime = DateTime.Now;
MoveInfo.SingleInstore = false;
MoveInfo.NextMoveStep(StoreMoveStep.BI_11_InoutToP1);
InOutStoreLog("料架取料 " + MoveInfo.SLog + ":叉子后退到待机点P1, 重置盘信息");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
......@@ -382,6 +414,8 @@ namespace OnlineStore.DeviceLibrary
StartShelfOut();
}
}
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_11_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_12_MoveToShelf);
......@@ -443,9 +477,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_17_InoutBack))
{
if (MoveInfo.SingleInstore)
if (MoveInfo.SingleInstore || MoveInfo.IsShelfLocked)
{
//单盘入库,不需要扫码
//单盘入库或者该料架已锁定库位,不需要扫码
StartMoveToBag();
}
else
......@@ -553,12 +587,20 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StoreMoveStep.BI_30_SetInstoreParam);
InOutStoreLog("扫码 " + MoveInfo.SLog + ": 获取库位号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
bool result = GetPosIdByCode();
if (!result)
bool result = GetPosIdByCode(MoveInfo.currShelfIndex,out CodeResultType codeResult);
if (!result)//获取库位失败
{
if(codeResult == CodeResultType.NotFoundPos)//库位不在该料仓,将该料盘放回料架
{
//MoveInfo.MoveParam.PosID = "";
StartMoveTrayBack("此料盘不属于该仓库,放回料架");
}
else//无法获取库位信息
{
MoveInfo.MoveParam.PosID = "";
StartSendTray("获取入库库位失败");
}
}
else
{
MoveInfo.EndStepWait();
......@@ -678,6 +720,38 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
#region 把料盘送回料架逻辑
else if (MoveInfo.MoveStep == StoreMoveStep.SO_08_ToShelfPosition)
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_11_ToShelf);
InOutStoreLog("送出料盘 " + MoveInfo.SLog + ":叉子进出料口,进出轴至P101");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P101, Config.InOutAxis_P101_Speed);
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_11_ToShelf)
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_12_PutReel);
InOutStoreLog("送出料盘 " + MoveInfo.SLog + ":放下物品,压紧轴到P1,升降轴至P101,清空 taskData=null ");
ACAxisMove(Config.Comp_Axis, moveP.ComPress_P1, Config.CompAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_LP101, Config.UpDownAxis_P101_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_12_PutReel)
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_13_InoutBack);
InOutStoreLog("送出料盘 " + MoveInfo.SLog + ":叉子从出料口返回, 进出轴到P1 ");
InOutBackToP1(moveP.InOut_P1);
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_13_InoutBack)
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_10_StartGetTray);
InOutStoreLog("送出料盘结束 " + MoveInfo.SLog + ": 升降轴返回,升降轴到P1,顶升下降,继续循环料架取料盘");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
}
#endregion
//料架进入逻辑
else if (MoveInfo.MoveStep < StoreMoveStep.BI_10_StartGetTray)
{
......@@ -747,7 +821,7 @@ namespace OnlineStore.DeviceLibrary
#region 出库
private DateTime startOutStoreTime = DateTime.Now;
public bool IsIgnoreComSig = false; //忽略料叉压紧信号
private void StartExecuctOut(InOutParam param)
{
......@@ -910,19 +984,22 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_06_InoutBack)
{
MoveInfo.NextMoveStep(StoreMoveStep.SO_08_ToShelfPosition);
InOutStoreLog("出库 " + MoveInfo.SLog + ":走到料架位置,旋转轴至P101,升降轴至P102, ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_HP102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P101, Config.MiddleAxis_P101_Speed);
MoveInfo.NextMoveStep(StoreMoveStep.SO_07_CheckComSig);
InOutStoreLog("出库 " + MoveInfo.SLog + ":等待料叉压紧信号 ");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Compress_Check, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_07_LocationUp)
else if (MoveInfo.MoveStep == StoreMoveStep.SO_07_CheckComSig)
{
if(IOValue(IO_Type.Compress_Check).Equals(IO_VALUE.HIGH) || IsIgnoreComSig)
{
IsIgnoreComSig = false;
CompressSigTimeOut = false;
MoveInfo.NextMoveStep(StoreMoveStep.SO_08_ToShelfPosition);
InOutStoreLog("出库 " + MoveInfo.SLog + ":走到料架位置,旋转轴至P101,升降轴至P102 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_HP102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P101, Config.MiddleAxis_P101_Speed);
}
}
else if (MoveInfo.MoveStep == StoreMoveStep.SO_08_ToShelfPosition)
{
......
......@@ -71,7 +71,7 @@ namespace OnlineStore.DeviceLibrary
isInit = true;
string storeType = ConfigAppSettings.GetValue(Setting_Init.Store_Type);
int count = ConfigAppSettings.GetIntValue(Setting_Init.store_count);
LogUtil.info( "配置的料仓 类型=" + storeType + ",开始加载料仓配置");
LogUtil.info("配置的料仓 类型=" + storeType + ",开始加载料仓配置");
string appPath = Application.StartupPath;
string CID = ConfigAppSettings.GetValue(Setting_Init.Store_CID);
Dictionary<int, AC_BOX_Config> storeConfig = new Dictionary<int, AC_BOX_Config>();
......@@ -107,7 +107,7 @@ namespace OnlineStore.DeviceLibrary
{
CSVPositionReader<ACBoxPosition>.AddCSVFile(positionConfigFile);
}
LogUtil.info( "加载料仓完成!");
LogUtil.info("加载料仓完成!");
}
......@@ -134,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("出错:"+ ex.ToString());
LogUtil.error("出错:" + ex.ToString());
MessageBox.Show(ex.ToString(), "加载配置错误(请检查配置)");
Application.Exit();
}
......@@ -170,7 +170,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("出错:"+ ex.ToString());
LogUtil.error("出错:" + ex.ToString());
}
return false;
}
......@@ -560,6 +560,128 @@ namespace OnlineStore.DeviceLibrary
return msg;
}
private static string Addr_getShelfLockInfo = "/rest/api/qisda/device/getShelfLockInfo"; //包装仓获取料架锁定状态地址
public static bool GetShelfLockInfo(string deviceName, string cid,string rfid,out List<ShelfLockData> shelfLockDatas)
{
string msg = "";
shelfLockDatas = null;
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add(ParamDefine.rfid, rfid);
string server = GetAddr(Addr_getShelfLockInfo, paramMap);
DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Post(server, "");
LogUtil.info(deviceName + "料架锁定状态 " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
ShelfLockInfo serverResult = JsonHelper.DeserializeJsonToObject<ShelfLockInfo>(resultStr);
if (serverResult == null)
{
msg = deviceName + " 没有收到服务器反馈";
LogUtil.info(msg);
return false;
}
if (serverResult.data.Count ==0) //该料架未锁定
{
msg = deviceName + " 料架【"+rfid+"】 没有锁定库位的料";
LogUtil.info(msg);
return false;
}
else //该料架存在锁定库位的料
{
shelfLockDatas = new List<ShelfLockData>();
string plates = "";
foreach (ShelfLockData item in serverResult.data)
{
LogUtil.info("锁定的CID="+item.cid+";当前CID="+cid);
if(item.cid.Equals(cid))//该料盘属于此料仓
{
shelfLockDatas.Add(item);
plates += "["+item.lockPos+"]# ";
}
}
msg = deviceName + " 料架【" + rfid + "】 在该料仓锁定库位的料:【"+plates+"】";
LogUtil.info(msg);
return true;
}
}
catch (Exception ex)
{
LogUtil.error(deviceName + " ", ex);
}
return false;
}
private static string Addr_PosForPutin = "/service/store/emptyPosForPutin"; //获取当前料盘属于的料仓编号
public static bool GetPosForPutIn(string deviceName,AC_BOX_Config boxConfig,string barcode,string rfid,int rfidLoc)
{
string msg = "";
try
{
// http://localhost/myproject/service/store/emptyPosForPutin
// 参数:cids: 多个 cid
//code: 条码内容
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add("cids",boxConfig.All_CIDs.Replace('#',','));
paramMap.Add("code", barcode);
paramMap.Add(ParamDefine.rfid, rfid);
paramMap.Add("rfidLoc", rfidLoc.ToString());
string server = GetAddr(Addr_PosForPutin, paramMap);
DateTime startTime = DateTime.Now;
LogUtil.info(deviceName + " 条码【 " + barcode + "】料串【" + rfid + "】,获取入库库位:");
string resultStr = HttpHelper.Post(server, "");
LogUtil.info(deviceName + "CodeReceived " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
//{"result":"0","msg":"","pos":"11#AC1_18_4_28","barcode":"R506072019102200414","cid":"line-ac-11"}
LineOperation serverResult = JsonHelper.DeserializeJsonToObject<LineOperation>(resultStr);
if (serverResult == null)
{
msg = deviceName + " 【" + barcode + "】结果:没有收到服务器反馈 ";
LogUtil.info(msg);
return false;
}
else if ((!string.IsNullOrEmpty(serverResult.msg)) || serverResult.result.Equals(0).Equals(false))
{
msg = deviceName + " 【" + barcode + "】结果:" + serverResult.msg;
LogUtil.info(msg);
return false;
}
if (serverResult.cid.Equals(boxConfig.CID)) //该料盘在此料仓
{
// 仓位命名: 4D01020304
//第1和第2位表示楼层(4D)
//第3和第4位表示料仓(01) 01 - 18为流水线料仓, 19 - 24为包装料仓
//第5和第6位表示列(02)
//第7和第8位表示行(03)
//第9和第10位表示隔板位置(04)
//例如: 4D12010124 表示4楼12号料仓第1列第1行架子上的第24个隔板位置
//4D19050208 表示4楼19号料仓(包装料仓)第5列第2行架子上的第8个隔板位置
msg = deviceName + " 料盘【" + barcode + "】属于该料仓【"+boxConfig.CID+"】";
LogUtil.info(msg);
return true;
}
else
{
msg = deviceName + " 料盘【" + barcode + "】不属于该料仓【" + boxConfig.CID + "】";
LogUtil.info(msg);
return false;
}
}
catch (Exception ex)
{
LogUtil.error(deviceName + " ", ex);
}
return false;
}
}
public class AfterPutData
{
......@@ -671,5 +793,62 @@ namespace OnlineStore.DeviceLibrary
// smallTask: 还有多少盘小料任务(放置到双层线的D料架上)
// bigTask: 还有多少盘大料任务(放置到C料架上)
}
public class ShelfLockInfo
{
//返回: {"code":0,"msg":"ok","data":
//[{"barcode":"S20052301213","cid":"packing-20","rfid":"A12","rfidLoc":"3","lockPos":"4D2001AA0006","lockPosId":"1231"}]}
/// <summary>
/// 返回码,0为正常,其他为异常
/// </summary>
public int code { get; set; }
/// <summary>
/// 消息
/// </summary>
public string msg { get; set; }
public List<ShelfLockData> data { get; set; }
}
public class ShelfLockData
{
/// <summary>
/// 库位中料盘的条码
/// </summary>
public string barcode { get; set; }
/// <summary>
/// 库位中料盘的锁定库位对应的料仓编
/// </summary>
public string cid { get; set; }
/// <summary>
/// 料架RFID
/// </summary>
public string rfid { get; set; }
/// <summary>
/// 料架的库位
/// </summary>
public int rfidLoc { get; set; }
/// <summary>
/// 库位中料盘的锁定库位
/// </summary>
public string lockPos { get; set; }
}
public class LineOperation
{
// //{"result":"0","msg":"","pos":"11#AC1_18_4_28","barcode":"R506072019102200414","cid":"line-ac-11"}
// 返回: {"code": 0, "msg":"ok", data:7}
/// <summary>
/// 0=成功
/// </summary>
public int result;
public string cid;
public string msg = "";
public string pos = "";
public string barcode = "";
}
}
......@@ -50,7 +50,7 @@
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference>
<Reference Include="halcondotnet">
<HintPath>..\..\..\RC32-SZBOSCH-ACSingleStore\dll\halcondotnet.dll</HintPath>
<HintPath>..\..\dll\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="HFReader9CSharp">
<HintPath>..\..\dll\RFID\HFReader9CSharp.dll</HintPath>
......
......@@ -141,3 +141,4 @@ PRO,温湿度端口号,Humiture_Port,COM5,,,,,,,
PRO,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546875),,,,,,,
PRO,RFID读卡器IP,RFID_IP,192.168.104.101,,,,,,,
PRO,是否是调试状态,IsInDebug,0,,,,,,,
PRO,所有料仓的CID(用#号分隔),All_CIDs,packing-1#packing-2#packing-3#packing-4#packing-5#packing-6#packing-7#packing-8,,,,,,,
......@@ -141,3 +141,4 @@ PRO,温湿度端口号,Humiture_Port,COM5,,,,,,,
PRO,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546940),,,,,,,
PRO,RFID读卡器IP,RFID_IP,192.168.104.102,,,,,,,
PRO,是否是调试状态,IsInDebug,0,,,,,,,
PRO,所有料仓的CID(用#号分隔),All_CIDs,packing-2#packing-3#packing-4#packing-5#packing-6#packing-7#packing-8#packing-1,,,,,,,
\ No newline at end of file
......@@ -192,6 +192,41 @@ namespace OnlineStore.DeviceLibrary
MoveP.UpDown_P5 = position.UpdownAxis_OH_P5;
MoveP.UpDown_P6 = position.UpdownAxis_OL_P6;
}
internal void UpdatePosIdAndShelfId(string wareNo,string rfid,string posId, string ShelfPosID)
{
WareCode = wareNo;
this.ShelfPosID = ShelfPosID;
this.rfid = rfid;
ShelfPosition sp = CSVPositionReader<ShelfPosition>.GetPositon(ShelfPosID);
if (sp == null)
{
LogUtil.error("GetPositon[" + ShelfPosID + "]=null,没有库位不能执行出入库");
}
MoveP.InOut_P101 = sp.InoutAxis_P101;
MoveP.UpDown_LP101 = sp.UpDownAxis_LP101;
MoveP.UpDown_HP102 = sp.UpDownAxis_HP102;
MoveP.Middle_P101 = sp.MiddleAxis_P101;
PosID = posId;
ACBoxPosition position = CSVPositionReader<ACBoxPosition>.GetPositon(posId);
if (position == null)
{
LogUtil.error("GetPositon[" + posId + "] =null,没有库位不能执行出入库");
}
//MoveP.ComPress_P2 = comP2;
//MoveP.ComPress_P3 = comP3;
MoveP.InOut_P3 = position.InoutAxis_P3;
MoveP.Middle_P2 = position.MiddleAxis_P2;
MoveP.UpDown_P3 = position.UpdownAxis_IH_P3;
MoveP.UpDown_P4 = position.UpdownAxis_IL_P4;
MoveP.UpDown_P5 = position.UpdownAxis_OH_P5;
MoveP.UpDown_P6 = position.UpdownAxis_OL_P6;
}
}
}
......@@ -240,9 +240,9 @@ namespace OnlineStore.DeviceLibrary
SO_06_InoutBack = 2006,
/// <summary>
/// 料仓出库,定位气缸伸出(有压紧轴的不需要此步骤 )
/// 料仓出库,等待压紧信号确认
/// </summary>
SO_07_LocationUp = 2007,
SO_07_CheckComSig = 2007,
/// <summary>
/// 料仓出库,走到料架位置,旋转轴至P20,升降轴至P102,
......
......@@ -149,7 +149,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public List<string> ShelfPositionList = new List<string>();
private string currShelfPosId = "";
private int currShelfIndex = -1;
public int currShelfIndex = -1;
public bool NextShelfPos()
{
......@@ -164,6 +164,33 @@ namespace OnlineStore.DeviceLibrary
MoveParam.UpdateShelfPosId(currShelfPosId);
return true;
}
/// <summary>
/// 入库时,料架已锁定库位的位置,无需扫码
/// </summary>
public bool IsShelfLocked = false;//料架是否锁定
/// <summary>
/// 料架锁定位置的料
/// </summary>
public List<ShelfLockData> shelfLockDatas =null;
public bool NextLockedShelfPos()
{
currShelfIndex++;
if (currShelfIndex >= shelfLockDatas.Count)
{
shelfLockDatas = null;
return false;
}
currShelfPosId = ShelfPositionList[shelfLockDatas[currShelfIndex].rfidLoc];
//设置取料位置
MoveParam.UpdatePosIdAndShelfId(shelfLockDatas[currShelfIndex].barcode,
shelfLockDatas[currShelfIndex].rfid,
shelfLockDatas[currShelfIndex].lockPos, currShelfPosId);
return true;
}
}
public class WaitResultInfo
......@@ -182,7 +209,7 @@ namespace OnlineStore.DeviceLibrary
wait.IoValue = ioValue;
return wait;
}
public static WaitResultInfo WaitAxis(ConfigMoveAxis axis,int targetPosition,int targetSpeed )
public static WaitResultInfo WaitAxis(ConfigMoveAxis axis, int targetPosition, int targetSpeed)
{
WaitResultInfo wait = new WaitResultInfo();
wait.WaitType = WaitEnum.W001_AxisMove;
......@@ -241,7 +268,7 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = false;
return wait;
}
public static WaitResultInfo WaitAxisOrg(ConfigMoveAxis axis,IO_VALUE value )
public static WaitResultInfo WaitAxisOrg(ConfigMoveAxis axis, IO_VALUE value)
{
WaitResultInfo wait = new WaitResultInfo();
wait.WaitType = WaitEnum.W006_AxisOrg;
......@@ -322,15 +349,18 @@ namespace OnlineStore.DeviceLibrary
else if (WaitType.Equals(WaitEnum.W008_Compress))
{
return "压紧轴压紧到位";
}else if (WaitType.Equals(WaitEnum.W009_ScanCode))
}
else if (WaitType.Equals(WaitEnum.W009_ScanCode))
{
return "扫码完成";
}else if (WaitType.Equals(WaitEnum.W010_AgvStatus))
}
else if (WaitType.Equals(WaitEnum.W010_AgvStatus))
{
return " Agv_" + (ClientAction)AgvAction+" ";
}else if (WaitType.Equals(WaitEnum.W011_DoorCloseEvent))
return " Agv_" + (ClientAction)AgvAction + " ";
}
else if (WaitType.Equals(WaitEnum.W011_DoorCloseEvent))
{
return "Agv_DoorClose事件" ;
return "Agv_DoorClose事件";
}
else
{
......@@ -381,7 +411,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 是否已经结束
/// </summary>
public bool IsEnd{ get; set; }
public bool IsEnd { get; set; }
public int AgvAction = 0;
......@@ -420,7 +450,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 压紧轴压紧到位
/// </summary>
internal static int W008_Compress= 8;
internal static int W008_Compress = 8;
/// <summary>
/// 扫码完成
/// </summary>
......
......@@ -556,6 +556,12 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
[ConfigProAttribute("CompAxis_Max_P3")]
public int CompAxis_Max_P3 { get; set; }
/// <summary>
/// PRO 所有料仓的CID(用#号分隔) All_CIDs packing-1#packing-2#packing-3#packing-4#packing-5#packing-6#packing-7#packing-8
/// </summary>
[ConfigProAttribute("All_CIDs")]
public string All_CIDs { get; set; }
private List< ComP2Info> ComP2List = null;
public ComP2Info GetComP2(int plateh)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!