Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-ACPackingStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 623747df
由
LN
编写于
2020-01-12 11:45:37 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
没有料盘时不去ng口
1 个父辈
c4e81548
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
58 行增加
和
28 行删除
source/Common/util/HttpHelper.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
source/DeviceLibrary/agvClient/AgvClient.cs
source/DeviceLibrary/store/StoreStep.cs
source/DeviceLibrary/store/model/StoreMoveInfo.cs
source/Common/util/HttpHelper.cs
查看文件 @
623747d
...
...
@@ -111,7 +111,7 @@ namespace OnlineStore.Common
}
catch
(
Exception
e
)
{
LogUtil
.
error
(
"POST ERROR:"
+
e
.
StackTrace
,
1
);
LogUtil
.
error
(
"POST ERROR:"
+
e
.
ToString
()
,
1
);
}
if
(!
result
.
Contains
(
"null"
)
&&
result
.
Length
!=
0
)
{
...
...
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
查看文件 @
623747d
...
...
@@ -114,12 +114,12 @@ namespace OnlineStore.DeviceLibrary
{
if
(
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
LogInfo
(
"BI_01_ReadyShelf 等待
小车
到达Arrive,检测到 LineTake_Check 信号,结束等待"
);
LogInfo
(
"BI_01_ReadyShelf 等待
agv
到达Arrive,检测到 LineTake_Check 信号,结束等待"
);
wait
.
IsEnd
=
true
;
}
else
if
(
IOValue
(
IO_Type
.
LineIn_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
LogInfo
(
"BI_01_ReadyShelf 等待
小车
到达Arrive,检测到 LineIn_Check 信号,结束等待"
);
LogInfo
(
"BI_01_ReadyShelf 等待
agv
到达Arrive,检测到 LineIn_Check 信号,结束等待"
);
wait
.
IsEnd
=
true
;
}
}
...
...
@@ -127,7 +127,7 @@ namespace OnlineStore.DeviceLibrary
{
if
(
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
LineIn_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
LogInfo
(
"等待
小车
离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待"
);
LogInfo
(
"等待
agv
离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待"
);
wait
.
IsEnd
=
true
;
}
}
...
...
@@ -388,8 +388,8 @@ namespace OnlineStore.DeviceLibrary
LastHeight
=
Config
.
GetComP2PlateH
(
targetP
);
MoveInfo
.
MoveParam
.
MoveP
.
ComPress_P2
=
targetP
;
MoveInfo
.
MoveParam
.
MoveP
.
ComPress_P3
=
targetP
+
Config
.
CompAxis_P3_P2_Value
;
InOutStoreLog
(
"料架取料 "
+
MoveInfo
.
SLog
+
":检测到料叉压紧确认信号,向下压紧
【"
+
ComTargetPosition
+
"】目标【
"
+
targetP
+
"
】,记录料盘高度【"
+
LastHeight
+
"】,ComP2【"
+
targetP
+
"】ComP3【"
+
MoveInfo
.
MoveParam
.
MoveP
.
ComPress_P3
+
"】
"
);
InOutStoreLog
(
"料架取料 "
+
MoveInfo
.
SLog
+
":检测到料叉压紧确认信号,向下压紧
["
+
Config
.
CompAxis_Down_Position
+
"]目标[
"
+
targetP
+
"
],盘高【"
+
LastHeight
+
"】,ComP2["
+
targetP
+
"]ComP3["
+
MoveInfo
.
MoveParam
.
MoveP
.
ComPress_P3
+
"]
"
);
ACAxisMove
(
Config
.
Comp_Axis
,
targetP
,
Config
.
CompAxis_P1_Speed
);
...
...
@@ -437,22 +437,27 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_24_InOutToP1
))
{
if
(
IOValue
(
IO_Type
.
TrayCheck_3
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOValue
(
IO_Type
.
TrayCheck_4
).
Equals
(
IO_VALUE
.
HIGH
))
IO_VALUE
io1
=
IOValue
(
IO_Type
.
TrayCheck_1
);
IO_VALUE
io2
=
IOValue
(
IO_Type
.
TrayCheck_2
);
IO_VALUE
io3
=
IOValue
(
IO_Type
.
TrayCheck_3
);
IO_VALUE
io4
=
IOValue
(
IO_Type
.
TrayCheck_4
);
if
(
io3
.
Equals
(
IO_VALUE
.
HIGH
)
||
io4
.
Equals
(
IO_VALUE
.
HIGH
))
{
LastWidth
=
15
;
}
else
if
(
IOValue
(
IO_Type
.
TrayCheck_1
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOValue
(
IO_Type
.
TrayCheck_2
)
.
Equals
(
IO_VALUE
.
HIGH
))
else
if
(
io1
.
Equals
(
IO_VALUE
.
HIGH
)
||
io2
.
Equals
(
IO_VALUE
.
HIGH
))
{
LastWidth
=
7
;
}
else
{
LastWidth
=
7
;
LogUtil
.
info
(
"未检测到识别区料盘检测信号,
默认高度为7
"
);
LastWidth
=
0
;
LogUtil
.
info
(
"未检测到识别区料盘检测信号,
设置默认宽度=0
"
);
}
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_25_ScanCode
);
InOutStoreLog
(
"扫码 "
+
MoveInfo
.
SLog
+
":记录宽度,开始扫码"
);
InOutStoreLog
(
"扫码 "
+
MoveInfo
.
SLog
+
":记录宽度
【"
+
LastWidth
+
"】,料盘识别信号值 ["
+
io1
+
"] ["
+
io2
+
"] ["
+
io3
+
"] ["
+
io4
+
"]
,开始扫码"
);
MoveInfo
.
OneWaitCanEndStep
=
true
;
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
6000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitCode
());
...
...
@@ -465,10 +470,19 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_25_ScanCode
))
{
if
(
LastScanCodes
.
Count
<=
0
&&
LastWidth
.
Equals
(
0
)
&&
LastHeight
.
Equals
(
8
))
{
storeStatus
=
StoreStatus
.
InStoreExecute
;
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_10_StartGetTray
);
InOutStoreLog
(
" 扫码失败,且尺寸为"
+
LastWidth
+
"*"
+
LastHeight
+
",认为没拿到料盘,判断是否有下个料盘,扫码入库"
);
}
else
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_27_InoutToP2
);
InOutStoreLog
(
"扫码 "
+
MoveInfo
.
SLog
+
":进出轴到P2"
);
ACAxisMove
(
Config
.
InOut_Axis
,
moveP
.
InOut_P2
,
Config
.
InOutAxis_P2_Speed
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_27_InoutToP2
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_28_GetScanPTray
);
...
...
@@ -486,7 +500,7 @@ namespace OnlineStore.DeviceLibrary
{
if
(
LastScanCodes
.
Count
<=
0
)
{
StartSendTray
(
"扫码失败"
);
StartSendTray
();
}
else
{
...
...
@@ -562,6 +576,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
storeStatus
=
StoreStatus
.
InStoreExecute
;
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_10_StartGetTray
);
InOutStoreLog
(
"料架入库 "
+
MoveInfo
.
SLog
+
":上一盘入库结束, 耗时【"
+
FormUtil
.
GetSpanStr
(
span
)
+
"】判断是否有下个料盘,扫码入库"
);
}
...
...
@@ -728,9 +743,9 @@ namespace OnlineStore.DeviceLibrary
if
((
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
MoveInfo
.
MoveParam
.
NeedEnterShelf
)
||
MoveInfo
.
MoveParam
.
ShelfPosID
.
Equals
(
""
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_01_ReadyShelf
);
InOutStoreLog
(
"出库 "
+
MoveInfo
.
SLog
+
":ReadyShelf:通知agv调度准备带料架的
小车,等待小车
到达或检测到料架信号,进出轴到P1"
);
InOutStoreLog
(
"出库 "
+
MoveInfo
.
SLog
+
":ReadyShelf:通知agv调度准备带料架的
agv,等待agv
到达或检测到料架信号,进出轴到P1"
);
InOutBackToP1
(
MoveInfo
.
MoveParam
.
MoveP
.
InOut_P1
);
//需要先叫
小车
到达
//需要先叫
agv
到达
AgvClient
.
ReadyShelf
(
Config
.
AgvNodeName
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAgvAction
((
int
)
Asa
.
Actions
.
Arrive
));
}
...
...
@@ -809,7 +824,7 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SO_07_LocationUp
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_08_ToShelfPosition
);
InOutStoreLog
(
"出库 "
+
MoveInfo
.
SLog
+
":走到料架位置,旋转轴至P101,升降轴至P102
,
"
);
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
);
...
...
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
查看文件 @
623747d
...
...
@@ -43,7 +43,7 @@ namespace OnlineStore.DeviceLibrary
else
{
// MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
"调用AgvClient.MayEnter,
小车
已到达,打开入料口移门"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
"调用AgvClient.MayEnter,
agv
已到达,打开入料口移门"
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_02_DoorOpen
);
DoorBean
.
StartOpen
(
MoveInfo
);
}
...
...
@@ -198,28 +198,39 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_03_DoorOpen
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_04_ReadyEmpty
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":调用AgvClient.ReadyEmpty,等待Agv小车到达"
);
MoveInfo
.
OneWaitCanEndStep
=
true
;
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
10000
));
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":调用AgvClient.ReadyEmpty,等待Agv到达 ,最多等待1000"
);
AgvClient
.
ReadyEmpty
(
Config
.
AgvNodeName
);
//等待
小车
到达
//等待
agv
到达
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAgvAction
((
int
)
Asa
.
Actions
.
Arrive
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_04_ReadyEmpty
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_05_LineBackRun
);
//agv到达
if
(
AgvClient
.
GetAction
(
Config
.
AgvNodeName
).
Equals
(
Asa
.
Actions
.
Arrive
))
{
if
(
instoreShelf
)
{
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":
调用AgvClient.SendRFID【"
+
CurrShelfID
+
"】,调用AgvClient.MayOut,线体开始反转"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":agv到达,
调用AgvClient.SendRFID【"
+
CurrShelfID
+
"】,调用AgvClient.MayOut,线体开始反转"
);
//TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient
.
SendRFID
(
Config
.
AgvNodeName
,
CurrShelfID
);
}
else
{
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":
调用AgvClient.MayOut,线体开始反转"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":agv到达,
调用AgvClient.MayOut,线体开始反转"
);
}
AgvClient
.
MayOut
(
Config
.
AgvNodeName
);
LineBackRun
();
}
else
{
//如果agv未到达,直接结束
MoveEndToRuningStatus
();
EmprtShelfList
=
new
ConcurrentQueue
<
string
>();
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":等待agv超时,直接结束"
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_05_LineBackRun
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_06_WaitInLineSingle
);
...
...
@@ -232,7 +243,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_07_WaitTime
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":再转动3000时间,同时等待收到FinishOut"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
//等到
小车
离开
//等到
agv
离开
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAgvAction
((
int
)
Asa
.
Actions
.
FinishOut
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_07_WaitTime
))
...
...
@@ -293,7 +304,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
logN
+
" ,未检测到:LineIn_Check,不处理"
);
return
false
;
}
//
小车
到达,开始处理
//
agv
到达,开始处理
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Runing
)
&&
MoveInfo
.
MoveType
.
Equals
(
StoreMoveType
.
None
)
&&
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
LOW
))
...
...
@@ -568,6 +579,10 @@ namespace OnlineStore.DeviceLibrary
{
try
{
if
(
LastWidth
<=
0
)
{
LastWidth
=
7
;
}
string
message
=
StoreManager
.
ProcessCode
(
LastWidth
,
LastHeight
,
LastScanCodes
);
if
(
message
.
Equals
(
""
)
||
string
.
IsNullOrEmpty
(
message
))
{
...
...
source/DeviceLibrary/agvClient/AgvClient.cs
查看文件 @
623747d
...
...
@@ -68,7 +68,7 @@ namespace OnlineStore.DeviceLibrary
agvClient
.
ReadyEmpty
(
NodeName
);
}
/// <summary>
/// 11 准备
小车
带料架
/// 11 准备
agv
带料架
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
ReadyShelf
(
string
NodeName
)
...
...
@@ -101,7 +101,7 @@ namespace OnlineStore.DeviceLibrary
agvClient
.
MayOut
(
NodeName
);
}
/// <summary>
///17
小车
离开
///17
agv
离开
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
GetOut
(
string
NodeName
)
...
...
source/DeviceLibrary/store/StoreStep.cs
查看文件 @
623747d
...
...
@@ -161,7 +161,7 @@ namespace OnlineStore.DeviceLibrary
#
region
料架进入料仓步骤
1000
开始
/// <summary>
/// 通知agv准备带料架
小车
/// 通知agv准备带料架
agv
/// </summary>
BI_01_ReadyShelf
=
1001
,
/// <summary>
...
...
source/DeviceLibrary/store/model/StoreMoveInfo.cs
查看文件 @
623747d
...
...
@@ -319,7 +319,7 @@ namespace OnlineStore.DeviceLibrary
return
"扫码完成"
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W010_AgvStatus
))
{
return
"
agv小车
状态:"
+
(
Asa
.
Actions
)
TargetPosition
;
return
"
Agv
状态:"
+
(
Asa
.
Actions
)
TargetPosition
;
}
else
{
...
...
@@ -413,7 +413,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
internal
static
int
W009_ScanCode
=
9
;
/// <summary>
///
agv小车
状态
///
Agv
状态
/// </summary>
internal
static
int
W010_AgvStatus
=
10
;
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论