Commit 7f886fa7 刘韬
2 个父辈 cb0174dd 0a82a1e2
......@@ -31,5 +31,9 @@ namespace OnlineStore.Common
public static string QRCodeCount = "QRCodeCount";
public static string CodeTimeOut = "CodeTimeOut";
/// <summary>
/// 校准库位的料盘信息
/// </summary>
public static string FixBuffInfo = "FixBuffInfo";
}
}
......@@ -72,6 +72,7 @@ namespace OnlineStore.Common
get { return _data; }
set { _data = value; }
}
public Dictionary<String, Dictionary<String, String>> mimoOpMap = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// 整体料仓状态
/// 1=正常运行中
......@@ -291,5 +292,22 @@ namespace OnlineStore.Common
public static string disable = "disable";
public static string queueTaskCount="queueTaskCount";
/// <summary>
/// 贴标机交互按钮,出口 满料串取出
/// </summary>
public static string SendFullShelf = "SendFullShelf";
/// <summary>
/// 贴标机交互按钮,出口 空料串送入
/// </summary>
public static string NeedEmptySHelf = "NeedEmptySHelf";
/// <summary>
/// 贴标机交互按钮,入口 满料串送入
/// </summary>
public static string NeedFullShelf = "NeedFullShelf";
/// <summary>
/// 贴标机交互按钮,入口 空料串取出
/// </summary>
public static string SendEmptyShelf = "SendEmptyShelf";
}
}
......@@ -190,6 +190,7 @@ namespace DeviceLibrary
break;
case MoveStep.StoreFIX01:
MoveInfo.NextMoveStep(MoveStep.StoreFIX02);
RobotManage.PutReelInFixPos(MoveInfo.MoveParam);
Middle_Axis.AbsMove(MoveInfo, Fix.Middle_P2, Config.Middle_P2_speed);
MoveInfo.log($"{storeMoveType}:行走机构到达目的地:{Fix.Middle_P2}");
UpDown_Axis.AbsMove(MoveInfo, Fix.UpDown_PH, Config.UpDown_P1_speed);
......@@ -226,6 +227,7 @@ namespace DeviceLibrary
break;
case MoveStep.StoreTS10:
MoveInfo.NextMoveStep(MoveStep.StoreTS11);
RobotManage.ClearReelInFixPos();
Middle_Axis.AbsMove(MoveInfo, To.Middle_P2, Config.Middle_P2_speed);
MoveInfo.log($"{storeMoveType}:行走机构到达目的地:{To.Middle_P2}");
UpDown_Axis.AbsMove(MoveInfo, To.UpDown_PH, Config.UpDown_P1_speed);
......
......@@ -535,6 +535,17 @@ namespace DeviceLibrary
ServerCM.storeStatus = StoreStatus.OutStoreExecute;
CloseFlipDoor(StoreMoveInfo);
}
else if((RobotManage.HasReelInFixPos(out ReelParam reelParam))
&& boxTransport.IsComplateOrFree
&& ClampMoveInfo.MoveStep == MoveStep.Wait && ConfigHelper.Config.Get("Device_Use_Fixpos", false)
&& IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.LOW))
{
var pos = BoxStorePosition.GetFixPos(Config, reelParam);
LogUtil.info($"复位完成,校准库位出库:{pos.posid}");
RobotManage.mainMachine.AddSingleStoreTask(pos.posid, reelParam.PlateW, reelParam.PlateH);
RobotManage.ClearReelInFixPos();
CloseFlipDoor(StoreMoveInfo);
}
runStatus = RunStatus.Running;
ServerCM.storeStatus = StoreStatus.StoreOnline;
break;
......
......@@ -16,8 +16,9 @@ namespace DeviceLibrary
StoreJobList OutStoreJobList = new StoreJobList($"批量");
StoreJobList OutSingleJobList = new StoreJobList($"单盘");
public void AddOutStoreTask(string posId,int plateW,int plateH) {
JobInfo jobInfo = new JobInfo("", posId,plateW,plateH);
public void AddOutStoreTask(string posId, int plateW, int plateH)
{
JobInfo jobInfo = new JobInfo("", posId, plateW, plateH);
OutStoreJobList.Enqueue(jobInfo);
LogUtil.info($"添加出库任务队列: {posId},当前任务数量: {OutStoreJobList.Count}");
}
......@@ -54,6 +55,7 @@ namespace DeviceLibrary
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn01);
StoreMoveInfo.MoveParam = ClampMoveInfo.MoveParam.clone();
StoreMoveInfo.log($"入库料盘已准备好");
ServerCM.storeStatus = StoreStatus.InStoreExecute;
}
//判断有没有单盘出库任务, 需要入库空闲, 出口空闲
else if (OutSingleJobList.Count > 0 && boxTransport.IsComplateOrFree && ClampMoveInfo.MoveStep == MoveStep.Wait)
......@@ -63,11 +65,11 @@ namespace DeviceLibrary
if (!boxTransport.IgnoreX09 && IOMonitor.IODebound(IO_Type.TrayCheck_Fixture, Config, IO_VALUE.HIGH, 1000))
{
Msg.add(crc.GetString("Res0004","收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.alarm, ErrInfo.X09_BoxNotDetect);
Msg.add(crc.GetString("Res0004", "收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.alarm, ErrInfo.X09_BoxNotDetect);
//RobotManage.UserPause("收到出库任务,但料叉上有料,无法启动,请检查");
}
else
Msg.add(crc.GetString("Res0004","收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.warning);
Msg.add(crc.GetString("Res0004", "收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.warning);
return;
}
else
......@@ -87,18 +89,18 @@ namespace DeviceLibrary
}
}
//判断有没有出库任务, 需要入库空闲, 出口空闲
else if (OutStoreJobList.Count>0 && boxTransport.IsComplateOrFree)
else if (OutStoreJobList.Count > 0 && boxTransport.IsComplateOrFree)
{
if (!boxTransport.IgnoreX09 && IOValue(IO_Type.TrayCheck_Fixture).Equals(IO_VALUE.HIGH))
{
if (!boxTransport.IgnoreX09 && IOMonitor.IODebound(IO_Type.TrayCheck_Fixture, Config, IO_VALUE.HIGH, 1000))
{
Msg.add(crc.GetString("Res0004","收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.alarm, ErrInfo.X09_BoxNotDetect);
Msg.add(crc.GetString("Res0004", "收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.alarm, ErrInfo.X09_BoxNotDetect);
//RobotManage.UserPause("收到出库任务,但料叉上有料,无法启动,请检查");
}
else
Msg.add(crc.GetString("Res0004","收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.warning);
Msg.add(crc.GetString("Res0004", "收到出库任务,但料叉上有料,无法启动,请检查"), MsgLevel.warning);
return;
}
else
......@@ -110,7 +112,7 @@ namespace DeviceLibrary
StoreMoveInfo.MoveParam.PosID = jobInfo.PosId;
StoreMoveInfo.MoveParam.PlateH = jobInfo.plateH;
StoreMoveInfo.MoveParam.PlateW = jobInfo.plateW;
StoreMoveInfo.log($"开始出库任务:"+ jobInfo.ToStr());
StoreMoveInfo.log($"开始出库任务:" + jobInfo.ToStr());
ServerCM.storeStatus = StoreStatus.OutStoreExecute;
}
}
......@@ -118,7 +120,7 @@ namespace DeviceLibrary
case MoveStep.StoreIn01:
if (!ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.InStoreExecute))
{
Msg.add(crc.GetString("Res0008","服务器连接异常"),MsgLevel.warning);
Msg.add(crc.GetString("Res0008", "服务器连接异常"), MsgLevel.warning);
return;
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreIn03);
......@@ -145,7 +147,7 @@ namespace DeviceLibrary
{
if (!ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.InStoreEnd))
{
Msg.add(crc.GetString("Res0008","服务器连接异常"), MsgLevel.warning);
Msg.add(crc.GetString("Res0008", "服务器连接异常"), MsgLevel.warning);
return;
}
StoreMoveInfo.log($"料盘已到达目的地");
......@@ -159,7 +161,7 @@ namespace DeviceLibrary
case MoveStep.StoreOut10:
if (!ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreExecute))
{
Msg.add(crc.GetString("Res0008","服务器连接异常"), MsgLevel.warning);
Msg.add(crc.GetString("Res0008", "服务器连接异常"), MsgLevel.warning);
return;
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreOut11);
......@@ -178,7 +180,7 @@ namespace DeviceLibrary
{
if (!ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreBoxEnd))
{
Msg.add(crc.GetString("Res0008","服务器连接异常"), MsgLevel.warning);
Msg.add(crc.GetString("Res0008", "服务器连接异常"), MsgLevel.warning);
return;
}
StoreMoveInfo.NextMoveStep(MoveStep.StoreOut12);
......@@ -194,7 +196,7 @@ namespace DeviceLibrary
{
if (!ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd))
{
Msg.add(crc.GetString("Res0008","服务器连接异常"), MsgLevel.warning);
Msg.add(crc.GetString("Res0008", "服务器连接异常"), MsgLevel.warning);
return;
}
StoreMoveInfo.log($"料盘已到达目的地");
......@@ -218,8 +220,9 @@ namespace DeviceLibrary
break;
}
}
string StoreState() {
string state = crc.GetString(L.free,"空闲中");
string StoreState()
{
string state = crc.GetString(L.free, "空闲中");
if (StoreMoveInfo.MoveStep >= MoveStep.StoreOut10)
{
state = $"{crc.GetString(L.reel_outting, "出库中")},{crc.GetString(L.posnum, "出库中")}:{StoreMoveInfo.MoveParam.PosID}";
......
......@@ -59,9 +59,10 @@ namespace DeviceLibrary
/// <summary>
/// 强制转换料串为出库模式
/// </summary>
public bool TurnToOut() {
public bool TurnToOut()
{
if (StringState == StringStateE.OutStore && StringMoveInfo.MoveStep==MoveStep.StringOut_Released)
if (StringState == StringStateE.OutStore && StringMoveInfo.MoveStep == MoveStep.StringOut_Released)
{
StringMoveInfo.log($"升起待机料串");
StringMoveInfo.NextMoveStep(MoveStep.StringLoad_03);
......@@ -173,7 +174,7 @@ namespace DeviceLibrary
StringMoveInfo.log($"批量轴到顶部检测点");
//CylinderMove(StringMoveInfo, IO_Type.StringDoor_Close, IO_Type.StringDoor_Open, IO_VALUE.LOW);
BatchAxisToP2(StringMoveInfo, StringState == StringStateE.OutStore);
StringMoveInfo.WaitList.Add(WaitResultInfo.WaitMsg(crc.GetString("Res0009","料串正在上升"), MsgLevel.warning));
StringMoveInfo.WaitList.Add(WaitResultInfo.WaitMsg(crc.GetString("Res0009", "料串正在上升"), MsgLevel.warning));
}
else if (StringMoveInfo.IsTimeOut(10))
{
......@@ -197,11 +198,11 @@ namespace DeviceLibrary
if (ConfigHelper.Config.Get("Device_String_StandbyAtBottom", true) && OutStoreJobList.Count == 0)
{
SetReelHeight(GetHeight(StringMoveInfo));
StringMoveInfo.log($"当空料串, 并且没有出库任务, 料串下降待机");
StringMoveInfo.log($"当空料串, 并且没有出库任务, 料串下降待机");
StringMoveInfo.NextMoveStep(MoveStep.StringOut_01);
}
}
else if(StringState != StringStateE.OutStore)
else if (StringState != StringStateE.OutStore)
{
StringMoveInfo.NextMoveStep(MoveStep.StringLoad_04a);
StringState = StringStateE.InStore;
......@@ -244,7 +245,7 @@ namespace DeviceLibrary
{
StringMoveInfo.NextMoveStep(MoveStep.StringReadyGet);
StringMoveInfo.log($"料串有盘上升5mm");
var tpos4 = Batch_Axis.GetAclPosition() + Config.Batch_PoToMM * (Config.Batch_DetectDownMM+2);
var tpos4 = Batch_Axis.GetAclPosition() + Config.Batch_PoToMM * (Config.Batch_DetectDownMM + 2);
Batch_Axis.AbsMove(StringMoveInfo, tpos4, Config.Batch_P1_speed);
CylinderMove(StringMoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Work, IO_VALUE.LOW);
//OpenFlipDoor(StringMoveInfo);
......@@ -291,7 +292,7 @@ namespace DeviceLibrary
break;
case MoveStep.StringReelPut:
LastStringState = StringStateE.OutStore;
if (ConfigHelper.Config.Get("Device_OutStoreStringReelCheck",false))
if (ConfigHelper.Config.Get("Device_OutStoreStringReelCheck", false))
{
StringMoveInfo.NextMoveStep(MoveStep.StringReelPut_03);
StringMoveInfo.log($"检测阻挡工作");
......@@ -340,12 +341,12 @@ namespace DeviceLibrary
case MoveStep.StringReelPut_02:
StringMoveInfo.NextMoveStep(MoveStep.StringLoad_04b);
StringMoveInfo.log($"批量轴到顶部检测点");
BatchAxisToP2(StringMoveInfo,true);
BatchAxisToP2(StringMoveInfo, true);
break;
case MoveStep.StringReelPut_03:
StringMoveInfo.NextMoveStep(MoveStep.StringReelPut_04);
StringMoveInfo.log($"批量轴到顶部检测点");
BatchAxisToP2(StringMoveInfo,true);
BatchAxisToP2(StringMoveInfo, true);
break;
case MoveStep.StringReelPut_04:
StringMoveInfo.NextMoveStep(MoveStep.StringReelPut_05);
......@@ -379,7 +380,7 @@ namespace DeviceLibrary
StringMoveInfo.log($"料串下降到P1点");
Batch_Axis.AbsMove(StringMoveInfo, Config.Batch_P1, Config.Batch_P1_speed);
CylinderMove(StringMoveInfo, IO_Type.StringPosChecker_Home, IO_Type.StringPosChecker_Work, IO_VALUE.LOW);
StringMoveInfo.WaitList.Add(WaitResultInfo.WaitMsg(crc.GetString("Res0010","料串正在下降"), MsgLevel.warning));
StringMoveInfo.WaitList.Add(WaitResultInfo.WaitMsg(crc.GetString("Res0010", "料串正在下降"), MsgLevel.warning));
break;
case MoveStep.StringOut_02:
StringMoveInfo.NextMoveStep(MoveStep.StringOut_03);
......@@ -392,6 +393,7 @@ namespace DeviceLibrary
CylinderMove(StringMoveInfo, IO_Type.StringFix_Bottom, IO_Type.StringFix_Top, IO_VALUE.LOW);
break;
case MoveStep.StringOut_Released:
ServerCM.storeStatus = StoreStatus.StoreOnline;
if (StringState == StringStateE.Full)
Msg.add(crc.GetString(L.string_full_takeout, "料串已满请取出"), MsgLevel.warning);//0427
else
......@@ -445,7 +447,8 @@ namespace DeviceLibrary
}
}
string StringProcessState() {
string StringProcessState()
{
string state = "";
if (StringState == StringStateE.OutStore)
......@@ -488,14 +491,14 @@ namespace DeviceLibrary
int targetSpeed = Config.Batch_P2_speed;
if (isFirstMove)
{
targetSpeed= Config.Batch_P1_speed;
targetSpeed = Config.Batch_P1_speed;
}
moveInfo.log("BatchAxisToP2 目标P2: " + targetP2);
moveInfo.TimeOutSeconds = 200;
moveInfo.CanWhileCount = 0;
Batch_Axis.SuddenStop();
// 需要增加定时器,获取验证信号并停止伺服
StartMovePosition = Batch_Axis.GetAclPosition()- (Config.Batch_PoToMM * 2);
StartMovePosition = Batch_Axis.GetAclPosition() - (Config.Batch_PoToMM * 2);
moveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxisMove(Config.Batch_Axis, targetP2, targetSpeed));
Config.Batch_Axis.TargetPosition = targetP2;
Batch_Axis.AbsMove(null, targetP2, targetSpeed);
......@@ -568,7 +571,8 @@ namespace DeviceLibrary
return LastHeight;
}
public void StringDoorOpen(MoveInfo moveInfo) {
public void StringDoorOpen(MoveInfo moveInfo)
{
if (StringDoor != null)
{
StringDoor.LiftUp(moveInfo);
......@@ -580,10 +584,12 @@ namespace DeviceLibrary
}
public void StringDoorClose(MoveInfo moveInfo)
{
if (StringDoor!=null) {
if (StringDoor != null)
{
StringDoor.LiftDown(moveInfo);
}
else {
else
{
CylinderMove(moveInfo, IO_Type.StringDoor_Close, IO_Type.StringDoor_Open, IO_VALUE.LOW);
}
......
......@@ -183,6 +183,34 @@ namespace DeviceLibrary
else
LogUtil.info("用户取消忽略安全光栅");
}
#region 校准库位缓存
public static bool HasReelInFixPos(out ReelParam reelParam)
{
reelParam = null;
try
{
string fix = ConfigHelper.Config.Get(Setting_Init.FixBuffInfo,"");
if(!string.IsNullOrEmpty(fix))
{
reelParam=JsonHelper.DeserializeJsonToObject<ReelParam>(fix);
return true;
}
}
catch (Exception e)
{
LogUtil.error("解析校准库位缓存异常",e);
}
return false;
}
public static void PutReelInFixPos(ReelParam reelParam)
{
ConfigHelper.Config.Set(Setting_Init.FixBuffInfo,JsonHelper.SerializeObject(reelParam));
}
public static void ClearReelInFixPos()
{
ConfigHelper.Config.Set(Setting_Init.FixBuffInfo,"");
}
#endregion
}
public enum StoreType {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!