Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO1131-ConveyorLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a61cf585
由
张东亮
编写于
2022-12-12 16:32:38 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
软件更新后,工位2等待时间超时清理后会闪退
1 个父辈
4d7548cc
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
222 行增加
和
34 行删除
source/AssemblyLineClient/FrmLine.cs
source/AssemblyLineClient/Program.cs
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/ESS/ESS_CancelBody.cs
source/DeviceLibrary/clientLine/AGV/FeedingEquip.cs
source/DeviceLibrary/clientLine/EquipBase.cs
source/DeviceLibrary/clientLine/LineBean.cs
source/DeviceLibrary/clientLine/StationEquip_InStore.cs
source/DeviceLibrary/clientLine/StationEquip_OutStore.cs
source/DeviceLibrary/lineManager/ALineManager.cs
source/DeviceLibrary/lineManager/ContainerManager.cs
source/DeviceLibrary/lineManager/SServerManager.cs
source/DeviceLibrary/model/StoreStep.cs
source/AssemblyLineClient/FrmLine.cs
查看文件 @
a61cf58
...
...
@@ -386,7 +386,7 @@ namespace OnlineStore.AssemblyLine
//ClearMemory();
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"LogM Error: "
,
ex
);
//
LogUtil.error("LogM Error: ", ex);
}
}
object
showLockObj
=
new
object
();
...
...
source/AssemblyLineClient/Program.cs
查看文件 @
a61cf58
...
...
@@ -10,6 +10,7 @@ using System.Runtime.InteropServices;
using
System.Threading.Tasks
;
using
System.Windows.Forms
;
using
OnlineStore.DeviceLibrary
;
using
System.Runtime.ExceptionServices
;
namespace
OnlineStore.AssemblyLine
{
...
...
@@ -52,6 +53,7 @@ namespace OnlineStore.AssemblyLine
/// 应用程序的主入口点。
/// </summary>
[
STAThread
]
[
HandleProcessCorruptedStateExceptions
]
static
void
Main
(
string
[]
Args
)
{
//string code = " (X: 380,Y: 148) L00000000000WG9D19055;E20191230 0180;B7H.10618.5B1008082019123004000;R0080820191230E9600";
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
a61cf58
...
...
@@ -74,6 +74,7 @@
<Compile Include="clientLine\HY\HY_Shunt.cs" />
<Compile Include="deviceLibrary\IO\NJSDot\SDotManager.cs" />
<Compile Include="deviceLibrary\IO\NJSDot\NanjingSDotIO.cs" />
<Compile Include="ESS\ESS_CancelBody.cs" />
<Compile Include="ESS\ESS_CreateTaskBody.cs" />
<Compile Include="ESS\TaskStateInfo.cs" />
<Compile Include="lineManager\ALineManager.cs" />
...
...
source/DeviceLibrary/ESS/ESS_CancelBody.cs
0 → 100644
查看文件 @
a61cf58
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary
{
internal
class
ESS_CancelBody
{
public
List
<
string
>
taskCodes
{
get
;
set
;
}
}
}
source/DeviceLibrary/clientLine/AGV/FeedingEquip.cs
查看文件 @
a61cf58
...
...
@@ -206,7 +206,7 @@ namespace OnlineStore.DeviceLibrary
if
(
IOValue
(
IO_Type
.
AGV_BoxCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
CheckStopWatch
(
trayCheckWait
,
TrayWaitTime
,
true
))
{
EquipBase
equipBase
=
GetOutEquip
();
if
(
equipBase
!=
null
&&
equipBase
.
IsIdle
(
1
))
if
(
equipBase
!=
null
&&
equipBase
.
IsIdle
(
1
)
&&
ContainerManager
.
CntofContainerOnLine
()
<
24
)
{
ClearSpecifiedWarnMsg
(
"等待下游"
);
waitNextIdleWatch
.
Stop
();
...
...
@@ -219,7 +219,7 @@ namespace OnlineStore.DeviceLibrary
{
waitNextIdleWatch
.
Start
();
}
if
(
waitNextIdleWatch
.
Elapsed
.
TotalSeconds
>=
2
0
)
if
(
waitNextIdleWatch
.
Elapsed
.
TotalSeconds
>=
6
0
)
SetWarnMsg
(
$
"等待下游{equipBase.Name}空闲超时{FormUtil.GetSpanStr(waitNextIdleWatch.Elapsed)}"
);
}
}
...
...
@@ -305,7 +305,7 @@ namespace OnlineStore.DeviceLibrary
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_03_StopUp
);
LogInfo
(
"不存在下游,直接结束"
);
LogInfo
(
"不存在下游,直接结束"
);
}
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
FO_03_StopUp
))
...
...
source/DeviceLibrary/clientLine/EquipBase.cs
查看文件 @
a61cf58
...
...
@@ -283,6 +283,10 @@ namespace OnlineStore.DeviceLibrary
PreContainerId
=
""
;
CurContainerId
=
""
;
}
/// <summary>
/// 更新分拣台rfid
/// </summary>
/// <returns></returns>
internal
RFIDData
UpdateStationCode
()
{
RFIDData
ShelfId_Station
=
new
RFIDData
();
...
...
@@ -298,6 +302,27 @@ namespace OnlineStore.DeviceLibrary
}
return
ShelfId_Station
;
}
internal
bool
GetStationCode
(
out
string
rfid
)
{
rfid
=
""
;
RFIDData
ShelfId_Station
=
new
RFIDData
();
try
{
if
(
RFIDIP
!=
null
&&
RFIDIP
.
Count
>
0
)
{
//判断料架的编码是否正确
ShelfId_Station
=
RFIDManager
.
ReadRFID
(
RFIDIP
[
1
]);
rfid
=
ShelfId_Station
.
StrData
;
return
ShelfId_Station
.
IsValidated
();
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
"UpdateStationCode 出错:"
,
ex
);
}
return
false
;
}
internal
bool
UpdateContainerCode
()
{
RFIDData
rfidData
=
RFIDManager
.
GetContainerCode
(
Name
,
DeviceID
,
0
);
...
...
source/DeviceLibrary/clientLine/LineBean.cs
查看文件 @
a61cf58
...
...
@@ -844,6 +844,12 @@ namespace OnlineStore.DeviceLibrary
if
(
data
.
IsValidated
())
{
map
.
Add
(
$
"s{equip.DeviceID}"
,
data
.
StrData
);
//自动上传出库料箱被其他工位拿走的状态
if
(
ContainerManager
.
GetOutStoreBox
(
data
.
ToContainerId
()))
{
ContainerManager
.
UpdateTaskStatus
(
data
.
ToContainerId
(),
TaskStatus
.
FINISHED
,
$
"s{equip.DeviceID}"
);
LogUtil
.
info
(
$
"出库容器被拿上工位s{equip.DeviceID},自动完成:{data.ToContainerId()}"
);
}
}
else
{
...
...
source/DeviceLibrary/clientLine/StationEquip_InStore.cs
查看文件 @
a61cf58
...
...
@@ -87,7 +87,30 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
SI_03_ReadAndCheckBox
))
{
if
(
IsCurStationBox
(
curboxInfo
))
if
(
GetStationCode
(
out
string
rfid
))
{
EquipBase
equipBase
=
GetOutEquip
();
if
(
equipBase
!=
null
)
{
if
(
equipBase
.
IsIdle
())
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SI_08_StopDown
);
LogInfo
(
$
"分拣台有箱子{rfid},放行"
);
StopDown
(
MoveInfo
);
}
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SI_09_WaitDownriverIdle
);
LogInfo
(
$
"分拣台有箱子{rfid},等待下游{equipBase.Name}空闲再放行容器"
);
}
}
else
{
SetWarnMsg
(
$
"无下游信息,结束处理"
);
MoveEndS
();
}
}
else
if
(
IsCurStationBox
(
curboxInfo
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SI_04_BoxArrive
);
LogInfo
(
$
" 该箱子是该工位出库容器,上报到达状态"
);
...
...
source/DeviceLibrary/clientLine/StationEquip_OutStore.cs
查看文件 @
a61cf58
...
...
@@ -21,8 +21,8 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
MoveParam
=
param
;
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SO_01_FrontStopUp
);
FrontStopUp
(
MoveInfo
);
Stop
Down
(
MoveInfo
);
LogInfo
(
$
"开始出库,前阻挡上升,阻挡
下降
"
);
Stop
Up
(
MoveInfo
);
LogInfo
(
$
"开始出库,前阻挡上升,阻挡
上升
"
);
return
true
;
}
protected
override
void
OutStoreProcess
()
...
...
@@ -39,19 +39,28 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SO_02_WaitBoxInToLine
);
AddWaitBoxCheck
(
true
);
WaitTime
(
3000
0
);
MoveInfo
.
OneWaitCanEndStep
=
true
;
WaitTime
(
3000
);
//
MoveInfo.OneWaitCanEndStep = true;
LogInfo
(
$
"等待箱子离开工作站"
);
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
SO_02_WaitBoxInToLine
))
{
LogUtil
.
info
(
"进入 SO_03_WaitTime 前"
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SO_03_WaitTime
);
LogUtil
.
info
(
"进入 SO_03_WaitTime 后"
+
$
" barcode={MoveInfo?.MoveParam?.Containercode??""}"
);
ContainerManager
.
UpdateTaskStatus
(
MoveInfo
.
MoveParam
.
Containercode
,
TaskStatus
.
IN_ON_LINE
);
LogInfo
(
$
" 箱子离开工作站完成"
);
FrontStopDown
(
MoveInfo
);
LogInfo
(
$
" 箱子到达线体,阻挡下降"
);
StopDown
(
MoveInfo
);
WaitTime
(
3000
);
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
SO_03_WaitTime
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SO_04_FrontStopDown
);
LogInfo
(
$
"前阻挡下降"
);
FrontStopDown
(
MoveInfo
);
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
SO_04_FrontStopDown
))
{
MoveEndS
();
}
else
...
...
source/DeviceLibrary/lineManager/ALineManager.cs
查看文件 @
a61cf58
...
...
@@ -100,7 +100,7 @@ namespace OnlineStore.DeviceLibrary
isInit
=
true
;
string
lineType
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
Line_Type
);
LogUtil
.
info
(
"
类型="
+
lineType
+
",开始加载 配置"
);
LogUtil
.
info
(
"类型="
+
lineType
+
",开始加载 配置"
);
if
(
lineType
==
DeviceType
.
Line
)
{
string
appPath
=
Application
.
StartupPath
;
...
...
source/DeviceLibrary/lineManager/ContainerManager.cs
查看文件 @
a61cf58
...
...
@@ -5,10 +5,12 @@ using OnlineStore.LoadCSVLibrary;
using
System
;
using
System.Collections.Concurrent
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Diagnostics
;
using
System.Diagnostics.Eventing.Reader
;
using
System.IO
;
using
System.Linq
;
using
System.Security.Cryptography
;
using
System.Text
;
using
System.Threading
;
using
System.Windows.Forms
;
...
...
@@ -41,6 +43,26 @@ namespace OnlineStore.DeviceLibrary
return
new
List
<
ContainerInfo
>(
containerInfoMap
.
Values
);
}
/// <summary>
/// 在线体上的料箱数量
/// </summary>
/// <returns></returns>
public
static
int
CntofContainerOnLine
()
{
try
{
List
<
ContainerInfo
>
containers
=
getTrayList
().
FindAll
(
s
=>(
s
.
Status
.
Equals
(
TaskStatus
.
IN_ON_LINE
)
||
s
.
Status
.
Equals
(
TaskStatus
.
OUT_ON_LINE
)));
if
(
containers
!=
null
)
{
return
containers
.
Count
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
$
"CntofContainerOnLine"
,
ex
);
}
return
0
;
}
/// <summary>
///处理未发送AGV任务的容器
/// </summary>
/// <returns></returns>
...
...
@@ -62,18 +84,18 @@ namespace OnlineStore.DeviceLibrary
{
foreach
(
var
item
in
getTrayList
())
{
bool
rtn
=
SServerManager
.
UpdateLocInfo
(
"ContainerManager"
,
item
.
ContainerValidCode
,
item
.
Status
,
item
.
CurLoc
);
bool
rtn
=
SServerManager
.
UpdateLocInfo
(
"ContainerManager"
,
item
.
ContainerValidCode
,
item
.
Status
,
item
.
CurLoc
);
if
(
rtn
)
{
if
(
item
.
Status
.
Equals
(
TaskStatus
.
ERROR
))
{
bool
res
=
containerInfoMap
.
TryRemove
(
item
.
ContainerValidCode
,
out
ContainerInfo
containerInfo
);
LogUtil
.
info
(
$
"
容器状态上报成功,
因任务异常,自动删除该任务【{res}】:【{JsonHelper.SerializeObject(containerInfo)}】"
);
bool
res
=
containerInfoMap
.
TryRemove
(
item
.
ContainerValidCode
,
out
ContainerInfo
containerInfo
);
LogUtil
.
info
(
$
"因任务异常,自动删除该任务【{res}】:【{JsonHelper.SerializeObject(containerInfo)}】"
);
}
else
if
(
item
.
Status
.
Equals
(
TaskStatus
.
FINISHED
))
else
if
(
item
.
Status
.
Equals
(
TaskStatus
.
FINISHED
))
{
bool
res
=
containerInfoMap
.
TryRemove
(
item
.
ContainerValidCode
,
out
ContainerInfo
containerInfo
);
LogUtil
.
info
(
$
"
容器状态上报成功,
任务完成【{res}】:【{JsonHelper.SerializeObject(containerInfo)}】"
);
LogUtil
.
info
(
$
"任务完成【{res}】:【{JsonHelper.SerializeObject(containerInfo)}】"
);
}
}
}
...
...
@@ -87,7 +109,35 @@ namespace OnlineStore.DeviceLibrary
}
return
null
;
}
/// <summary>
/// 获取在线体上的出库箱子
/// </summary>
/// <param name="boxId"></param>
/// <returns>true,存在</returns>
public
static
bool
GetOutStoreBox
(
string
boxId
)
{
ContainerInfo
container
=
GetTrayInfo
(
boxId
);
try
{
if
(
container
!=
null
)
{
if
(
container
.
InOrOutStore
.
Equals
(
ContainerType
.
OutStore
))
//&& (container.Status.Equals(TaskStatus.OUT_ON_LINE) || container.Status.Equals(TaskStatus.NEED_AWAY))
{
return
true
;
}
}
else
{
//LogUtil.error($"未找到容器信息: {boxId}");
return
false
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
$
"GetOutStoreBox {boxId}"
,
ex
);
}
return
false
;
}
/// <summary>
/// 站点是否有箱子准备进入
/// </summary>
...
...
@@ -122,7 +172,7 @@ namespace OnlineStore.DeviceLibrary
internal
static
bool
StationHasOutTask
(
int
deviceId
,
out
InOutParam
inOutParam
)
{
inOutParam
=
new
InOutParam
();
if
(
GetOutTaskCnt
(
deviceId
,
out
ContainerInfo
containerInfo
))
if
(
GetOutTaskCnt
(
deviceId
,
out
ContainerInfo
containerInfo
))
{
inOutParam
.
Containercode
=
containerInfo
.
ContainerValidCode
;
return
true
;
...
...
@@ -137,13 +187,13 @@ namespace OnlineStore.DeviceLibrary
internal
static
int
GetOutTaskCnt
(
int
deviceId
)
{
List
<
ContainerInfo
>
containerInfos
=
getTrayList
().
FindAll
(
s
=>
s
.
InOrOutStore
.
Equals
(
ContainerType
.
InStore
)
&&
s
.
InoutParam
.
DeviceId
.
Equals
(
deviceId
)
&&
(
s
.
Status
.
Equals
(
TaskStatus
.
EXECUTING
)||
s
.
Status
.
Equals
(
TaskStatus
.
WAIT
)));
&&
s
.
InoutParam
.
DeviceId
.
Equals
(
deviceId
)
&&
(
s
.
Status
.
Equals
(
TaskStatus
.
EXECUTING
)
||
s
.
Status
.
Equals
(
TaskStatus
.
WAIT
)));
return
containerInfos
?.
Count
??
0
;
}
internal
static
bool
GetOutTaskCnt
(
int
deviceId
,
out
ContainerInfo
containerInfo
)
internal
static
bool
GetOutTaskCnt
(
int
deviceId
,
out
ContainerInfo
containerInfo
)
{
containerInfo
=
getTrayList
().
Find
(
s
=>
s
.
InOrOutStore
.
Equals
(
ContainerType
.
InStore
)
&&
s
.
InoutParam
.
DeviceId
.
Equals
(
deviceId
)
&&
s
.
Status
.
Equals
(
TaskStatus
.
EXECUTING
));
return
containerInfo
!=
null
;
return
containerInfo
!=
null
;
}
/// <summary>
/// 获取属于该工位的箱子
...
...
@@ -203,7 +253,7 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
containerTarget
.
slotCode
.
Equals
(
"s0"
))
//站点分拣台已有容器
{
return
true
;
}
else
//有入库的料
{
...
...
@@ -237,12 +287,13 @@ namespace OnlineStore.DeviceLibrary
}
return
false
;
}
public
static
void
AddOrUpdateContainerInfo
(
string
containerCode
)
{
if
(
string
.
IsNullOrEmpty
(
containerCode
))
return
;
if
(
containerCode
.
EndsWith
(
"A"
)
||
containerCode
.
EndsWith
(
"B"
))
if
(
containerCode
.
EndsWith
(
"A"
)
||
containerCode
.
EndsWith
(
"B"
))
{
containerCode
=
containerCode
.
Substring
(
0
,
containerCode
.
Length
-
1
);
containerCode
=
containerCode
.
Substring
(
0
,
containerCode
.
Length
-
1
);
}
if
(
containerInfoMap
.
ContainsKey
(
containerCode
))
{
...
...
@@ -257,7 +308,7 @@ namespace OnlineStore.DeviceLibrary
{
if
(
containerTarget
.
slotCode
.
Equals
(
"0"
)
||
containerTarget
.
barcode
.
Equals
(
""
))
{
UpdateContainerNumError
(
containerCode
,
"容器无目的地信息,请检查"
);
UpdateContainerNumError
(
containerCode
,
"容器无目的地信息,请检查"
);
return
;
}
UpdateContainerNumError
(
""
,
""
);
...
...
@@ -282,7 +333,7 @@ namespace OnlineStore.DeviceLibrary
SaveMapToFile
();
}
}
public
static
void
AddOrUpdateContainerInfo
(
string
stationName
,
string
containerCode
)
public
static
void
AddOrUpdateContainerInfo
(
string
stationName
,
string
containerCode
)
{
if
(
string
.
IsNullOrEmpty
(
containerCode
))
return
;
if
(
containerCode
.
EndsWith
(
"A"
)
||
containerCode
.
EndsWith
(
"B"
))
...
...
@@ -333,15 +384,16 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// <param name="barcode"></param>
/// <param name="status"></param>
public
static
void
UpdateTaskStatus
(
string
barcode
,
string
status
,
string
loc
=
""
)
public
static
void
UpdateTaskStatus
(
string
barcode
,
string
status
,
string
loc
=
""
)
{
if
(
containerInfoMap
.
ContainsKey
(
barcode
))
{
ContainerInfo
containerInfo
=
containerInfoMap
[
barcode
]
;
containerInfoMap
[
barcode
].
UpdateStatus
(
status
,
loc
);
LogUtil
.
info
(
$
"已有缓存,更新容器状态:【{barcode}】【{status}】"
)
;
containerInfoMap
[
barcode
].
UpdateStatus
(
status
,
loc
);
}
else
{
LogUtil
.
info
(
$
"更新容器状态:【{barcode}】【{status}】"
);
AddOrUpdateContainerInfo
(
barcode
);
UpdateTaskStatus
(
barcode
,
status
);
}
...
...
@@ -401,6 +453,7 @@ namespace OnlineStore.DeviceLibrary
static
object
saveObj
=
new
object
();
static
void
SaveMapToFile
()
{
LogUtil
.
info
(
"SaveMapToFile"
);
if
(
Monitor
.
TryEnter
(
saveObj
,
500
))
{
try
...
...
source/DeviceLibrary/lineManager/SServerManager.cs
查看文件 @
a61cf58
...
...
@@ -63,6 +63,10 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
private
static
string
Addr_createTask
=
"/task/create"
;
/// <summary>
/// ESS创建任务接口
/// </summary>
private
static
string
Addr_cancelTask
=
"/task/cancel"
;
/// <summary>
/// 容器到达,发给ESS
/// </summary>
/// <param name="essModel"></param>
...
...
@@ -208,7 +212,58 @@ namespace OnlineStore.DeviceLibrary
}
return
false
;
}
/// <summary>
/// 取消出库任务
/// </summary>
/// <param name="containerInfos"></param>
/// <param name="debug"></param>
/// <returns></returns>
public
static
bool
CancelOutStoreOrder
(
List
<
ContainerInfo
>
containerInfos
,
bool
debug
=
false
)
{
try
{
ESS_CancelBody
body
=
new
ESS_CancelBody
();
body
.
taskCodes
=
new
List
<
string
>();
foreach
(
var
item
in
containerInfos
)
{
body
.
taskCodes
.
Add
(
item
.
TaskCode
);
}
string
param
=
JsonHelper
.
SerializeObject
(
body
);
string
path
=
ess_server
+
Addr_cancelTask
;
if
(
HttpHelper
.
Post
(
path
,
param
,
out
bool
isTimueOut
,
out
string
outMsg
))
{
ServerData1
server
=
JsonHelper
.
DeserializeJsonToObject
<
ServerData1
>(
outMsg
);
if
(
server
!=
null
)
{
foreach
(
var
item
in
containerInfos
)
{
if
(
server
.
data
.
ContainsKey
(
item
.
TaskCode
))
{
if
(
server
.
data
[
item
.
TaskCode
].
ToString
().
ToLower
().
Equals
(
"ok"
))
{
if
(!
debug
)
ContainerManager
.
UpdateTaskStatus
(
item
.
ContainerValidCode
,
TaskStatus
.
EXECUTING
);
}
}
}
LogUtil
.
info
(
$
"取消出库任务成功【{path}】【{param}】【{outMsg}】"
);
return
true
;
}
LogUtil
.
info
(
$
"取消出库任务失败,ESS返回失败【{path}】【{param}】【{outMsg}】"
);
return
false
;
}
else
{
LogUtil
.
error
(
$
"取消出库任务失败【{path}】【{param}】【{outMsg}】【{isTimueOut}】"
);
return
false
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
$
"取消出库任务异常:{JsonHelper.SerializeObject(containerInfos)}"
,
ex
);
}
return
false
;
}
#
endregion
/// <summary>
...
...
@@ -374,7 +429,7 @@ namespace OnlineStore.DeviceLibrary
}
if
(
string
.
IsNullOrEmpty
(
serverAddr
))
{
LogUtil
.
error
(
deviceName
+
"UpdateTrayLoc ["
+
barcode
+
"] ["
+
status
+
"] :未找到服务器地址"
);
LogUtil
.
error
(
deviceName
+
"
UpdateTrayLoc ["
+
barcode
+
"] ["
+
status
+
"] :未找到服务器地址"
);
return
false
;
}
...
...
@@ -391,12 +446,12 @@ namespace OnlineStore.DeviceLibrary
ServerData
serverResult
=
JsonHelper
.
DeserializeJsonToObject
<
ServerData
>(
resultStr
);
if
(
serverResult
==
null
)
{
msg
=
deviceName
+
"
UpdateTrayLoc【
"
+
barcode
+
"】【"
+
status
+
"】【"
+
locInfo
+
"】没有收到服务器反馈"
;
msg
=
deviceName
+
"
UpdateTrayLoc【
"
+
barcode
+
"】【"
+
status
+
"】【"
+
locInfo
+
"】没有收到服务器反馈"
;
}
else
if
(
serverResult
.
code
.
Equals
(
0
).
Equals
(
false
))
{
// code: 0为正常,其他为异常, msg: 消息, data: 为空
msg
=
deviceName
+
" UpdateTrayLoc【
"
+
barcode
+
"】【"
+
status
+
"】【"
+
locInfo
+
"】 :"
+
"["
+
serverResult
.
code
+
"]"
+
serverResult
.
msg
;
msg
=
deviceName
+
" UpdateTrayLoc【"
+
barcode
+
"】【"
+
status
+
"】【"
+
locInfo
+
"】 :"
+
"["
+
serverResult
.
code
+
"]"
+
serverResult
.
msg
;
}
if
(!
msg
.
Equals
(
""
))
{
...
...
source/DeviceLibrary/model/StoreStep.cs
查看文件 @
a61cf58
...
...
@@ -321,6 +321,7 @@ namespace OnlineStore.DeviceLibrary
/// 工位入库的料:等待一定时间
/// </summary>
SO_03_WaitTime
,
SO_04_FrontStopDown
,
#
endregion
#
region
入料工位
-
AGV
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论