Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f8b72bdf
由
LN
编写于
2020-01-08 19:29:17 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
agv调度代码修改
1 个父辈
8f212f33
全部展开
显示空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
148 行增加
和
146 行删除
source/AssemblyLineClient/App.config
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/agvClient/AgvClient.cs
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
source/DeviceLibrary/assemblyLine/ProvidingEquip_Partial.cs
source/DeviceLibrary/assemblymanager/SServerManager.cs
source/DeviceLibrary/deviceLibrary/IO/AIOBOX/AIOBOXManager.cs
source/DeviceLibrary/model/StoreStep.cs
source/AssemblyLineClient/App.config
查看文件 @
f8b72bd
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
<!--流水线监听端口-->
<!--流水线监听端口-->
<
add
key
=
"TCPServerPort"
value
=
"5246"
/>
<
add
key
=
"TCPServerPort"
value
=
"5246"
/>
<!--
AGV
调度服务器地址-->
<!--
AGV
调度服务器地址-->
<
add
key
=
"AgvServerIp"
value
=
"192.168.103.
2
2"
/>
<
add
key
=
"AgvServerIp"
value
=
"192.168.103.
1
2"
/>
<!--
IO
配置-->
<!--
IO
配置-->
<
add
key
=
"DIMS"
value
=
"60"
/>
<
add
key
=
"DIMS"
value
=
"60"
/>
<
add
key
=
"DOMS"
value
=
"300"
/>
<
add
key
=
"DOMS"
value
=
"300"
/>
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
f8b72bd
...
@@ -39,8 +39,9 @@
...
@@ -39,8 +39,9 @@
<Reference Include="Asa.IOModule.AIOBOX">
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
</Reference>
<Reference Include="Client">
<Reference Include="Client, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\RC1250-ACPackingStore\dll\Client.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\dll\Client.dll</HintPath>
</Reference>
</Reference>
<Reference Include="CodeLibrary">
<Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
...
...
source/DeviceLibrary/agvClient/AgvClient.cs
查看文件 @
f8b72bd
using
BLL
;
using
Asa
;
using
OnlineStore.Common
;
using
OnlineStore.Common
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
...
@@ -11,35 +12,83 @@ namespace OnlineStore.DeviceLibrary
...
@@ -11,35 +12,83 @@ namespace OnlineStore.DeviceLibrary
public
class
AgvClient
public
class
AgvClient
{
{
private
static
string
ServerIp
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
AgvServerIp
);
private
static
string
ServerIp
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
AgvServerIp
);
//private string NodeName = "";
private
static
Client
agvClient
;
private
static
Client
agvClient
=
null
;
public
static
Dictionary
<
string
,
string
>
actionMap
=
new
Dictionary
<
string
,
string
>();
public
static
Dictionary
<
string
,
Asa
.
Actions
>
actionMap
=
new
Dictionary
<
string
,
Asa
.
Actions
>();
public
static
List
<
string
>
NodeList
=
new
List
<
string
>();
public
static
List
<
string
>
NodeList
=
new
List
<
string
>();
public
static
void
Init
(
)
public
static
void
Init
(
)
{
{
try
try
{
{
// this.NodeName = nodeID;
if
(
agvClient
==
null
)
if
(
agvClient
==
null
)
{
{
agvClient
=
new
Client
(
ServerIp
);
agvClient
=
new
Client
(
ServerIp
);
}
}
actionMap
=
new
Dictionary
<
string
,
Asa
.
Actions
>();
actionMap
=
new
Dictionary
<
string
,
string
>();
foreach
(
string
key
in
NodeList
)
foreach
(
string
key
in
NodeList
)
{
{
actionMap
.
Add
(
key
,
A
sa
.
Actions
.
ClientClos
e
);
actionMap
.
Add
(
key
,
A
GVAction
.
Non
e
);
}
}
agvClient
.
Info
+=
AgvClient_Info
;
agvClient
.
Log
+=
AgvClient_Log
;
agvClient
.
Log
+=
AgvClient_Log
;
agvClient
.
Connected
+=
AgvClient_Connected
;
agvClient
.
Arrive
+=
AgvClient_Arrive
;
agvClient
.
Action
+=
AgvClient_Action
;
agvClient
.
CanEnter
+=
AgvClient_CanEnter
;
agvClient
.
Ready
+=
AgvClient_Ready
;
agvClient
.
Connect
();
agvClient
.
Connect
();
agvClient
.
SetNodeID
(
NodeList
.
ToArray
());
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"初始化agvClient "
+
ServerIp
+
" 出错:"
,
ex
);
LogUtil
.
error
(
"初始化agvClient "
+
ServerIp
+
" 出错:"
,
ex
);
}
}
private
static
void
AgvClient_Ready
(
string
id
,
byte
[]
content
)
{
FeedingEquip
equip
=
getFeedEquip
(
id
);
RFIDData
data
=
new
RFIDData
(
content
);
if
(
equip
==
null
)
{
LogUtil
.
info
(
"收到 AgvClient_Ready ["
+
id
+
"] ["
+
data
.
ToData
()+
"] 未找到对应的设备 "
);
return
;
}
equip
.
AgvReady
(
id
,
data
);
}
private
static
void
AgvClient_CanEnter
(
string
id
,
byte
[]
content
)
{
FeedingEquip
equip
=
getFeedEquip
(
id
);
RFIDData
data
=
new
RFIDData
(
content
);
if
(
equip
==
null
)
{
LogUtil
.
info
(
"收到 AgvClient_Ready ["
+
id
+
"] ["
+
data
.
ToData
()
+
"] 未找到对应的设备 "
);
return
;
}
equip
.
AgvCanEnter
(
id
,
data
);
}
private
static
void
AgvClient_Arrive
(
string
id
,
byte
[]
content
)
{
FeedingEquip
equip
=
getFeedEquip
(
id
);
RFIDData
data
=
new
RFIDData
(
content
);
if
(
equip
==
null
)
{
LogUtil
.
info
(
"收到 AgvClient_Ready ["
+
id
+
"] ["
+
data
.
ToData
()
+
"] 未找到对应的设备 "
);
return
;
}
equip
.
AgvArrive
(
id
,
data
);
}
private
static
FeedingEquip
getFeedEquip
(
string
nodeId
)
{
foreach
(
FeedingEquip
feed
in
LineManager
.
Line
.
FeedingEquipMap
.
Values
)
{
if
(
feed
.
Config
.
AgvInName
.
Equals
(
nodeId
)
||
feed
.
Config
.
AgvOutName
.
Equals
(
nodeId
))
{
return
feed
;
}
}
}
return
null
;
}
}
internal
static
bool
ISConnected
()
internal
static
bool
ISConnected
()
{
{
...
@@ -49,101 +98,48 @@ namespace OnlineStore.DeviceLibrary
...
@@ -49,101 +98,48 @@ namespace OnlineStore.DeviceLibrary
}
}
return
agvClient
.
IsConn
;
return
agvClient
.
IsConn
;
}
}
/// <summary>
internal
static
void
SendRFID
(
string
NodeName
,
string
rfid
)
///02 发送RFID
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
SendRFID
(
string
NodeName
,
byte
[]
data
)
{
{
agvClient
.
SendRFID
(
NodeName
,
data
);
agvClient
.
SendRFID
(
NodeName
,
rfid
);
}
}
/// <summary>
internal
static
void
NeedEnter
(
string
NodeName
)
/// 10 准备空车
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
ReadyEmpty
(
string
NodeName
)
{
{
agvClient
.
ReadyEmpty
(
NodeName
);
agvClient
.
NeedEnter
(
NodeName
);
}
}
/// <summary>
internal
static
void
NeedLeave
(
string
NodeName
)
/// 11 准备小车带料架
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
ReadyShelf
(
string
NodeName
)
{
{
agvClient
.
ReadyShelf
(
NodeName
);
agvClient
.
NeedLeave
(
NodeName
);
}
}
/// <summary>
/// 12 可以进入
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
MayEnter
(
string
NodeName
)
internal
static
void
MayEnter
(
string
NodeName
)
{
{
agvClient
.
MayEnter
(
NodeName
);
agvClient
.
MayEnter
(
NodeName
);
}
}
/// <summary>
///13 完成进入
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
FinishEnter
(
string
NodeName
)
internal
static
void
FinishEnter
(
string
NodeName
)
{
{
agvClient
.
FinishEnter
(
NodeName
);
agvClient
.
FinishEnter
(
NodeName
);
}
}
/// <summary>
internal
static
void
MayLeave
(
string
NodeName
)
/// 14 可以出去
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
MayOut
(
string
NodeName
)
{
{
agvClient
.
May
Out
(
NodeName
);
agvClient
.
May
Leave
(
NodeName
);
}
}
/// <summary>
internal
static
void
IsEnter
(
string
NodeName
,
bool
result
)
///17 小车离开
/// </summary>
/// <param name="NodeName"></param>
internal
static
void
GetOut
(
string
NodeName
)
{
{
agvClient
.
GetOut
(
NodeName
);
agvClient
.
IsEnter
(
NodeName
,
result
);
}
}
private
static
bool
AgvClient_Action
(
string
name
,
Asa
.
Actions
action
)
{
if
(
actionMap
.
ContainsKey
(
name
))
{
actionMap
[
name
]
=
action
;
}
else
{
actionMap
.
Add
(
name
,
action
);
}
return
LineManager
.
Line
.
FeedAGVProcess
(
name
,
action
);
}
private
static
void
AgvClient_Connected
()
{
agvClient
.
SetNodeID
(
NodeList
.
ToArray
());
}
private
static
void
AgvClient_Log
(
string
s
)
private
static
void
AgvClient_Log
(
string
s
)
{
{
LogUtil
.
info
(
"AGV "
+
ServerIp
+
" Log:"
+
s
);
LogUtil
.
info
(
"AGV "
+
ServerIp
+
" Log:"
+
s
);
}
}
private
static
void
AgvClient_Info
(
string
s
)
public
static
string
GetAction
(
string
NodeName
)
{
LogUtil
.
info
(
"AGV "
+
ServerIp
+
" Info:"
+
s
);
}
public
static
Asa
.
Actions
GetAction
(
string
NodeName
)
{
{
if
(
actionMap
.
ContainsKey
(
NodeName
))
if
(
actionMap
.
ContainsKey
(
NodeName
))
{
{
return
actionMap
[
NodeName
];
return
actionMap
[
NodeName
];
}
}
return
A
sa
.
Actions
.
ClientClos
e
;
return
A
GVAction
.
Non
e
;
}
}
public
static
void
Dispose
()
public
static
void
Dispose
()
{
{
...
@@ -156,8 +152,16 @@ namespace OnlineStore.DeviceLibrary
...
@@ -156,8 +152,16 @@ namespace OnlineStore.DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
"释放 agvClient "
+
ServerIp
+
" 出错:"
,
ex
);
LogUtil
.
error
(
"释放 agvClient "
+
ServerIp
+
" 出错:"
,
ex
);
}
}
}
}
}
}
public
class
AGVAction
{
public
static
string
None
=
"None"
;
public
static
string
Arrive
=
"Arrive"
;
public
static
string
CanEnter
=
"CanEnter"
;
public
static
string
GetRFID
=
"GetRFID"
;
public
static
string
Ready
=
"Ready"
;
}
}
}
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
查看文件 @
f8b72bd
此文件的差异被折叠,
点击展开。
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
查看文件 @
f8b72bd
...
@@ -402,7 +402,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -402,7 +402,7 @@ namespace OnlineStore.DeviceLibrary
else
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
else
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
//线体出口检测到料架,需要通知AGV小车
//线体出口检测到料架,需要通知AGV小车
AgvClient
.
ReadyEmpty
(
Config
.
AgvOutName
);
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
);
// SendShelfToAGV();
// SendShelfToAGV();
}
}
...
@@ -779,12 +779,17 @@ namespace OnlineStore.DeviceLibrary
...
@@ -779,12 +779,17 @@ namespace OnlineStore.DeviceLibrary
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_33_BatchAxisToP1
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_33_BatchAxisToP1
))
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_34_OutCheck
);
InLog
(
"上料完成"
+
MoveInfo
.
SLog
+
",等待出料线体无料架"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_34_OutCheck
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_35_OutTopCylinder_Up
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_35_OutTopCylinder_Up
);
InLog
(
"上料完成"
+
MoveInfo
.
SLog
+
",出口顶升气缸上升,出料缓冲阻挡上升"
);
InLog
(
"上料完成"
+
MoveInfo
.
SLog
+
",出口顶升气缸上升,出料缓冲阻挡上升"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_OutTopCylinder_Down
,
IO_Type
.
SL_OutTopCylinder_Up
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_OutTopCylinder_Down
,
IO_Type
.
SL_OutTopCylinder_Up
);
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_35_OutTopCylinder_Up
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FI_35_OutTopCylinder_Up
))
{
{
//TODO
//TODO
...
@@ -826,14 +831,12 @@ namespace OnlineStore.DeviceLibrary
...
@@ -826,14 +831,12 @@ namespace OnlineStore.DeviceLibrary
runStatus
=
LineRunStatus
.
Runing
;
runStatus
=
LineRunStatus
.
Runing
;
// MoveInfo.NextMoveStep(LineMoveStep.FI_39_OutLineRun);
// MoveInfo.NextMoveStep(LineMoveStep.FI_39_OutLineRun);
InLog
(
"上料完成,料架到达出口处, 通知AGV取空料架, 入料流程结束"
);
InLog
(
"上料完成,料架到达出口处, 通知AGV取空料架, 入料流程结束"
);
AgvClient
.
ReadyEmpty
(
Config
.
AgvOutName
);
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
);
}
}
#
endregion
#
endregion
}
}
private
void
FI_12_MoveCylinder_Give
()
private
void
FI_12_MoveCylinder_Give
()
{
{
if
(
MoveCylineCanTakeOrGive
())
if
(
MoveCylineCanTakeOrGive
())
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
查看文件 @
f8b72bd
...
@@ -72,15 +72,14 @@ namespace OnlineStore.DeviceLibrary
...
@@ -72,15 +72,14 @@ namespace OnlineStore.DeviceLibrary
StartOutStoreMove
(
null
);
StartOutStoreMove
(
null
);
}
}
else
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
HIGH
))
else
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//小车到达处理
{
//小车到达处理
}
}
else
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
else
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
//线体出口检测到料架,需要通知AGV小车
//线体出口检测到料架,需要通知AGV小车
AgvClient
.
ReadyEmpty
(
Config
.
AgvOutName
);
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
);
}
}
}
}
public
override
bool
StartOutStoreMove
(
InOutParam
param
)
public
override
bool
StartOutStoreMove
(
InOutParam
param
)
{
{
...
@@ -255,7 +254,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -255,7 +254,7 @@ namespace OnlineStore.DeviceLibrary
if
(
tp
<
Config
.
BatchAxisP2
)
if
(
tp
<
Config
.
BatchAxisP2
)
{
{
OutLog
(
"准备出库料架 "
+
MoveInfo
.
SLog
+
" :检测到料盘,下降的目标高度为【"
+
tp
+
"】<【"
+
Config
.
BatchAxisP2
+
"】,料架已满,直接送出料架"
);
OutLog
(
"准备出库料架 "
+
MoveInfo
.
SLog
+
" :检测到料盘,下降的目标高度为【"
+
tp
+
"】<【"
+
Config
.
BatchAxisP2
+
"】,料架已满,直接送出料架"
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
1
_BatchAxisToP2
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
0
_BatchAxisToP2
);
OutLog
(
"出库移栽 "
+
MoveInfo
.
SLog
+
":提升伺服到P2点"
);
OutLog
(
"出库移栽 "
+
MoveInfo
.
SLog
+
":提升伺服到P2点"
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP2
,
Config
.
BatchAxis_P2Speed
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP2
,
Config
.
BatchAxis_P2Speed
);
}
}
...
@@ -273,23 +272,29 @@ namespace OnlineStore.DeviceLibrary
...
@@ -273,23 +272,29 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_3
1
_BatchAxisToP2
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_3
0
_BatchAxisToP2
))
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
2
_TrayLocation_After
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
1
_TrayLocation_After
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
": 升降盘定位气缸后退,重置 OutEndSendShelfOut=fasle ,OutStoreCount = 0"
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
": 升降盘定位气缸后退,重置 OutEndSendShelfOut=fasle ,OutStoreCount = 0"
);
OutEndSendShelfOut
=
false
;
OutEndSendShelfOut
=
false
;
OutStoreHeight
=
-
1
;
OutStoreHeight
=
-
1
;
OutStoreCount
=
0
;
OutStoreCount
=
0
;
TrayLCylinderAfter
(
MoveInfo
);
TrayLCylinderAfter
(
MoveInfo
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_3
2
_TrayLocation_After
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_3
1
_TrayLocation_After
))
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
3
_BatchAxisToP1
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
2
_BatchAxisToP1
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
":提升伺服到P1点,定位气缸下降"
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
":提升伺服到P1点,定位气缸下降"
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP1
,
Config
.
BatchAxis_P1Speed
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP1
,
Config
.
BatchAxis_P1Speed
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_LocationCylinder_Up
,
IO_Type
.
SL_LocationCylinder_Down
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_LocationCylinder_Up
,
IO_Type
.
SL_LocationCylinder_Down
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_33_BatchAxisToP1
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_32_BatchAxisToP1
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_34_OutCheck
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
",等待出料线体无料架"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_34_OutCheck
))
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_34_OutTopCylinder_Up
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_34_OutTopCylinder_Up
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
",出口顶升气缸上升,出料缓冲阻挡上升"
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
",出口顶升气缸上升,出料缓冲阻挡上升"
);
...
@@ -337,9 +342,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -337,9 +342,9 @@ namespace OnlineStore.DeviceLibrary
runStatus
=
LineRunStatus
.
Runing
;
runStatus
=
LineRunStatus
.
Runing
;
// MoveInfo.NextMoveStep(LineMoveStep.FO_39_OutLineRun);
// MoveInfo.NextMoveStep(LineMoveStep.FO_39_OutLineRun);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
", 出口线体运转,料架到达出口处, 通知AGV取空料架, 出料结束"
);
OutLog
(
"送出料串: "
+
MoveInfo
.
SLog
+
", 出口线体运转,料架到达出口处, 通知AGV取空料架, 出料结束"
);
AgvClient
.
ReadyEmpty
(
Config
.
AgvOutName
);
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
);
}
}
else
if
(
MoveInfo
.
MoveStep
>=
LineMoveStep
.
FO_211_AxisDownMove
&&
MoveInfo
.
MoveStep
<
LineMoveStep
.
FO_3
1
_BatchAxisToP2
)
else
if
(
MoveInfo
.
MoveStep
>=
LineMoveStep
.
FO_211_AxisDownMove
&&
MoveInfo
.
MoveStep
<
LineMoveStep
.
FO_3
0
_BatchAxisToP2
)
{
{
TrayOutProcess
();
TrayOutProcess
();
}
}
...
@@ -378,7 +383,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -378,7 +383,7 @@ namespace OnlineStore.DeviceLibrary
{
{
targetPosition
=
Config
.
BatchAxisP2
;
targetPosition
=
Config
.
BatchAxisP2
;
}
}
OutLog
(
"出库移栽 "
+
MoveInfo
.
SLog
+
" :TrayOutProcess 伺服检测信号亮并且不再P2点,再次下降指定的高度,目标:"
+
targetPosition
);
OutLog
(
"出库移栽 "
+
MoveInfo
.
SLog
+
" :TrayOutProcess 伺服检测信号亮并且不再P2点,再次下降指定的高度,目标:"
+
targetPosition
);
BatchAxis
.
AbsMove
(
MoveInfo
,
targetPosition
,
Config
.
BatchAxis_P2Speed
);
BatchAxis
.
AbsMove
(
MoveInfo
,
targetPosition
,
Config
.
BatchAxis_P2Speed
);
}
}
}
}
...
@@ -467,6 +472,21 @@ namespace OnlineStore.DeviceLibrary
...
@@ -467,6 +472,21 @@ namespace OnlineStore.DeviceLibrary
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_221_UpdownAxisToP1
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_221_UpdownAxisToP1
))
{
{
if
(
MoveCylineCanTakeOrGive
())
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_222_CylinderTake
);
OutLog
(
"紧急出料"
+
MoveInfo
.
SLog
+
":上料横移机构回到取料端"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_MoveCylinder_Give
,
IO_Type
.
SL_MoveCylinder_Take
);
}
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_221_UpdownAxisToP1
);
OutLog
(
"紧急出料"
+
MoveInfo
.
SLog
+
":上料横移机构取料端 前先上升横移气缸"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_MoveCylinder_Down
,
IO_Type
.
SL_MoveCylinder_Up
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
FO_222_CylinderTake
))
{
//出库结束 TODO
//出库结束 TODO
// bool isNeedSendShelf = false;
// bool isNeedSendShelf = false;
//判断料架是否满了
//判断料架是否满了
...
@@ -498,7 +518,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -498,7 +518,7 @@ namespace OnlineStore.DeviceLibrary
}
}
private
void
SendOutShelfOut
(
string
msg
=
""
)
private
void
SendOutShelfOut
(
string
msg
=
""
)
{
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
1
_BatchAxisToP2
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_3
0
_BatchAxisToP2
);
OutStoreHeight
=
-
1
;
OutStoreHeight
=
-
1
;
OutLog
(
"紧急出料完成, "
+
MoveInfo
.
SLog
+
":"
+
msg
+
",送出料串,提升伺服到P2点,重置OutStoreHeight=-1"
);
OutLog
(
"紧急出料完成, "
+
MoveInfo
.
SLog
+
":"
+
msg
+
",送出料串,提升伺服到P2点,重置OutStoreHeight=-1"
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP2
,
Config
.
BatchAxis_P2Speed
);
BatchAxis
.
AbsMove
(
MoveInfo
,
Config
.
BatchAxisP2
,
Config
.
BatchAxis_P2Speed
);
...
...
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
查看文件 @
f8b72bd
...
@@ -919,21 +919,5 @@ namespace OnlineStore.DeviceLibrary
...
@@ -919,21 +919,5 @@ namespace OnlineStore.DeviceLibrary
return
false
;
return
false
;
}
}
#
endregion
#
endregion
#
region
AGV
小车判断
internal
bool
FeedAGVProcess
(
string
name
,
Asa
.
Actions
action
)
{
foreach
(
FeedingEquip
feed
in
FeedingEquipMap
.
Values
)
{
if
(
feed
.
Config
.
AgvInName
.
Equals
(
name
)
||
feed
.
Config
.
AgvOutName
.
Equals
(
name
))
{
return
feed
.
ProcessAGVAction
(
name
,
action
);
}
}
LogUtil
.
error
(
"收到agv调度Actions【"
+
name
+
"】=【"
+
action
+
"】,未找到对应的设备"
);
return
false
;
}
#
endregion
}
}
}
}
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
查看文件 @
f8b72bd
...
@@ -81,7 +81,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -81,7 +81,7 @@ namespace OnlineStore.DeviceLibrary
CylinderMove
(
MoveInfo
,
IO_Type
.
ClampCylinder_Tighten
,
IO_Type
.
ClampCylinder_Slack
);
CylinderMove
(
MoveInfo
,
IO_Type
.
ClampCylinder_Tighten
,
IO_Type
.
ClampCylinder_Slack
);
//更新料盘位置
//更新料盘位置
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
MOVING
,
DeviceID
);
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
MOVING
,
DeviceID
.
ToString
()
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_54_CylinderOpen
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_54_CylinderOpen
))
...
@@ -101,9 +101,6 @@ namespace OnlineStore.DeviceLibrary
...
@@ -101,9 +101,6 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
endregion
#
region
移载装置,放物品到流水线操作
#
region
移载装置,放物品到流水线操作
//else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember)
// && MoveInfo.MoveStep.Equals(LineMoveStep.MO_56_CylinderAfter)
// && !SecondMoveInfo.IsInWait)
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_56_CylinderAfter
)
)
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_56_CylinderAfter
)
)
{
{
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_11_CodeRember
)
&&
!
SecondMoveInfo
.
IsInWait
)
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_11_CodeRember
)
&&
!
SecondMoveInfo
.
IsInWait
)
...
@@ -123,7 +120,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -123,7 +120,7 @@ namespace OnlineStore.DeviceLibrary
}
}
//更新料盘位置
//更新料盘位置
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
INLINE
,
trayNum
);
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
INLINE
,
"E"
+
trayNum
.
ToString
().
PadLeft
(
2
,
'0'
)
);
UpdownDownP2Move
(
MoveInfo
.
MoveParam
.
PlateH
);
UpdownDownP2Move
(
MoveInfo
.
MoveParam
.
PlateH
);
}
}
else
if
(
MoveInfo
.
IsTimeOut
(
180
))
else
if
(
MoveInfo
.
IsTimeOut
(
180
))
...
...
source/DeviceLibrary/assemblyLine/ProvidingEquip_Partial.cs
查看文件 @
f8b72bd
...
@@ -413,7 +413,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -413,7 +413,7 @@ namespace OnlineStore.DeviceLibrary
{
{
OutLog
(
"出料 "
+
MoveInfo
.
SLog
+
" : 夹料气缸夹紧,更新料盘位置【"
+
MoveInfo
.
MoveParam
.
WareCode
+
"】【INBELT】【"
+
lineId
+
"】"
);
OutLog
(
"出料 "
+
MoveInfo
.
SLog
+
" : 夹料气缸夹紧,更新料盘位置【"
+
MoveInfo
.
MoveParam
.
WareCode
+
"】【INBELT】【"
+
lineId
+
"】"
);
//更新料盘位置
//更新料盘位置
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
INBELT
,
lineId
);
SServerManager
.
UpdateTrayLoc
(
Name
,
MoveInfo
.
MoveParam
.
WareCode
,
LocStatus
.
INBELT
,
lineId
.
ToString
()
);
}
}
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
PO_03_CylinderOpen
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
PO_03_CylinderOpen
))
...
...
source/DeviceLibrary/assemblymanager/SServerManager.cs
查看文件 @
f8b72bd
...
@@ -198,7 +198,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -198,7 +198,7 @@ namespace OnlineStore.DeviceLibrary
}
}
public
static
string
UpdateTrayLoc
(
string
deviceName
,
string
barcode
,
string
status
,
int
locInfo
)
public
static
string
UpdateTrayLoc
(
string
deviceName
,
string
barcode
,
string
status
,
string
locInfo
)
{
{
string
msg
=
""
;
string
msg
=
""
;
try
try
...
@@ -211,7 +211,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -211,7 +211,7 @@ namespace OnlineStore.DeviceLibrary
Dictionary
<
string
,
string
>
paramMap
=
new
Dictionary
<
string
,
string
>();
Dictionary
<
string
,
string
>
paramMap
=
new
Dictionary
<
string
,
string
>();
paramMap
.
Add
(
"barcode"
,
barcode
);
//barcode = 料盘的条码
paramMap
.
Add
(
"barcode"
,
barcode
);
//barcode = 料盘的条码
paramMap
.
Add
(
"status"
,
status
);
// status = 状态信息, 移栽 = MOVING, 流水线 = INLINE, 皮带线 = INBELT
paramMap
.
Add
(
"status"
,
status
);
// status = 状态信息, 移栽 = MOVING, 流水线 = INLINE, 皮带线 = INBELT
paramMap
.
Add
(
"locInfo"
,
locInfo
.
ToString
()
);
// locInfo = 位置信息,移栽时为移栽编号,流水线时为托盘号,皮带线时为皮带线编号,机器人时为机器人编号
paramMap
.
Add
(
"locInfo"
,
locInfo
);
// locInfo = 位置信息,移栽时为移栽编号,流水线时为托盘号,皮带线时为皮带线编号,机器人时为机器人编号
string
server
=
GetAddr
(
Addr_updateLocInfo
,
paramMap
);
string
server
=
GetAddr
(
Addr_updateLocInfo
,
paramMap
);
string
resultStr
=
HttpHelper
.
Post
(
server
,
""
);
string
resultStr
=
HttpHelper
.
Post
(
server
,
""
);
LogUtil
.
info
(
"UpdateTrayLoc 【"
+
server
+
"】【"
+
resultStr
+
"】"
);
LogUtil
.
info
(
"UpdateTrayLoc 【"
+
server
+
"】【"
+
resultStr
+
"】"
);
...
...
source/DeviceLibrary/deviceLibrary/IO/AIOBOX/AIOBOXManager.cs
查看文件 @
f8b72bd
...
@@ -377,20 +377,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -377,20 +377,11 @@ namespace OnlineStore.DeviceLibrary
AIOBOX
aioBox
=
getAIO
(
ioIp
);
AIOBOX
aioBox
=
getAIO
(
ioIp
);
if
(
aioBox
!=
null
)
if
(
aioBox
!=
null
)
{
{
// Box_Addr add = GetAddr(StartAddress);
// for (int i = 1; i <= 3; i++)
//{
bool
result
=
aioBox
.
WriteDO
(
StartAddress
,
GetBox_Sta
(
onOff
));
bool
result
=
aioBox
.
WriteDO
(
StartAddress
,
GetBox_Sta
(
onOff
));
if
(!
result
)
if
(!
result
)
{
{
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 失败:"
+
aioBox
.
ErrInfo
);
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 失败:"
+
aioBox
.
ErrInfo
);
}
}
// else
// {
// break;
// }
//}
}
}
else
else
{
{
...
...
source/DeviceLibrary/model/StoreStep.cs
查看文件 @
f8b72bd
...
@@ -706,7 +706,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -706,7 +706,7 @@ namespace OnlineStore.DeviceLibrary
FI_33_BatchAxisToP1
=
11033
,
FI_33_BatchAxisToP1
=
11033
,
/// <summary>
/// <summary>
/// 上料完成,
判断出料线体是否有
料架
/// 上料完成,
等待出料线体无
料架
/// </summary>
/// </summary>
FI_34_OutCheck
=
11034
,
FI_34_OutCheck
=
11034
,
/// <summary>
/// <summary>
...
@@ -822,41 +822,43 @@ namespace OnlineStore.DeviceLibrary
...
@@ -822,41 +822,43 @@ namespace OnlineStore.DeviceLibrary
FO_218_CylinderGive
=
12218
,
FO_218_CylinderGive
=
12218
,
/// <summary>
/// <summary>
///
料盘
移栽:升降伺服到P3
///
紧急出料
移栽:升降伺服到P3
/// </summary>
/// </summary>
FO_219_UpdownAxisToP3
=
12219
,
FO_219_UpdownAxisToP3
=
12219
,
/// <summary>
/// <summary>
///
料盘
移栽:出料横移机构放松
///
紧急出料
移栽:出料横移机构放松
/// </summary>
/// </summary>
FO_220_CylinderSlack
=
12220
,
FO_220_CylinderSlack
=
12220
,
/// <summary>
/// <summary>
///
料盘
移栽:升降伺服回P1
///
紧急出料
移栽:升降伺服回P1
/// </summary>
/// </summary>
FO_221_UpdownAxisToP1
=
12221
,
FO_221_UpdownAxisToP1
=
12221
,
/// <summary>
/// 紧急出料移栽:上料横移机构到取料端
/// </summary>
FO_222_CylinderTake
=
12222
,
/// <summary>
/// <summary>
/// 出料完成,料盘已放入料架,提升伺服到P2点
/// 出料完成,料盘已放入料架,提升伺服到P2点
/// </summary>
/// </summary>
FO_3
1_BatchAxisToP2
=
12331
,
FO_3
0_BatchAxisToP2
=
12330
,
/// <summary>
/// <summary>
/// 出料完成,升降盘定位气缸后退
/// 出料完成,升降盘定位气缸后退
/// </summary>
/// </summary>
FO_3
2
_TrayLocation_After
,
FO_3
1
_TrayLocation_After
,
/// <summary>
/// <summary>
/// 出料完成,提升伺服到P1点
/// 出料完成,提升伺服到P1点
/// </summary>
/// </summary>
FO_3
3
_BatchAxisToP1
,
FO_3
2
_BatchAxisToP1
,
/// <summary>
/// <summary>
/// 出料完成,
判断出料线体是否有
料架
/// 出料完成,
等待出料线体无
料架
/// </summary>
/// </summary>
// FO_34_OutCheck = 12034
,
FO_34_OutCheck
,
/// <summary>
/// <summary>
/// 出料完成,出口顶升气缸上升
/// 出料完成,出口顶升气缸上升
/// </summary>
/// </summary>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论