Commit a215ee24 几米阳光

原来的出入库增加批量操作的判定

1 个父辈 6522a61a
......@@ -6,7 +6,7 @@
<appSettings>
<!--是否开机自动启动料仓-->
<add key="App_AutoRun" value="1" />
<add key="App_Title" value="料仓_自动上下料" />
<add key="App_Title" value="料仓_批量上下料" />
<add key="scanner_start_command" value="S" />
<!-- 开始吹气的判断值(配置值=服务器发送的湿度值-开始吹气值)-->
<add key="StartBlowValue" value="4" />
......
......@@ -33,7 +33,7 @@ namespace OnlineStore.AutoInOutStore
updown = boxBean.Config.UpDown_Axis;
compress_Slv = boxBean.Config.CompressAxis_Slv;
inout = boxBean.Config.InOut_Axis;
auto = boxBean.Config.Auto_Axis;
auto = boxBean.Config.Batch_Axis;
InitializeComponent();
txtComSpeed.Text = boxBean.Config.CompressAxis_EndSpeed.ToString();
this.Text = boxBean.StoreName + "_轴点动调试";
......
......@@ -299,14 +299,14 @@ namespace OnlineStore.AutoInOutStore
private void btnDOpen_Click(object sender, EventArgs e)
{
KND.IOMove(IO_Type.AutoDoor_Close, IO_VALUE.LOW);
KND.IOMove(IO_Type.AutoDoor_Open, IO_VALUE.HIGH);
KND.IOMove(IO_Type.BatchDoor_Close, IO_VALUE.LOW);
KND.IOMove(IO_Type.BatchDoor_Open, IO_VALUE.HIGH);
}
private void btnDClose_Click(object sender, EventArgs e)
{
KND.IOMove(IO_Type.AutoDoor_Open, IO_VALUE.LOW);
KND.IOMove(IO_Type.AutoDoor_Close, IO_VALUE.HIGH);
KND.IOMove(IO_Type.BatchDoor_Open, IO_VALUE.LOW);
KND.IOMove(IO_Type.BatchDoor_Close, IO_VALUE.HIGH);
}
private void btnSXi_Click(object sender, EventArgs e)
......
......@@ -11,8 +11,8 @@ DI,料盘宽度检测1,WidthCheck1,208,192.168.200.10,0,料盘宽度检测1,X09,DI-09,0,
DI,料盘宽度检测2,WidthCheck2,209,192.168.200.10,0,料盘宽度检测2,X10,DI-10,0,
DI,料盘检测1(上料机构),TrayCheck_LoadMaterial ,210,192.168.200.10,0,料盘检测1(上料机构),X11,DI-11,0,
DI,上料机构出料检测,OutCheck,211,192.168.200.10,0,上料机构出料检测,X12,DI-12,0,
DI,门锁气缸打开端,AutoDoor_Open,212,192.168.200.10,0,门锁气缸打开端,X13,DI-13,0,
DI,门锁气缸关闭端,AutoDoor_Close,213,192.168.200.10,0,门锁气缸关闭端,X14,DI-14,0,
DI,门锁气缸打开端,BatchDoor_Open,212,192.168.200.10,0,门锁气缸打开端,X13,DI-13,0,
DI,门锁气缸关闭端,BatchDoor_Close,213,192.168.200.10,0,门锁气缸关闭端,X14,DI-14,0,
DI,料盘检测2(料叉机构),TrayCheck_Fixture,214,192.168.200.10,0,料盘检测2(料叉机构),X15,DI-15,0,
DI,压紧机构计量检测,CompressAxis_Check,215,192.168.200.10,0,压紧机构计量检测,X16,DI-16,0,
DO,自动指示灯,AutoRun_HddLed,100,192.168.200.10,0,自动指示灯,Y01,DO-01,0,
......@@ -42,13 +42,14 @@ DI,左侧门关闭,DoorColse_Single,203,192.168.200.11,0,左侧门关闭,X20,DI-24,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM4,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,1,COM5,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,1,COM6,0,,,,,
AXIS,(轴五)自动上下轴,Auto_Axis,1,COM7,0,,,,,
AXIS,(轴五)批量上下料轴,Batch_Axis,1,COM7,0,,,,,
,,,,,,,,,,
,,,,,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,403000,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,415000,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,415000,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,403000,,,,,,,
PRO,升降轴 待机点P1集合,UpDownAxis_P1_List,8#20000;12#22000,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,268093,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,-75000,,,,,,,
......@@ -125,16 +126,19 @@ PRO,硕科步进电机(压紧轴)控制减速度,CompressAxis_DelSpeed,15000,,,,,,,
PRO,硕科步进电机(压紧轴)控制归零速度(原点返回速度),CompressAxis_HomeSpeed,15000,,,,,,,
PRO,硕科步进电机轴地址(压紧轴),CompressAxis_Slv,1,,,,,, ,
,,,,,,,,,,
PRO,(轴五)自动轴目标速度,AutoAxis_TargetSpeed,50,,,,,,,
PRO,(轴五)自动轴加速度,AutoAxis_AddSpeed,300,,,,,,,
PRO,(轴五)自动轴减速度,AutoAxis_DelSpeed,300,,,,,,,
PRO,(轴五)自动轴原点低速,AutoAxis_HomeLowSpeed,20,,,,,,,
PRO,(轴五)自动轴原点高速,AutoAxis_HomeHighSpeed,60,,,,,,,
PRO,(轴五)自动轴原点加速度,AutoAxis_HomeAddSpeed,200,,,,,,,
PRO,(轴五)自动轴P1点,AutoAxis_P1,200,,,,,, ,
PRO,(轴五)自动轴停止时可误差的脉冲数的最小值,AutoAxis_ErrorCountMin,10,,,,,,,
PRO,(轴五)自动轴停止时可误差的脉冲数的最大值,AutoAxis_ErrorCountMax,1000,,,,,,,
PRO,(轴五)自动轴最小限位,AutoAxis_PositionMin,0,,,,,,,
PRO,(轴五)自动轴最大限位,AutoAxis_PositionMax,0,,,,,,,
PRO,(轴五)上料轴目标速度,BatchAxis_TargetSpeed,50,,,,,,,
PRO,(轴五)上料轴加速度,BatchAxis_AddSpeed,300,,,,,,,
PRO,(轴五)上料轴减速度,BatchAxis_DelSpeed,300,,,,,,,
PRO,(轴五)上料轴原点低速,BatchAxis_HomeLowSpeed,20,,,,,,,
PRO,(轴五)上料轴原点高速,BatchAxis_HomeHighSpeed,60,,,,,,,
PRO,(轴五)上料轴原点加速度,BatchAxis_HomeAddSpeed,200,,,,,,,
PRO,(轴五)上料轴P1点(出库时接料盘的位置),BatchAxis_P1,200,,,,,, ,
PRO,(轴五)上料轴停止时可误差的脉冲数的最小值,BatchAxis_ErrorCountMin,10,,,,,,,
PRO,(轴五)上料轴停止时可误差的脉冲数的最大值,BatchAxis_ErrorCountMax,1000,,,,,,,
PRO,(轴五)上料轴最小限位,BatchAxis_PositionMin,0,,,,,,,
PRO,(轴五)上料轴最大限位,BatchAxis_PositionMax,0,,,,,,,
PRO,(轴五)上料轴P1速度,BatchAxis_P1_Speed,50,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,192.168.200.10#16;192.168.200.11#4,,,,,, ,
PRO,模块对应的DO数量,IO_DOLength,192.168.200.10#16;192.168.200.11#4,,,,,,,
......@@ -144,12 +144,12 @@ namespace OnlineStore.DeviceLibrary
moveAxisList.Add(Config.Middle_Axis);
moveAxisList.Add(Config.UpDown_Axis);
moveAxisList.Add(Config.InOut_Axis);
moveAxisList.Add(Config.Auto_Axis);
moveAxisList.Add(Config.Batch_Axis);
this.AxisAlarmCodeMap = new Dictionary<string , AxisAlarmInfo>();
this.AxisAlarmCodeMap.Add(Config.UpDown_Axis.DeviceName, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(Config.InOut_Axis.DeviceName, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Middle_Axis.DeviceName, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Auto_Axis.DeviceName, new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Batch_Axis.DeviceName, new AxisAlarmInfo());
}
/// <summary>
......@@ -369,7 +369,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + "复位中:旋转轴运动到P1,上下轴走到P1,压紧轴到P1!");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.GetDefaultUpDownP1(), Config.UpDownAxis_P1_Speed);
ComMoveToPosition(Config.CompressAxis_P1_Position);
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
......@@ -398,7 +398,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1);
LogUtil.info(LOGGER, StoreName + "复位中:旋转轴运动到P1,上下轴走到P1,压紧轴到P1!");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.GetDefaultUpDownP1(), Config.UpDownAxis_P1_Speed);
ComMoveToPosition(Config.CompressAxis_P1_Position);
break;
case StoreMoveStep.BOX_M_H_TOP1_OtherAxisToP1:
......@@ -428,17 +428,33 @@ namespace OnlineStore.DeviceLibrary
}
private void OpenDoorAndWait()
{
KND.IOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KND.IOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
if (StoreMove.MoveType.Equals(StoreMoveType.InStore) || StoreMove.MoveType.Equals(StoreMoveType.OutStore))
{
//如果是批量出入库,不需要经过此门
if (StoreMove.IsBatchInOutStore)
{
return;
}
}
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.LOW));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.HIGH));
KND.IOMove(IO_Type.Door_Down, IO_VALUE.LOW);
KND.IOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
}
private void CloseDoorAndWait()
{
KND.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KND.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
if (StoreMove.MoveType.Equals(StoreMoveType.InStore) || StoreMove.MoveType.Equals(StoreMoveType.OutStore))
{
//如果是批量出入库,不需要经过此门
if (StoreMove.IsBatchInOutStore)
{
return;
}
}
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Down, IO_VALUE.HIGH));
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
KND.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
KND.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
/// <summary>
......@@ -497,7 +513,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + "回原点:旋转轴运动到P1,上下轴到P1,压紧轴到P1!");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.GetDefaultUpDownP1(), Config.UpDownAxis_P1_Speed);
ComMoveToPosition(Config.CompressAxis_P1_Position);
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
......@@ -1121,7 +1137,12 @@ namespace OnlineStore.DeviceLibrary
if (currInOutFixture.WareNum.Equals(""))
{
LogUtil.info(LOGGER, StoreName + "开始执行排队中的出库【" + currInOutFixture.ToStr() + "】");
StartOutStoreMove(new InOutStoreParam("", currInOutFixture.PosId, currInOutFixture.plateH, currInOutFixture.plateW));
bool result = StartOutStoreMove(new InOutStoreParam("", currInOutFixture.PosId, currInOutFixture.plateH, currInOutFixture.plateW),true);
if (!result)
{
LogUtil.info(LOGGER, StoreName + " 执行排队中的出库【" + currInOutFixture.ToStr() + "】失败,重新加入等待队列");
AddWaitOutInfo(currInOutFixture);
}
}
}
}
......@@ -1197,7 +1218,7 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.SuddenStop(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.Auto_Axis.DeviceName, Config.Auto_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.Batch_Axis.DeviceName, Config.Batch_Axis.GetAxisValue());
}
public override void StopMove(bool IsCloseAxis)
{
......@@ -1330,7 +1351,7 @@ namespace OnlineStore.DeviceLibrary
IsScanCode = false;
InOutStoreParam param = new InOutStoreParam(message, posId, plateH, plateW, 0);
StartInStoreMove(param);
StartInStoreMove(param,true);
//如果当前正在出入库中,需要记录下来,等待空闲时执行
LogUtil.info(LOGGER, StoreName + " 收到服务器入库命令:库位号【" + posId + "】二维码【" + message + "】 开始入库!");
}
......@@ -1640,7 +1661,7 @@ namespace OnlineStore.DeviceLibrary
{
if (CanStarInOut())
{
StartOutStoreMove(new InOutStoreParam("", posId, position));
StartOutStoreMove(new InOutStoreParam("", posId, position),true);
}
else
{
......
......@@ -22,7 +22,13 @@ namespace OnlineStore.DeviceLibrary
StoreMove.WaitList.Add(WaitResultInfo.WaitAutoAxisStop(moveAxis));
ACServerManager.SpeedMove(moveAxis.DeviceName, moveAxis.GetAxisValue(), targetSpeed);
}
private static void ACAxisRelMove(ConfigMoveAxis moveAxis, int targetPosition, int targetSpeed)
{
StoreMove.WaitList.Add(WaitResultInfo.WaitAxis(moveAxis, targetPosition, targetSpeed));
moveAxis.TargetPosition = targetPosition;
ACServerManager.AbsMove(moveAxis.DeviceName, moveAxis.GetAxisValue(), targetPosition, targetSpeed);
}
private static void ACAxisHomeMove(ConfigMoveAxis moveAxis)
{
moveAxis.TargetPosition = 0;
......@@ -170,13 +176,46 @@ namespace OnlineStore.DeviceLibrary
StoreManager.Store.Alarm(StoreAlarmType.IoSingleTimeOut, "", WarnMsg, StoreMove.MoveType);
}
}
/// <summary>
/// 判断AC伺服电机轴是否运动完成
/// </summary>
private static bool ACAxisMoveIsEnd(ConfigMoveAxis moveAxis, int targetPosition, int targetSpeed, out string msg)
{
msg = "";
bool isOk = ACServerManager.GetBusyStatus(moveAxis.DeviceName, moveAxis.GetAxisValue()).Equals(0);
if (isOk)
{
int outCount = ACServerManager.GetActualtPosition(moveAxis.DeviceName, moveAxis.GetAxisValue());
int errorCount = Math.Abs(outCount - targetPosition);
if (errorCount <= moveAxis.CanErrorCountMax)
{
return true;
}
//判断是否需要重新运动
if (StoreMove.CanWhileCount > 0)
{
LogUtil.error(Name + moveAxis.DisplayStr + "目标[" + targetPosition + "]当前[" + outCount +
"],误差过大,重新运动,剩余[" + StoreMove.CanWhileCount + "]次");
ACServerManager.AbsMove(moveAxis.DeviceName, moveAxis.GetAxisValue(), targetPosition, targetSpeed);
StoreMove.CanWhileCount--;
}
else
{
msg = Name + moveAxis.DisplayStr + "目标[" + targetPosition + "]当前[" + outCount + "],误差过大,需要报警";
LogUtil.error(msg);
}
}
return false;
}
private static bool AxisMoveISEnd(WaitResultInfo wait)
{
string msg = "";
if (wait.IsHomeMove)
{
wait.IsEnd = ACHomeMoveIsEnd(wait.AxisInfo, out msg);
}else
{
wait.IsEnd = ACAxisMoveIsEnd(wait.AxisInfo, wait.TargetPosition, wait.TargetSpeed, out msg);
}
if (!wait.IsEnd)
{
......
......@@ -92,7 +92,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 开始出库运动
/// </summary>
public abstract void StartOutStoreMove(InOutStoreParam param);
//public abstract bool StartOutStoreMove(InOutStoreParam param);
protected abstract void OutStoreProcess();
#endregion
......@@ -100,17 +100,17 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 开始入库移动移动
/// </summary>
public abstract void StartInStoreMove(InOutStoreParam param);
//public abstract bool StartInStoreMove(InOutStoreParam param);
protected abstract void InStoreProcess();
#endregion
public string GetRunStr()
public string GetRunStr(StoreRunStatus runStatus,bool IsStore)
{
string sta = "运行中";
string aa = "";
switch (storeRunStatus)
switch (runStatus)
{
case StoreRunStatus.Busy:
sta = "忙碌";
......@@ -128,7 +128,7 @@ namespace OnlineStore.DeviceLibrary
sta = "等待启动";
break;
}
if (storeRunStatus > StoreRunStatus.Wait)
if (runStatus > StoreRunStatus.Wait)
{
//"0":"急停中", "1":"设备联机", "2":"故障中", "3":"入库执行中", "4":"出库执行中", 5":"料盘入仓位完成", "6":"料盘出仓位完成", 7":"设备调试中",
switch (storeStatus)
......
......@@ -79,5 +79,11 @@ namespace OnlineStore.DeviceLibrary
/// 轴4( 压紧轴) 压紧前点P3
/// </summary>
public int ComPress_P3{ get; set; }
/// <summary>
/// 上下料轴需要下降的相对高度
/// </summary>
public int BatchAxis_DownValue = 0;
}
}
......@@ -240,14 +240,42 @@ namespace OnlineStore.DeviceLibrary
/// 等待拿走物品
/// </summary>
SO_14_WaitTake=114,
/// <summary>
/// 料仓出库,批量出库,所有轴运行到吸盘下方,,轴1( 转盘) 至P1( 待机点)轴2( 上下) 至P1
/// </summary>
SO_58_ToBatchDoorPosition = 158,
/// <summary>
/// 料仓出库,定位气缸退回(有压紧轴的不需要此步骤
/// </summary>
SO_59_LocationCylinder_Down = 159,
/// <summary>
/// 料仓出库,,叉子进出料口,,轴3( 叉子) 至P2( 进料口取料点)
/// /// </summary>
SO_60_DeviceToDoor = 160,
/// <summary>
/// 料仓出库,,把物品放下,,轴2( 上下) 至P8( 进料口出料缓冲点)轴4( 压紧) 至P1( 待机点)
/// </summary>
SO_61_DevicePutWare = 161,
/// <summary>
/// 料仓出库,,叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点)
/// 批量轴需要下降对应的高度
/// </summary>
SO_62_DeviceOutFromDoor = 162,
/// <summary>
/// 料仓出库,,升降轴返回,, 轴2至P1( 待机点)
/// </summary>
SO_63_GoBack = 163,
#endregion
#region 料仓内部入库步骤
/// <summary>
/// 入库检测
/// </summary>
SI_00_TrayCheck=200,
SI_00_TrayCheck =200,
/// <summary>
/// 入库,。定位气缸下降
/// </summary>
......@@ -270,6 +298,7 @@ namespace OnlineStore.DeviceLibrary
SI_05_DeviceToDoor = 205,
/// <summary>
/// 入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点),压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P2(压紧点)
/// 批量入库:此步骤表示吸盘放物品
/// </summary>
SI_06_DoorWarToDevice = 206,
......@@ -383,26 +412,30 @@ namespace OnlineStore.DeviceLibrary
#endregion
#region 自动上下料出料功能
/// <summary>
/// 吸盘吸走料盘,同时上料轴开始上升
/// </summary>
AUTO_O01_SuckingDisc_Work,
/// <summary>
/// 等待1秒后吸盘下降
/// </summary>
AUTO_O02_WaitTimeDown,
/// <summary>
/// 吸盘下降
/// </summary>
AUTO_O03_SuckingDisc_Down,
/// <summary>
/// 放下料盘
/// </summary>
AUTO_O04_PutTrayDown,
//#region 自动上下料出料功能
///// <summary>
///// 吸盘吸走料盘,同时上料轴开始上升
///// </summary>
//AUTO_O01_SuckingDisc_Work,
///// <summary>
///// 等待1秒后吸盘下降
///// </summary>
//AUTO_O02_WaitTimeDown,
#endregion
///// <summary>
///// 吸盘下降
///// </summary>
//AUTO_O03_SuckingDisc_Down,
///// <summary>
///// 放下料盘
///// </summary>
//AUTO_O04_PutTrayDown,
///// <summary>
///// 吸盘上升
///// </summary>
//AUTO_O05_SuckingDisc_Up,
//#endregion
}
public enum StoreAlarmType
......
......@@ -48,7 +48,7 @@ namespace OnlineStore.DeviceLibrary
get { return moveType; }
}
/// <summary>
///出入库参数
///出入库参数,料仓内部使用
/// </summary>
public InOutStoreParam MoveParam { get; set; }
/// <summary>
......@@ -60,6 +60,7 @@ namespace OnlineStore.DeviceLibrary
/// 是否再当前步骤等待中
/// </summary>
public bool IsInWait { get; set; }
/// <summary>
/// 上一个执行步骤
/// </summary>
......@@ -79,12 +80,17 @@ namespace OnlineStore.DeviceLibrary
{
get { return moveStep; }
}
/// <summary>
/// 是否是批量出入库
/// </summary>
public bool IsBatchInOutStore=true ;
public List<WaitResultInfo> WaitList = new List<WaitResultInfo>();
public void NextMoveStep(StoreMoveStep step)
{
PreMoveStep = moveStep;
moveStep = step;
LastSetpTime = DateTime.Now;
LastSetpTime = DateTime.Now;
IsInWait = true;
WaitList = new List<WaitResultInfo>();
OneWaitCanEndStep = false;
......@@ -124,20 +130,19 @@ namespace OnlineStore.DeviceLibrary
WaitList = new List<WaitResultInfo>();
CanWhileCount = 0;
}
public StoreMoveInfo clone()
{
return (StoreMoveInfo)this.MemberwiseClone();
}
//public StoreMoveInfo clone()
//{
// return (StoreMoveInfo)this.MemberwiseClone();
//}
public List<WaitResultInfo> WaitList = new List<WaitResultInfo>();
/// <summary>
/// 重置之后继续出入库时,退回上一个步骤执行
/// </summary>
public void BackStep()
{
moveStep = PreMoveStep;
IsInWait = false;
}
///// <summary>
///// 重置之后继续出入库时,退回上一个步骤执行
///// </summary>
//public void BackStep()
//{
// moveStep = PreMoveStep;
// IsInWait = false;
//}
}
public class WaitResultInfo
......@@ -401,11 +406,8 @@ namespace OnlineStore.DeviceLibrary
/// 高度
/// </summary>
public int HeightValue { get; set; }
internal static WaitResultInfo WaitIO(object trayCheck_Door, IO_VALUE hIGH)
{
throw new NotImplementedException();
}
}
public enum StoreMoveType
{
......
......@@ -59,11 +59,15 @@ namespace OnlineStore.LoadCSVLibrary
public int CompressAxis_CPosition_P3 { get; set; }
/// <summary>
/// 轴3(进出轴) 进料口取料点P2
/// 轴3(进出轴) 进料口取料点P2 ,料仓门口取料放料点
/// </summary>
[CSVAttribute("进出轴进料口取料点P2")]
[CSVAttribute("进出轴仓门取料点P2")]
public int InOutAxis_DoorPosition_P2 { get; set; }
/// <summary>
/// 轴3(进出轴) 进出轴吸盘取料点P2 ,吸盘下方取放料点,批量出入库时使用
/// </summary>
[CSVAttribute("进出轴吸盘取料点P2")]
public int InOutAxis_Batch_P2 { get; set; }
public static bool CheckPosition(AutoStorePosition position, AUTO_SA_Config Config)
{
try
......@@ -92,6 +96,11 @@ namespace OnlineStore.LoadCSVLibrary
LogUtil.error(position.PositionNum + " InOutAxis_Position_P3位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
return false;
}
if (iMin > position.InOutAxis_Batch_P2 || iMax < position.InOutAxis_Batch_P2)
{
LogUtil.error(position.PositionNum + " InOutAxis_Batch_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
return false;
}
}
if (Config.UpDown_Axis.PositionIsHasLimit())
{
......
......@@ -22,7 +22,7 @@ namespace OnlineStore.LoadCSVLibrary
/// 高
/// </summary>
[CSVAttribute("高度")]
public int BagHigh { get; set; }
public int BagHeight { get; set; }
/// <summary>
/// 宽
/// </summary>
......
......@@ -138,11 +138,11 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary>
/// 门锁气缸打开端 Door_Open X13 DI-13
/// </summary>
public static string AutoDoor_Open = "Door_Open";
public static string BatchDoor_Open = "Door_Open";
/// <summary>
/// 门锁气缸关闭端 Door_Close X14 DI-14
/// </summary>
public static string AutoDoor_Close = "Door_Close";
public static string BatchDoor_Close = "Door_Close";
/// <summary>
/// 料盘检测2(料叉机构) TrayCheck_Fixture X15 DI-15
/// </summary>
......@@ -169,5 +169,7 @@ namespace OnlineStore.LoadCSVLibrary
public static string SuckingDisc_Work = "SuckingDisc_Work";
public static string TrayCheck_Door = "TrayCheck_Door";
//public static string TrayCheck_Door = "TrayCheck_Door";
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!