Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
SO908-XLRStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit ef59ea1a
由
刘韬
编写于
2024-12-29 11:26:41 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
f2afb3e6
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
247 行增加
和
0 行删除
source/DeviceLibrary/storeBean/boxBean/BoxEquip_InExecute_Partial.cs
source/DeviceLibrary/storeBean/boxBean/BoxEquip_InExecute_Partial.cs
0 → 100644
查看文件 @
ef59ea1
using
CodeLibrary
;
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Drawing
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
System.Windows.Forms.VisualStyles
;
namespace
OnlineStore.DeviceLibrary
{
partial
class
BoxEquip
{
#
region
入库
,
两侧都有料
private
void
BothComAxis_To_P2
(
bool
isdebugSpeed
=
false
)
{
if
(
isdebugSpeed
)
{
ComAxis_A
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
ComAxis_AB_P2
,
Config
.
ComAxis_FindPosSpeed
);
ComAxis_B
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
ComAxis_AB_P2
,
Config
.
ComAxis_FindPosSpeed
);
}
else
{
ComAxis_A
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
ComAxis_AB_P2
,
Config
.
ComAxis_A_P2_Speed
);
ComAxis_B
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
ComAxis_AB_P2
,
Config
.
ComAxis_B_P2_Speed
);
}
}
private
void
BothMiddleAxis_To_P2
(
bool
isdebugSpeed
=
false
)
{
MiddleAxis_A
.
AbsMove
(
MoveInfo
,
Config
.
MiddleAxis_A_P2
,
Config
.
MiddleAxis_A_P2_Speed
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
AHorizontal_Check
,
IO_VALUE
.
HIGH
));
MiddleAxis_B
.
AbsMove
(
MoveInfo
,
Config
.
MiddleAxis_B_P2
,
Config
.
MiddleAxis_B_P2_Speed
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
BHorizontal_Check
,
IO_VALUE
.
HIGH
));
}
private
void
BothXAxis_To_P1
(
bool
isdebugSpeed
=
false
)
{
if
(!
XAxis_A
.
IsInPosition
(
Config
.
XAxis_A_P1
))
{
if
(
isdebugSpeed
)
XAxis_A
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_A_P1
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_A
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_A_P1
,
Config
.
XAxis_A_P1_Speed
);
}
if
(!
XAxis_B
.
IsInPosition
(
Config
.
XAxis_B_P1
))
{
if
(
isdebugSpeed
)
XAxis_B
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_B_P1
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_B
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_B_P1
,
Config
.
XAxis_B_P1_Speed
);
}
}
private
bool
InDoorBothCheck
(
InOutParam
param
)
{
if
(
param
.
PosInfo
==
null
)
return
false
;
if
(
param
.
PosInfoBack
==
null
)
return
false
;
if
(
param
.
PosInfo
!=
null
)
{
if
(
param
.
PosInfoBack
!=
null
)
{
return
true
;
}
}
return
false
;
}
private
void
BothXAxis_To_P2
(
bool
isdebugSpeed
=
false
)
{
if
(
isdebugSpeed
)
XAxis_B
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_B_P2
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_B
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_B_P2
,
Config
.
XAxis_B_P2_Speed
);
if
(
isdebugSpeed
)
XAxis_A
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_A_P2
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_A
.
AbsMove
(
MoveInfo
,
Config
.
XAxis_A_P2
,
Config
.
XAxis_A_P2_Speed
);
}
private
void
AddBothReelCheck
(
bool
hasReel
)
{
//if (CheckASide())
//{
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.ForkA_Tray_Check, hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW));
//}
//else
//{
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.ForkB_Tray_Check, hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW));
//}
}
int
comAxis_offset
=
ConfigAppSettings
.
GetIntValue
(
"Coeff_ComAxis"
);
private
void
BothComAxis_To_P3
(
bool
isdebugSpeed
=
false
)
{
int
diff
=
0
;
BoxPosition
position
=
CSVPositionReader
<
BoxPosition
>.
GetPositon
(
MoveInfo
.
MoveParam
.
PosInfo
.
PosId
);
if
(
position
!=
null
)
{
diff
=
position
.
BagHigh
-
MoveInfo
.
MoveParam
.
PosInfo
.
PlateH
;
if
(
diff
<
0
)
diff
=
0
;
LogInfo
(
$
"{MoveInfo.MoveParam.PosInfo.PosId}库位高度:{position.BagHigh},料盘高度:{MoveInfo.MoveParam.PosInfo.PlateH},差值:{diff},系数:{comAxis_offset},"
+
$
"实际值:{MoveInfo.MoveParam.MoveP.ComAxis_AB_P3 + diff * comAxis_offset}={MoveInfo.MoveParam.MoveP.ComAxis_AB_P3}加{diff * comAxis_offset}"
);
}
int
target
=
MoveInfo
.
MoveParam
.
MoveP
.
ComAxis_AB_P3
+
diff
*
comAxis_offset
;
if
(
isdebugSpeed
)
ComAxis_A
.
AbsMove
(
MoveInfo
,
target
,
Config
.
ComAxis_FindPosSpeed
);
else
ComAxis_A
.
AbsMove
(
MoveInfo
,
target
,
Config
.
ComAxis_A_P3_Speed
);
diff
=
0
;
LineMoveP
movep
=
new
LineMoveP
(
Config
,
MoveInfo
.
MoveParam
.
PosInfoBack
.
PosId
);
BoxPosition
position1
=
CSVPositionReader
<
BoxPosition
>.
GetPositon
(
MoveInfo
.
MoveParam
.
PosInfoBack
.
PosId
);
if
(
position1
!=
null
)
{
diff
=
position1
.
BagHigh
-
MoveInfo
.
MoveParam
.
PosInfoBack
.
PlateH
;
if
(
diff
<
0
)
diff
=
0
;
LogInfo
(
$
"{MoveInfo.MoveParam.PosInfoBack.PosId}库位高度:{position1.BagHigh},料盘高度:{MoveInfo.MoveParam.PosInfoBack.PlateH},差值:{diff},"
+
$
"实际值:{movep.ComAxis_AB_P3 + diff * comAxis_offset}={movep.ComAxis_AB_P3}加{diff * comAxis_offset}"
);
}
target
=
movep
.
ComAxis_AB_P3
+
diff
*
comAxis_offset
;
if
(
isdebugSpeed
)
ComAxis_B
.
AbsMove
(
MoveInfo
,
target
,
Config
.
ComAxis_FindPosSpeed
);
else
ComAxis_B
.
AbsMove
(
MoveInfo
,
target
,
Config
.
ComAxis_B_P3_Speed
);
}
private
void
BothXAxis_To_P3
(
bool
isdebugSpeed
=
false
)
{
if
(
isdebugSpeed
)
XAxis_A
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
XAxis_AB_P3
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_A
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
XAxis_AB_P3
,
Config
.
XAxis_A_P3_Speed
);
if
(
isdebugSpeed
)
XAxis_B
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
XAxis_AB_P3
,
Config
.
XAxis_FindPosSpeed
);
else
XAxis_B
.
AbsMove
(
MoveInfo
,
MoveInfo
.
MoveParam
.
MoveP
.
XAxis_AB_P3
,
Config
.
XAxis_B_P3_Speed
);
}
private
void
ClearInDoorBothBuffer
()
{
BufferDataManager
.
AInStoreInfo
=
null
;
BufferDataManager
.
BInStoreInfo
=
null
;
LogInfo
(
$
"入库 {MoveInfo.SLog}:取料完成,清除该暂存区的料盘信息[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]"
);
}
private
void
InstoreBothSideExecute
()
{
switch
(
MoveInfo
.
MoveStep
)
{
case
StepEnum
.
SIB_00_StartInstore
:
PullAxisToP1
(
"入库"
);
break
;
case
StepEnum
.
SIB_01_PullAxis_Ready
:
SetBoxStatus
(
DeviceStatus
.
InStoreExecute
,
RunStatus
.
Busy
,
MoveInfo
.
MoveParam
.
PosInfo
.
PosId
,
MoveInfo
.
MoveParam
.
PosInfo
.
barcode
);
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_01_Pull_Updown_ToPosition
);
if
(!
IsMoveAxisInSafePos
())
{
MoveAxisToSafePos
();
LogInfo
(
$
"入库 {MoveInfo.SLog}:行走机构不在安全位置,先到安全位置={Config.MoveAxis_SafePos}。当前位置{MoveAxis.GetAclPosition()}"
);
}
break
;
case
StepEnum
.
SIB_01_Pull_Updown_ToPosition
:
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_01_MoveAxis_Ready
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:到暂存区入料口,"
+
$
"行走机构到待机点P1,料斗升降轴到P1点,移栽升降轴到上暂存区入库取料低点P3/P9,移栽压紧轴到压紧前点P2,移栽旋转轴到取放料水平点P2,移栽X轴到P1,料斗升降轴到P1点[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"
);
MoveAxisToP1
();
PullAxis_UpdownToP1
();
UpdownAxisTo_P3_P9
();
BothComAxis_To_P2
();
BothMiddleAxis_To_P2
();
BothXAxis_To_P1
();
//BuffAreaInstoreDoor(true);
break
;
case
StepEnum
.
SIB_01_MoveAxis_Ready
:
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_02_ToBufferArea
);
startTime
=
DateTime
.
Now
;
break
;
case
StepEnum
.
SIB_02_ToBufferArea
:
if
(!
InDoorBothCheck
(
MoveInfo
.
MoveParam
))
{
SetWarnMsg
(
$
"入库 {MoveInfo.SLog}:AB入口料盘无入库信息, 任务取消"
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:AB入口料盘因无入库信息,结束入库"
);
SetBoxStatus
(
DeviceStatus
.
StoreOnline
,
RunStatus
.
Runing
);
MoveInfo
.
EndMove
();
}
else
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_03_VerifyBufferState
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:AB入料口入库信息确认,[barcode={MoveInfo.MoveParam.PosInfo.barcode},posId={MoveInfo.MoveParam.PosInfo.PosId}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode},posId={MoveInfo.MoveParam.PosInfoBack.PosId}],开始取料"
);
}
break
;
case
StepEnum
.
SIB_03_VerifyBufferState
:
if
(!
CheckInputMiddleAxisInBuff
())
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_04_InOutToBuff
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:移栽X轴到暂存区取放点P2,行走机构到取放点P2"
);
BothXAxis_To_P2
();
MoveAxisToP2
();
}
else
if
(
MoveInfo
.
IsTimeOut
())
{
SetWarnMsg
(
$
"等待上料机构旋转轴离开暂存区超时"
);
}
break
;
case
StepEnum
.
SIB_04_InOutToBuff
:
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_05_GetReel
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:取料盘,移栽升降轴到上暂存区入库取料高点P2/P8,移栽压紧轴到压紧点P3"
);
AddBothReelCheck
(
true
);
UpdownAxisTo_P2_P8
();
BothComAxis_To_P3
();
break
;
case
StepEnum
.
SIB_05_GetReel
:
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_06_InOutBackToP1FromBuff
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:移栽X轴到库位取放点P3,行走机构到待机点P1"
);
// XAxis_To_P1();
BothXAxis_To_P3
();
MoveAxisToP1
();
break
;
case
StepEnum
.
SIB_06_InOutBackToP1FromBuff
:
MoveInfo
.
NextMoveStep
(
StepEnum
.
SIB_06_ClearBuffInfo
);
//LogInfo($"入库 {MoveInfo.SLog}:移栽X轴到料屉库位取放料点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
//清空暂存区料盘信息
ClearInDoorBothBuffer
();
break
;
case
StepEnum
.
SIB_06_ClearBuffInfo
:
{
MoveInfo
.
NextMoveStep
(
StepEnum
.
SI_07_MiddleToP3
);
LogInfo
(
$
"入库 {MoveInfo.SLog}:对两侧料盘进行入库"
);
//移栽旋转轴到料屉库位垂直取放料点P3
}
break
;
}
}
#
endregion
private
void
MoveAxisToSafePos
(
bool
isdebugSpeed
=
false
)
{
if
(!
MoveAxis
.
IsInPosition
(
Config
.
MoveAxis_SafePos
))
{
if
(
isdebugSpeed
)
MoveAxis
.
AbsMove
(
MoveInfo
,
Config
.
MoveAxis_SafePos
,
Config
.
MoveAxis_FindPosSpeed
);
else
MoveAxis
.
AbsMove
(
MoveInfo
,
Config
.
MoveAxis_SafePos
,
Config
.
MoveAxis_P1_Speed
);
}
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论