Commit c0a0de6a LN

1

1 个父辈 ed18caa3
此文件类型无法预览
......@@ -230,6 +230,19 @@ namespace OnlineStore.AssemblyLine
lblStoreStatus.Text = KTK_Store.GetRunStr(equipBean.lineStatus, equipBean.runStatus);
lblThisSta.Text = equipBean.WarnMsg;
txtP1.Text = equipBean.Config.BatchAxisP1.ToString();
if (equipBean.Config.SidesWayNum > 0)
{
btnSwLocationCylinder.Visible = true;
btnSWTop.Visible = true;
btnFL_TopCylinder.Visible = false;
}
else
{
btnSwLocationCylinder.Visible = false ;
btnSWTop.Visible = false ;
btnFL_TopCylinder.Visible = true ;
}
IsLoad = true;
}
......
......@@ -3,6 +3,7 @@ PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,Name1#Name1,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,1,,,,,
PRO,0,是否是用来出料,IsCanOut,0,,,,,
,,,,,,,,,
AXIS,0,批量上料轴,Batch_Axis,2,COM1,0,,,
PRO,0,批量上料轴待机点 P1,BatchAxisP1,2000,,,,,
......
......@@ -3,6 +3,7 @@ PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,Name1#Name1,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,0,,,,,
PRO,0,是否是用来出料,IsCanOut,0,,,,,
,,,,,,,,,
AXIS,0,批量上料轴,Batch_Axis,2,COM1,0,,,
PRO,0,批量上料轴待机点 P1,BatchAxisP1,2000,,,,,
......@@ -81,8 +82,8 @@ DO,0,SL2上料气缸放松SOL,SL_FeedCylinder_Slack,0,192.168.200.24,0,SL2上料气缸放松
DO,0,SL2上料气缸夹紧SOL,SL_FeedCylinder_Tighten,1,192.168.200.24,0,SL2上料气缸夹紧SOL,Y162,Y162
DO,0,SL2托盘定位气缸1前进SOL,SL_TrayLocationCylinder_Before,2,192.168.200.24,0,SL2托盘定位气缸1前进SOL,Y163,Y163
DO,0,SL2托盘定位气缸1后退SOL,SL_TrayLocationCylinder_After,3,192.168.200.24,0,SL2托盘定位气缸1后退SOL,Y164,Y164
DO,0,FL1阻挡1下降SOL,FL_Stop1Down,4,192.168.200.24,0,FL1阻挡1下降SOL,Y165,Y165
DO,0,FL1阻挡2下降SOL,FL_Stop2Down,5,192.168.200.24,0,FL1阻挡2下降SOL,Y166,Y166
DO,0,FL1阻挡1下降SOL,FL_StopCylinder_Down1,4,192.168.200.24,0,FL1阻挡1下降SOL,Y165,Y165
DO,0,FL1阻挡2下降SOL,FL_StopCylinder_Down2,5,192.168.200.24,0,FL1阻挡2下降SOL,Y166,Y166
DO,0,FL1顶升上升SOL,FL_TopCylinder_Up,6,192.168.200.24,0,FL1顶升上升SOL,Y167,Y167
DO,0,FL1顶升下降SOL,FL_TopCylinder_Down,7,192.168.200.24,0,FL1顶升下降SOL,Y168,Y168
DO,0,SL2提升伺服刹车ON,SL_UpAxis_BreakOn,8,192.168.200.24,0,SL2提升伺服刹车ON,Y169,Y169
......
......@@ -3,6 +3,7 @@ PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,Name1#Name1,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,2,,,,,
PRO,0,是否是用来出料,IsCanOut,0,,,,,
,,,,,,,,,
AXIS,0,批量上料轴,Batch_Axis,2,COM1,0,,,
PRO,0,批量上料轴待机点 P1,BatchAxisP1,2000,,,,,
......
......@@ -3,6 +3,7 @@ PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,Name1#Name1,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,3,,,,,
PRO,0,是否是用来出料,IsCanOut,1,,,,,
,,,,,,,,,
AXIS,0,批量上料轴,Batch_Axis,2,COM1,0,,,
PRO,0,批量上料轴待机点 P1,BatchAxisP1,2000,,,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,0,,,,,
\ No newline at end of file
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,0,,,,,
\ No newline at end of file
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,1,,,,,
PRO,0,对应的横移模块,SidesWayNum,0,,,,,
\ No newline at end of file
......@@ -36,10 +36,10 @@ DI,18,进仓18夹料放松端,ClampCylinder_Tighten,1,192.168.200.46,0,进仓18夹料放松端
DI,18,进仓18升降上升端,UpDownCylinder_Up,2,192.168.200.46,0,进仓18升降上升端,X553,X553
DI,18,进仓18升降下降端,UpDownCylinder_Down,3,192.168.200.46,0,进仓18升降下降端,X554,X554
DI,204,出料4阻挡1托盘检测,StopCylinder_Check1,4,192.168.200.46,0,出料4阻挡1托盘检测,X555,X555
DI,1000,环形线横移4托盘检测,SW4_SideWay_TrayCheck,5,192.168.200.46,0,环形线横移4托盘检测,X556,X556
DI,1000,环形线横移4料盘检测1,SW4_SideWay_ReelCheck,6,192.168.200.46,0,环形线横移4料盘检测1,X557,X557
DI,1000,环形线横移4顶升上升端,SW4_TopCylinder_Up,7,192.168.200.46,0,环形线横移4顶升上升端,X558,X558
DI,1000,环形线横移4顶升下降端,SW4_TopCylinder_Down,8,192.168.200.46,0,环形线横移4顶升下降端,X559,X559
DI,204,出料4阻挡2托盘检测,StopCylinder_Check2,5,192.168.200.46,0,出料4阻挡2托盘检测,X556,X556
DI,204,出料4料盘检测,TrayCheck,6,192.168.200.46,0,出料4料盘检测,X557,X557
DI,204,出料4顶升上升端,TopCylinder_UP,7,192.168.200.46,0,出料4顶升上升端,X558,X558
DI,204,出料4顶升下降端,TopCylinder_Down,8,192.168.200.46,0,出料4顶升下降端,X559,X559
DI,204,出料4前后气缸前进端,BeforeAfterCylinder_Before,9,192.168.200.46,0,出料4前后气缸前进端,X560,X560
DI,204,出料4前后气缸后退端,BeforeAfterCylinder_After,10,192.168.200.46,0,出料4前后气缸后退端,X561,X561
DI,204,出料4夹料气缸夹紧端,ClampCylinder_Slack,11,192.168.200.46,0,出料4夹料气缸夹紧端,X562,X562
......@@ -70,8 +70,8 @@ DO,18,进仓18升降上升SOL,UpDownCylinder_Up,2,192.168.200.46,0,进仓18升降上升SOL,Y
DO,18,进仓18升降下降SOL,UpDownCylinder_Down,3,192.168.200.46,0,进仓18升降下降SOL,Y554,Y554
DO,204,出料4阻挡1下降SOL,StopCylinder_Down1,4,192.168.200.46,0,出料4阻挡1下降SOL,Y555,Y555
DO,204,出料4阻挡2下降SOL,StopCylinder_Down2,5,192.168.200.46,0,出料4阻挡2下降SOL,Y556,Y556
DO,1000,环形线横移4顶升上升SOL,SW4_TopCylinder_Up,6,192.168.200.46,0,环形线横移4顶升上升SOL,Y557,Y557
DO,1000,环形线横移4顶升下降SOL,SW4_TopCylinder_Down,7,192.168.200.46,0,环形线横移4顶升下降SOL,Y558,Y558
DO,204,出料4顶升上升SOL,TopCylinder_UP,6,192.168.200.46,0,出料4顶升上升SOL,Y557,Y557
DO,204,出料4顶升下降SOL,TopCylinder_Down,7,192.168.200.46,0,出料4顶升下降SOL,Y558,Y558
DO,204,出料4前后气缸前进SOL,BeforeAfterCylinder_Before,8,192.168.200.46,,出料4前后气缸前进SOL,Y559,Y559
DO,204,出料4前后气缸后退SOL,BeforeAfterCylinder_After,9,192.168.200.46,,出料4前后气缸后退SOL,Y560,Y560
DO,204,出料4夹料气缸夹紧SOL,ClampCylinder_Slack,10,192.168.200.46,,出料4夹料气缸夹紧SOL,Y561,Y561
......@@ -79,5 +79,11 @@ DO,204,出料4夹料气缸放松SOL,ClampCylinder_Tighten,11,192.168.200.46,,出料4夹料气
DO,204,出料4上下气缸上升SOL,UpDownCylinder_Up,12,192.168.200.46,,出料4上下气缸上升SOL,Y563,Y563
DO,204,出料4上下气缸下降SOL,UpDownCylinder_Down,13,192.168.200.46,,出料4上下气缸下降SOL,Y564,Y564
,,,,14,192.168.200.46,,,Y565,Y565
,,,,15,192.168.200.46,,,Y566,Y566
,,,,,,,,,
DI,1000,环形线横移4托盘检测,SW4_SideWay_TrayCheck,5,192.168.200.46,0,环形线横移4托盘检测,X556,X556
DI,1000,环形线横移4料盘检测1,SW4_SideWay_ReelCheck,6,192.168.200.46,0,环形线横移4料盘检测1,X557,X557
DI,1000,环形线横移4顶升上升端,SW4_TopCylinder_Up,7,192.168.200.46,0,环形线横移4顶升上升端,X558,X558
DI,1000,环形线横移4顶升下降端,SW4_TopCylinder_Down,8,192.168.200.46,0,环形线横移4顶升下降端,X559,X559
,,,,,,,,,
DO,1000,环形线横移4顶升上升SOL,SW4_TopCylinder_Up,6,192.168.200.46,0,环形线横移4顶升上升SOL,Y557,Y557
DO,1000,环形线横移4顶升下降SOL,SW4_TopCylinder_Down,7,192.168.200.46,0,环形线横移4顶升下降SOL,Y558,Y558
......@@ -194,7 +194,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 下降所有阻挡气缸
/// </summary>
internal void OpenStopCylinder()
internal virtual void OpenStopCylinder()
{
if (baseConfig.DType.Equals(DeviceType.MoveEquip) || baseConfig.DType.Equals(DeviceType.ProvidingEquip))
{
......@@ -212,7 +212,7 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.TopCylinder_Down, IO_VALUE.HIGH);
}
}
internal void CloseCylinderStop()
internal virtual void CloseCylinderStop()
{
if (baseConfig.DType.Equals(DeviceType.MoveEquip) || baseConfig.DType.Equals(DeviceType.ProvidingEquip))
{
......@@ -238,7 +238,7 @@ namespace OnlineStore.DeviceLibrary
}
string portName = axis.DeviceName;
int slvAddr = axis.GetAxisValue();
IOMove(IO_Type.BatchAxis_ServoOn, IO_VALUE.HIGH);
IOMove(axis.ServerOnDO, IO_VALUE.HIGH);
Thread.Sleep(1000);
//打开所有轴
ACServerManager.OpenPort(portName);
......@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary
}
}
IsIntSlvBlock = true;
IOMove(IO_Type.BatchAxis_BreakOn, IO_VALUE.HIGH);
IOMove(axis.BreakOnDO, IO_VALUE.HIGH);
return true;
}
......@@ -314,14 +314,14 @@ namespace OnlineStore.DeviceLibrary
string portName = axis.DeviceName;
int slvAddr = axis.GetAxisValue();
LogUtil.info(Name + "关闭刹车,关闭伺服");
IOMove(IO_Type.BatchAxis_BreakOn, IO_VALUE.LOW);
IOMove(axis.BreakOnDO, IO_VALUE.LOW);
ACServerManager.ServoOff(portName, slvAddr);
//关闭串口,等下次重新打开
ACServerManager.ColsePort(portName);
Thread.Sleep(100);
IOMove(IO_Type.BatchAxis_ServoOn, IO_VALUE.LOW);
IOMove(axis.ServerOnDO, IO_VALUE.LOW);
}
......@@ -524,10 +524,10 @@ namespace OnlineStore.DeviceLibrary
int storeId = moveInfo.MoveParam.GetStoreId();
wait.IsEnd = LineServer.BoxCanReviceTray(storeId);
}
else if (wait.WaitType.Equals(10))
{
wait.IsEnd = LineManager.Line.SideWay34HasTray().Equals(false);
}
//else if (wait.WaitType.Equals(10))
//{
// wait.IsEnd = LineManager.Line.SideWay34HasTray().Equals(false);
//}
if (wait.IsEnd && moveInfo.OneWaitCanEndStep)
{
isOk = true;
......@@ -554,5 +554,20 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
protected void CheckLog(string msg)
{
LogUtil.debug(Name + msg);
}
protected void InStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
protected void OutStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
}
}
......@@ -389,8 +389,58 @@ namespace OnlineStore.DeviceLibrary
{
}
protected override void CheckFixtureProcess()
/// <summary>
/// 是否需要拦截当前托盘进行处理
/// </summary>
/// <returns></returns>
internal bool NeedCurrTray()
{
int num = TrayManager.GetNum(Config.Id);
bool isFull = TrayManager.IsFixTureFull(num);
if (Config.IsCanOut.Equals(1))
{
if (isFull && runStatus.Equals(LineRunStatus.Runing) && MoveInfo.MoveType.Equals(LineMoveType.OutStore))
{
return true;
}
}
else
{
if (!isFull && runStatus.Equals(LineRunStatus.Runing) && MoveInfo.MoveType.Equals(LineMoveType.InStore))
{
return true;
}
}
return false;
} /// <summary>
/// 下降所有阻挡气缸
/// </summary>
internal override void OpenStopCylinder()
{
if (Config.SidesWayNum<=0)
{
LogInfo("下降阻挡气缸,下降顶升气缸 ");
IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.HIGH);
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH);
//顶升气缸下降
IOMove(IO_Type.FL_TopCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.FL_TopCylinder_Down, IO_VALUE.HIGH);
}
}
internal override void CloseCylinderStop()
{
if (Config.SidesWayNum <= 0)
{
LogInfo("上升阻挡气缸,关闭 顶升气缸IO");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
//顶升气缸下降
IOMove(IO_Type.FL_TopCylinder_Up, IO_VALUE.LOW);
IOMove(IO_Type.FL_TopCylinder_Down, IO_VALUE.LOW);
}
}
}
}
......@@ -64,8 +64,8 @@ namespace OnlineStore.DeviceLibrary
baseConfig = lineConfig;
this.Config = lineConfig;
this.DeviceID = lineConfig.Id;
SW12_MoveInfo = new LineMoveInfo(DeviceID, "横移轨道-12");
SW34_MoveInfo = new LineMoveInfo(DeviceID, "横移轨道-34");
SW41_MoveInfo = new LineMoveInfo(DeviceID, "横移轨道-41");
SW23_MoveInfo = new LineMoveInfo(DeviceID, "横移轨道-23");
MoveInfo = new LineMoveInfo(DeviceID, "流水线-Move ");
Name = (" 流水线_" + Config.CID + " ").ToUpper();
......@@ -217,7 +217,7 @@ namespace OnlineStore.DeviceLibrary
}
private void RHomeOp()
{
TrayManager.SidesWayStateMap = new Dictionary<int, int>();
alarmType = LineAlarmType.None;
mainTimer.Enabled = false;
IoCheckTimer.Enabled = false;
......@@ -227,7 +227,6 @@ namespace OnlineStore.DeviceLibrary
alarmType = LineAlarmType.None;
TrayManager.TrayErrorMsg = "";
WarnMsg = "";
preTrayNum = 0;
PreIsHasProcess = true;
if (TrayManager.ErrorStoreId > 0)
......@@ -244,8 +243,8 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(null, IO_Type.NGCylinder_Before, IO_Type.NGCylinder_After);
////阻挡都上升
//IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
//IOMove(IO_Type.StopCylinder_Down2, IO_VALUE.LOW);
//IOMove(IO_Type.FL_StopCylinder_Down1, IO_VALUE.LOW);
//IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.LOW);
//横移轨道下降
SideWayReset();
}
......@@ -375,11 +374,11 @@ namespace OnlineStore.DeviceLibrary
{
return true;
}
if (SW12_MoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
if (SW41_MoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
{
return true;
}
if (SW34_MoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
if (SW23_MoveInfo.MoveType.Equals(LineMoveType.None).Equals(false))
{
return true;
}
......@@ -888,7 +887,7 @@ namespace OnlineStore.DeviceLibrary
string wareNum = serverResult.barcode ;
int trayCode = TrayManager.GetNum(0);
LogUtil.info( "更新盘空满信息,托盘号【" + trayCode + "】,是否有料盘【" + true + "】,出库入库【" + 1 + "】");
TrayManager.UpdateFixtureValue(trayCode, true, 1);
TrayManager.UpdateFixtureValue(trayCode, true, 1,wareNum,posId,plateH,plateW);
//TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器;
if (LineServer.BoxCanInStore(moveEquip.DeviceID))
......
......@@ -39,6 +39,9 @@ namespace OnlineStore.DeviceLibrary
Config.UpDown_Axis.HomeAddSpeed = Config.UpdownAxis_HomeAddSpeed;
Config.UpDown_Axis.HomeHighSpeed = Config.UpdownAxis_HomeHighSpeed;
Config.UpDown_Axis.HomeLowSpeed = Config.UpdownAxis_HomeLowSpeed;
Config.UpDown_Axis.ServerOnDO = IO_Type.UpDownAxis_ServoOn;
Config.UpDown_Axis.BreakOnDO = IO_Type.UpDownAxis_BreakOn;
}
}
......@@ -187,11 +190,11 @@ namespace OnlineStore.DeviceLibrary
runStatus = LineRunStatus.Reset;
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset);
UpDownStartReset();
StartReset();
return true;
}
private void UpDownStartReset()
private void StartReset()
{
//移载装置原点状态:顶升气缸下降端,前后气缸后退端,上下气缸上升端,夹料气缸放松端,阻挡气缸输入=0
UpdownHomeMove();
......
......@@ -141,17 +141,10 @@ namespace OnlineStore.DeviceLibrary
{
OutStoreLog("出库:(MO_07_ClampCylinderTighten 夹料气缸1放松 )");
int bagWidth = MoveInfo.MoveParam.PlateW;
if (MoveInfo.MoveParam != null)
{
LogInfo("【" + posId + "】出库时,更新盘空满信息 托盘号【" + MoveInfo.MoveParam.TrayNumber + "】,是否有料盘【" + true + "】,出库入库【" + 2 + "】");
TrayManager.UpdateFixtureValue(MoveInfo.MoveParam.TrayNumber, true, 2, bagWidth);
}
else
{
int num = TrayManager.GetNum(DeviceID);
LogInfo("【" + posId + "】出库时,更新盘空满信息 托盘号【" + num + "】,是否有料盘【" + true + "】,出库入库【" + 2 + "】");
TrayManager.UpdateFixtureValue(num, true, 2, bagWidth);
}
TrayManager.UpdateFixtureValue(MoveInfo.MoveParam.TrayNumber, true, 2, MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PosId, MoveInfo.MoveParam.PlateH, bagWidth);
//出库全部完成
lineStatus = LineStatus.StoreOnline;
MoveInfo.NextMoveStep(LineMoveStep.MO_59_ClampCylinderTighten);
......@@ -256,7 +249,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.MI_10_WaitBox);
LogInfo("入库【" + posId + "】处理(等待移栽):(判断box门口没有盘, 且可以入库),更新盘号【" + num + "】为空盘");
MoveInfo.WaitList.Add(WaitResultInfo.WaitBoxCanReviceTray());
TrayManager.UpdateFixtureValue(num, false, 0);
TrayManager.UpdateFixtureValue(num );
//阻挡气缸移动
InStoreLog("放托盘(放开阻挡):SecondStoreMove=MO_09_TopCylinder_Down 物品已移走,顶升气缸1下降)");
......@@ -660,20 +653,7 @@ namespace OnlineStore.DeviceLibrary
#endregion
private void CheckLog(string msg)
{
LogUtil.debug(Name + msg);
}
private void InStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
private void OutStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
}
}
......@@ -98,7 +98,7 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.EndMove();
MoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.ReturnHome);
UpdownCylinderStartReset();
StartReset();
return true;
}
......@@ -113,12 +113,12 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.EndMove();
SecondMoveInfo.EndMove();
MoveInfo.NewMove(LineMoveType.Reset);
UpdownCylinderStartReset();
StartReset();
return true;
}
private void UpdownCylinderStartReset()
private void StartReset()
{
MoveInfo.NextMoveStep(LineMoveStep.MH_UpDownCylinder_Up);
CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Down, IO_Type.UpDownCylinder_Up);
......
......@@ -19,6 +19,7 @@ namespace OnlineStore.DeviceLibrary
//托盘在两个阻挡内
if (num > 0)
{
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
CheckLog("托盘检测(流水线阻挡)SecondStoreMove:(MIO_03_StopCylinder2Down 阻挡气缸1-1上升)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopCylinder2Down);
......@@ -35,6 +36,7 @@ namespace OnlineStore.DeviceLibrary
//托盘在第一个阻挡处
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down);
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog(" 托盘检测:料盘检测 SecondStoreMove(MIO_01_StopCylinder1Down阻挡气缸1-1下降 ,最多等待1秒)");
IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH));
......@@ -194,12 +196,14 @@ namespace OnlineStore.DeviceLibrary
{
CheckLog("托盘放行 SecondStoreMove:(MO_07_WaitCanGo ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_07_WaitCanGo);
if (DeviceID.Equals(2))
{
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitSideWay());
SecondMoveInfo.OneWaitCanEndStep = true;
}
//更新横移托盘已处理完成
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
//if (DeviceID.Equals(2))
//{
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitSideWay());
// SecondMoveInfo.OneWaitCanEndStep = true;
//}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_07_WaitCanGo))
......@@ -305,7 +309,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.PO_05_WaitBox);
LogInfo("出料PO_05_WaitBox【" + posId + "】处理(等待可以移栽) 更新盘号【" + num + "】为空盘");
MoveInfo.WaitList.Add(WaitResultInfo.WaitBoxCanReviceTray());
TrayManager.UpdateFixtureValue(num, false, 0);
TrayManager.UpdateFixtureValue(num );
//阻挡气缸移动
InStoreLog("放托盘(放开阻挡):SecondStoreMove=MO_09_TopCylinder_Down 物品已移走,顶升气缸1下降)");
......@@ -354,20 +358,6 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
private void CheckLog(string msg)
{
LogUtil.debug(Name + msg);
}
private void InStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
private void OutStoreLog(string msg)
{
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
LogUtil.info(Name + "【" + posId + "】" + msg);
}
}
}
......@@ -14,8 +14,6 @@ namespace OnlineStore.DeviceLibrary
/// 出库时,可以不下降直接放料盘的宽度
/// </summary>
public const int CanPushBagWidth = 7;
/// <summary>
/// 放在公共地方,方便存取,夹料编码盘列表,key=编码(1-6),value=是否有物品,true=有物品
/// </summary>
......@@ -24,11 +22,11 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 流水线需要的空盘数量
/// </summary>
public static int LineNeedEmptyTrayNum = 0;
internal static int LineNeedEmptyTrayNum = 0;
/// <summary>
/// 最大托盘号,必须按照顺序从1到6走过
/// </summary>
public static int MaxTrayNum = 0;
internal static int MaxTrayNum = 0;
/// <summary>
/// 托盘错误消息
/// </summary>
......@@ -43,23 +41,20 @@ namespace OnlineStore.DeviceLibrary
{
LineRunTest = ConfigAppSettings.GetIntValue(Setting_Init.LineRunTest).Equals(1);
}
public static bool isNeedEmptyTray()
{
if (LineRunTest)
{
return true;
}
return LineNeedEmptyTrayNum > 0;
}
public static void AddNeedEmptyTrayNum()
//public static bool isNeedEmptyTray()
//{
// if (LineRunTest)
// {
// return true;
// }
// return LineNeedEmptyTrayNum > 0;
//}
internal static void AddNeedEmptyTrayNum()
{
Interlocked.Increment(ref LineNeedEmptyTrayNum);
}
public static void DelNeedEmptyTrayNum()
internal static void DelNeedEmptyTrayNum()
{
Interlocked.Decrement(ref LineNeedEmptyTrayNum);
}
......@@ -70,7 +65,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// <param name="trayNum">盘号1-6</param>
/// <returns>盘上是否有料盘</returns>
public static bool IsFixTureFull(int trayNum)
internal static bool IsFixTureFull(int trayNum)
{
lock (fixtureMapLock)
{
......@@ -103,17 +98,17 @@ namespace OnlineStore.DeviceLibrary
// }
// return false;
//}
public static void UpdateFixtureValue(int trayNum, bool isFull, int inOrOut)
{
UpdateFixtureValue(trayNum, isFull, inOrOut, 0);
}
//public static void UpdateFixtureValue(int trayNum, bool isFull, int inOrOut)
//{
// UpdateFixtureValue(trayNum, isFull, inOrOut, 0);
//}
/// <summary>
/// 更新对应的盘号(1-6)是否有料盘
/// </summary>
/// <param name="trayNum"></param>
/// <param name="isFull"></param>
/// <param name="inOrOut">0=无操作,1=入库,2=出库</param>
public static void UpdateFixtureValue(int trayNum, bool isFull, int inOrOut, int bagWidth)
internal static void UpdateFixtureValue(int trayNum, bool isFull=false, int inOrOut=0, string wareCode = "", string posId = "", int plateH = 0, int plateW = 0)
{
lock (fixtureMapLock)
{
......@@ -121,11 +116,16 @@ namespace OnlineStore.DeviceLibrary
{
fixtureCodeFullMap[trayNum].IsFull = isFull;
fixtureCodeFullMap[trayNum].InOrOutStore = inOrOut;
fixtureCodeFullMap[trayNum].BagWidth = bagWidth;
fixtureCodeFullMap[trayNum].WareCode = wareCode;
fixtureCodeFullMap[trayNum].PosId = posId;
fixtureCodeFullMap[trayNum].PlateH = plateH;
fixtureCodeFullMap[trayNum].PlateW = plateW;
}
else
{
TrayInfo fixture = new TrayInfo(trayNum, isFull, inOrOut, bagWidth);
TrayInfo fixture = new TrayInfo(trayNum, isFull, inOrOut, wareCode, posId, plateH, plateW);
fixtureCodeFullMap.Add(trayNum, fixture);
}
}
......@@ -133,7 +133,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 是否还有有料仓的盘
/// </summary>
public static bool IsHasFull()
internal static bool IsHasFull()
{
foreach (int key in fixtureCodeFullMap.Keys)
{
......@@ -147,7 +147,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 是否还有有料仓正在出库的盘
/// </summary>
public static bool IsHasFullOutFixture()
internal static bool IsHasFullOutFixture()
{
foreach (int key in fixtureCodeFullMap.Keys)
{
......@@ -159,7 +159,7 @@ namespace OnlineStore.DeviceLibrary
return false;
}
public static bool RightTrayCode(int trayNum, int preTrayNum, bool isCanUpdateMax)
internal static bool RightTrayCode(int trayNum, int preTrayNum, bool isCanUpdateMax)
{
int defNext = preTrayNum + 1;
if (preTrayNum.Equals(0) || MaxTrayNum.Equals(0) || trayNum.Equals(defNext))
......@@ -178,7 +178,7 @@ namespace OnlineStore.DeviceLibrary
return false;
}
public static void UpdateTrayNumError(int errorStoreID, string errorMsg)
internal static void UpdateTrayNumError(int errorStoreID, string errorMsg)
{
TrayErrorMsg = errorMsg;
ErrorStoreId = errorStoreID;
......@@ -196,5 +196,54 @@ namespace OnlineStore.DeviceLibrary
return subType;
}
#region 横移状态缓存
internal static Dictionary<int, int> SidesWayStateMap = new Dictionary<int, int>();
internal static object swMapLock = "";
internal static bool CanMoveSidesWay(int swNum)
{
if (SidesWayStateMap.ContainsKey(swNum))
{
if (SidesWayStateMap[swNum].Equals(1))
{
return true;
}
else if (swNum.Equals(1) || swNum.Equals(2))
{
if (SidesWayStateMap[swNum].Equals(0))
{
return true;
}
}
}
return false;
}
/// <summary>
/// 更新横移托盘的处理状态
/// </summary>
/// <param name="swNum">横移编号</param>
/// <param name="value">0=未处理等待中,1=托盘处理完成,可处理横移,2=托盘正在处理中</param>
internal static void UpdateSWState(int swNum,int value)
{
if (swNum <= 0)
{
return;
}
lock (swMapLock)
{
if (SidesWayStateMap.ContainsKey(swNum))
{
SidesWayStateMap[swNum] = value;
}
else
{
SidesWayStateMap.Add(swNum, value);
}
}
}
#endregion
}
}
......@@ -88,9 +88,10 @@ namespace OnlineStore.DeviceLibrary
{
if (LineManager.allConfigMap.ContainsKey(subType))
{
if (LineManager.allConfigMap[subType].DIList.ContainsKey(ioType))
string newType = ioType.Replace("SW1_", "SW_").Replace("SW2_", "SW_").Replace("SW3_", "SW_").Replace("SW4_", "SW_");
if (LineManager.allConfigMap[subType].DIList.ContainsKey(newType))
{
return LineManager.allConfigMap[subType].DIList[ioType];
return LineManager.allConfigMap[subType].DIList[newType];
}
}
......@@ -111,9 +112,10 @@ namespace OnlineStore.DeviceLibrary
{
if (LineManager.allConfigMap.ContainsKey(subType))
{
if (LineManager.allConfigMap[subType].DOList.ContainsKey(ioType))
string newType=ioType.Replace("SW1_", "SW_").Replace("SW2_", "SW_").Replace("SW3_", "SW_").Replace("SW4_", "SW_");
if (LineManager.allConfigMap[subType].DOList.ContainsKey(newType))
{
return LineManager.allConfigMap[subType].DOList[ioType];
return LineManager.allConfigMap[subType].DOList[newType];
}
}
......
......@@ -380,9 +380,9 @@ namespace OnlineStore.DeviceLibrary
#region 横移轨道处理 5000 开始
SW00_Wait=5000,
/// <summary>
/// 阻挡气缸下降
/// 定位气缸下降
/// </summary>
SW01_StopCylinderDown=5001,
SW01_LocationCylinderDown=5001,
/// <summary>
/// 等待轨道1夹具检测信号
......
......@@ -12,14 +12,22 @@ namespace OnlineStore.DeviceLibrary
public class TrayInfo
{
public TrayInfo(int trayNum, bool isFull, int inOrOut, int bagWidth)
public TrayInfo(int trayNum, bool isFull=false, int inOrOut=0 )
{
this.TrayCode = trayNum;
this.IsFull = isFull;
this.InOrOutStore = inOrOut;
BagWidth = bagWidth;
}
public TrayInfo (int trayNum, bool isFull , int inOrOut ,string wareCode,string posId,int plateH,int plateW)
{
this.TrayCode = trayNum;
this.IsFull = isFull;
this.InOrOutStore = inOrOut;
this.WareCode = wareCode;
this.PosId = posId;
this.PlateH = plateH;
this.PlateW = plateW;
}
/// <summary>
/// 夹具编码值(1-6)
/// </summary>
......@@ -32,10 +40,22 @@ namespace OnlineStore.DeviceLibrary
/// 出库还是入库(有料盘时才有此操作)0=无操作,1=入库,2=出库
/// </summary>
public int InOrOutStore { get; set; }
/// <summary>
/// 物品二维码信息
/// </summary>
public string WareCode { get; set; }
/// <summary>
/// 位置坐标名(对应配置表的位置)
/// </summary>
public string PosId { get; set; }
/// <summary>
/// 料盘高度
/// </summary>
public int PlateH { get; set; }
/// <summary>
/// 如果是出库,需要记录盘宽,七寸小盘可以累积到托盘上
/// 只有出库才会有值
/// 料盘宽度
/// </summary>
public int BagWidth { get; set; }
public int PlateW { get; set; }
}
}
......@@ -85,6 +85,14 @@ namespace OnlineStore.LoadCSVLibrary
public class ConfigMoveAxis : ConfigBase
{
/// <summary>
/// 伺服ON的Do信号
/// </summary>
public string ServerOnDO ="" ;
/// <summary>
/// 伺服刹车信号
/// </summary>
public string BreakOnDO = "";
/// <summary>
/// 使用AC伺服时表示串口号,使用康泰克运动版表示板卡名称
/// </summary>
[CSVAttribute("设备名称")]
......
......@@ -145,7 +145,6 @@ namespace OnlineStore.LoadCSVLibrary
public int UpdownAxis_HomeAddSpeed { get; set; }
/// <summary>
/// PRO,0,移栽上下轴走到待机点速度,UpdownAxis_P1Speed,400,,,,,
/// </summary>
......@@ -157,7 +156,11 @@ namespace OnlineStore.LoadCSVLibrary
[ConfigProAttribute("UpdownAxis_DownSpeed", false)]
public int UpdownAxis_DownSpeed { get; set; }
/// <summary>
/// PRO,0,是否是用来出料,IsCanOut,1,,,,,
/// </summary>
[ConfigProAttribute("IsCanOut", false)]
public int IsCanOut { get; set; }
private Dictionary<int, int> UpDownPositionMap = null;
public int GetUpdownPosition(int trayHeight)
......@@ -277,12 +280,18 @@ namespace OnlineStore.LoadCSVLibrary
this.Batch_Axis.HomeHighSpeed = this.BatchAxis_HomeHighSpeed;
this.Batch_Axis.HomeLowSpeed = this.BatchAxis_HomeLowSpeed;
this.Batch_Axis.ServerOnDO = IO_Type.BatchAxis_ServoOn;
this.Batch_Axis.BreakOnDO = IO_Type.BatchAxis_BreakOn;
this.UpDown_Axis.TargetSpeed = this.UpdownAxis_TargetSpeed;
this.UpDown_Axis.AddSpeed = this.UpdownAxis_AddSpeed;
this.UpDown_Axis.DelSpeed = this.UpdownAxis_DelSpeed;
this.UpDown_Axis.HomeAddSpeed = this.UpdownAxis_HomeAddSpeed;
this.UpDown_Axis.HomeHighSpeed = this.UpdownAxis_HomeHighSpeed;
this.UpDown_Axis.HomeLowSpeed = this.UpdownAxis_HomeLowSpeed;
this.UpDown_Axis.ServerOnDO = IO_Type.UpDownAxis_ServoOn;
this.UpDown_Axis.BreakOnDO = IO_Type.UpDownAxis_BreakOn;
}
}
}
......@@ -628,13 +628,13 @@ namespace OnlineStore.LoadCSVLibrary
public static string FL_TopCylinder_Down = "FL_TopCylinder_Down";
/// <summary>
/// DO FL1阻挡1下降SOL FL_Stop1Down Y165
/// DO FL1阻挡1下降SOL FL_StopCylinder_Down1 Y165
/// </summary>
public static string FL_Stop1Down = "FL_Stop1Down";
public static string FL_StopCylinder_Down1 = "FL_StopCylinder_Down1";
/// <summary>
/// DO FL1阻挡2下降SOL FL_Stop2Down Y166
/// DO FL1阻挡2下降SOL FL_StopCylinder_Down2 Y166
/// </summary>
public static string FL_Stop2Down = "FL_Stop2Down";
public static string FL_StopCylinder_Down2 = "FL_StopCylinder_Down2";
#endregion
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!