Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 4f98455d
由
LN
编写于
2020-04-29 18:08:38 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
入料口线体处理修改
1 个父辈
47821f09
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
82 行增加
和
43 行删除
source/AssemblyLineClient/App.config
source/AssemblyLineClient/记录.txt
source/DeviceLibrary/agvClient/AgvClient.cs
source/DeviceLibrary/assemblyLine/EquipBase.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/AssemblyLineClient/App.config
查看文件 @
4f98455
...
...
@@ -111,4 +111,7 @@
<
startup
>
<
supportedRuntime
version
=
"v4.0"
sku
=
".NETFramework,Version=v4.6.1"
/>
</
startup
>
<
runtime
>
<
gcConcurrent
enabled
=
"false"
/>
</
runtime
>
</
configuration
>
\ No newline at end of file
source/AssemblyLineClient/记录.txt
查看文件 @
4f98455
20200417
20200429:
入料口定位工位检测料架后延迟3秒
停止运行时需要给agv发none
needEnter和needLeave都延迟3秒再发。
入料缓冲阻挡修改。
20200428:
出大料时,横移气缸还未后退,叉子出料与横移气缸相撞
料仓出料到门口后,最好验证门口有料盘信号,否则报警。
20200417
进料阻挡只下降500ms。
入库未收到服务器反馈时,调用下取消入库任务。
放托盘放在前面.
...
...
source/DeviceLibrary/agvClient/AgvClient.cs
查看文件 @
4f98455
...
...
@@ -86,10 +86,10 @@ namespace OnlineStore.DeviceLibrary
// RFIDData data = new RFIDData(content);
LogUtil
.
info
(
"收到 AgvClient_CloseDoor ["
+
id
+
"] ["
+
rfid
+
"] "
);
}
private
static
void
AgvClient_Ready
(
string
id
,
string
rfid
)
private
static
void
AgvClient_Ready
(
string
id
,
string
rfid
)
{
UpdateAction
(
id
,
ClientAction
.
Ready
);
// RFIDData data = new RFIDData(content);
// RFIDData data = new RFIDData(content);
LogUtil
.
info
(
"收到 AgvClient_Ready ["
+
id
+
"] ["
+
rfid
+
"] "
);
FeedingEquip
equip
=
getFeedEquip
(
id
);
...
...
source/DeviceLibrary/assemblyLine/EquipBase.cs
查看文件 @
4f98455
...
...
@@ -421,7 +421,12 @@ namespace OnlineStore.DeviceLibrary
wait
.
IsEnd
=
IOValue
(
wait
.
IoType
).
Equals
(
wait
.
IoValue
);
if
(!
wait
.
IsEnd
)
{
{
if
(
wait
.
IoType
.
Equals
(
IO_Type
.
SL_Line_Run
))
{
IOMove
(
wait
.
IoType
,
wait
.
IoValue
);
LogInfo
(
" ["
+
moveInfo
.
MoveType
+
"]["
+
moveInfo
.
MoveStep
+
"]重写DO: "
+
wait
.
ToStr
());
}
TimeSpan
rwSpan
=
DateTime
.
Now
-
preRWTime
;
//一分钟还未检测到
if
(
span
.
TotalSeconds
>
LineManager
.
Config
.
IOSingle_TimerOut
&&
alarmType
<=
LineAlarmType
.
IoSingleTimeOut
)
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
查看文件 @
4f98455
...
...
@@ -4,6 +4,7 @@ using OnlineStore.LoadCSVLibrary;
using
System
;
using
System.Collections.Concurrent
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
...
...
@@ -298,8 +299,8 @@ namespace OnlineStore.DeviceLibrary
internal
override
void
StopMove
()
{
//StopMove时设置状态为none
AgvClient
.
SetStatus
(
Config
.
AgvInName
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
);
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
None
,
ClientLevel
.
Low
,
true
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
None
,
ClientLevel
.
Low
,
true
);
//MoveInfo.EndMove();
//SecondMoveInfo.EndMove();
BatchAxisStopCheck
();
...
...
@@ -337,7 +338,9 @@ namespace OnlineStore.DeviceLibrary
}
StopMove
();
MoveInfo
.
EndMove
();
SecondMoveInfo
.
EndMove
();
SecondMoveInfo
.
EndMove
();
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
None
,
ClientLevel
.
Low
,
true
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
None
,
ClientLevel
.
Low
,
true
);
}
...
...
@@ -416,45 +419,54 @@ namespace OnlineStore.DeviceLibrary
{
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
ClientLevel
level
=
ClientLevel
.
Low
;
if
(
IOValue
(
IO_Type
.
SL_Location_Check
).
Equals
(
IO_VALUE
.
HIGH
)
||
(!
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)))
if
(
TrayManager
.
checkWatch
(
needLeaveWatch
,
3000
))
{
level
=
ClientLevel
.
Middle
;
if
(
Config
.
IsCanOut
.
Equals
(
1
))
ClientLevel
level
=
ClientLevel
.
Low
;
if
(
IOValue
(
IO_Type
.
SL_Location_Check
).
Equals
(
IO_VALUE
.
HIGH
)
||
(!
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
))
{
level
=
ClientLevel
.
High
;
level
=
ClientLevel
.
Middle
;
if
(
Config
.
IsCanOut
.
Equals
(
1
))
{
level
=
ClientLevel
.
High
;
}
}
//线体出口检测到料架,需要通知AGV小车
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
,
LastOutShelfId
,
level
);
// SendShelfToAGV();
}
//线体出口检测到料架,需要通知AGV小车
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
,
LastOutShelfId
,
level
);
// SendShelfToAGV();
}
else
{
needLeaveWatch
.
Stop
();
AgvClient
.
SetToNone
(
Config
.
AgvOutName
);
}
//入口无料架,mayEnter
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
ClientLevel
level
=
ClientLevel
.
Low
;
if
(
Config
.
IsCanOut
.
Equals
(
1
))
if
(
TrayManager
.
checkWatch
(
needEnterWatch
,
3000
))
{
//如果是出料模块且当前无料架
if
(
IOValue
(
IO_Type
.
SL_Location_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
ClientLevel
level
=
ClientLevel
.
Low
;
if
(
Config
.
IsCanOut
.
Equals
(
1
))
{
level
=
ClientLevel
.
High
;
//如果是出料模块且当前无料架
if
(
IOValue
(
IO_Type
.
SL_Location_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
level
=
ClientLevel
.
High
;
}
}
AgvClient
.
NeedEnter
(
Config
.
AgvInName
,
""
,
level
);
}
AgvClient
.
NeedEnter
(
Config
.
AgvInName
,
""
,
level
);
}
else
{
needEnterWatch
.
Stop
();
AgvClient
.
SetToNone
(
Config
.
AgvInName
);
}
}
}
private
Stopwatch
needEnterWatch
=
new
Stopwatch
();
private
Stopwatch
needLeaveWatch
=
new
Stopwatch
();
/// <summary>
/// 下降所有阻挡气缸
/// </summary>
...
...
@@ -749,7 +761,7 @@ namespace OnlineStore.DeviceLibrary
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
LastOutShelfId
,
ClientAction
.
FinishLeave
,
ClientLevel
.
High
,
true
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
1000
0
);
Thread
.
Sleep
(
1000
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
None
,
ClientLevel
.
High
,
true
);
});
ProcessShelfOut
=
false
;
...
...
@@ -812,24 +824,24 @@ namespace OnlineStore.DeviceLibrary
}
else
{
LogUtil
.
info
(
logName
+
"已收到 SL_Stop_Check=High ,等待
3
000后停止转动,发送 FinishEnter"
);
LogUtil
.
info
(
logName
+
"已收到 SL_Stop_Check=High ,等待
5
000后停止转动,发送 FinishEnter"
);
}
//等待200毫秒后停止转动
Thread
.
Sleep
(
3
000
);
Thread
.
Sleep
(
5
000
);
if
(
MoveInfo
.
MoveType
.
Equals
(
LineMoveStep
.
FI_03_LineStart
))
{
LogUtil
.
info
(
logName
+
" 等待
3
000后, MoveInfo.MoveType= FI_03_LineStart 不需要停止链条转动"
);
LogUtil
.
info
(
logName
+
" 等待
5
000后, MoveInfo.MoveType= FI_03_LineStart 不需要停止链条转动"
);
}
else
{
LogUtil
.
info
(
logName
+
"等待
3
000后,停止链条转动"
);
LogUtil
.
info
(
logName
+
"等待
5
000后,停止链条转动"
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
}
//料架可离开
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
FinishEnter
,
ClientLevel
.
High
,
true
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
1000
0
);
Thread
.
Sleep
(
1000
);
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
None
,
ClientLevel
.
High
,
true
);
});
ProcessShelfEnter
=
false
;
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
查看文件 @
4f98455
...
...
@@ -576,10 +576,11 @@ namespace OnlineStore.DeviceLibrary
{
//定位工位有料架,等待1秒后再次检测
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_04_WaitTime
);
InLog
(
"定位工位检测到料架: "
+
MoveInfo
.
SLog
+
",进料阻挡上升,缓冲阻挡上升, 等待
1
秒再次检测"
);
InLog
(
"定位工位检测到料架: "
+
MoveInfo
.
SLog
+
",进料阻挡上升,缓冲阻挡上升, 等待
3
秒再次检测"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
}
private
void
LineInStoreProcess
()
...
...
@@ -595,9 +596,10 @@ namespace OnlineStore.DeviceLibrary
else
if
(
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_03_LineStart
);
InLog
(
"入料检测: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降1000,流水线转动 1000"
);
InLog
(
"入料检测: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降
500,缓冲阻挡前进
1000,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
,
500
);
//进料阻挡下降
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
//缓冲阻挡下降
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
//缓冲阻挡前进1000
// IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡下降
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
...
...
@@ -606,9 +608,9 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_03_LineStart
);
InLog
(
"入料检测: "
+
MoveInfo
.
SLog
+
" 进料口检测有料架,进料阻挡上升,缓冲阻挡
上升
,流水线转动 1000"
);
InLog
(
"入料检测: "
+
MoveInfo
.
SLog
+
" 进料口检测有料架,进料阻挡上升,缓冲阻挡
前进1000
,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
LOW
);
//进料阻挡上升
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
);
//缓冲阻挡上升
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
//缓冲阻挡前进1000
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
...
...
@@ -672,7 +674,7 @@ namespace OnlineStore.DeviceLibrary
//定位工位有料架,直接开始入料
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FI_07_LocationCylinder_Up
);
InLog
(
"定位工位检测到料架: "
+
MoveInfo
.
SLog
+
" 缓冲阻挡上升, 定位气缸上升,读取料架号"
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
//缓冲阻挡下降
//
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡下降
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_LocationCylinder_Down
,
IO_Type
.
SL_LocationCylinder_Up
);
}
}
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
查看文件 @
4f98455
...
...
@@ -201,11 +201,12 @@ namespace OnlineStore.DeviceLibrary
{
//定位工位有料架,等待1秒后再次检测
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_04_WaitTime
);
OutLog
(
"准备出库料架 "
+
MoveInfo
.
SLog
+
"定位工位检测到料架:进料阻挡上升, 等待
1
秒再次检测"
);
OutLog
(
"准备出库料架 "
+
MoveInfo
.
SLog
+
"定位工位检测到料架:进料阻挡上升, 等待
3
秒再次检测"
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
LOW
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
}
...
...
@@ -222,24 +223,26 @@ namespace OnlineStore.DeviceLibrary
else
if
(
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_03_LineStart
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降500ms,缓冲阻挡
下降
,流水线转动 5000"
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降500ms,缓冲阻挡
前进1000
,流水线转动 5000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
,
500
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
//缓冲阻挡前进1000
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
6000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Location_Check
,
IO_VALUE
.
HIGH
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
));
}
else
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_03_LineStart
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 进料口检测有料架,进料阻挡上升,缓冲阻挡
上升
,流水线转动 1000"
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 进料口检测有料架,进料阻挡上升,缓冲阻挡
前进1000
,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
LOW
);
//进料阻挡上升
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
);
//缓冲阻挡下降
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
//缓冲阻挡前进1000
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Stop_Check
,
IO_VALUE
.
HIGH
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
));
}
else
{
...
...
@@ -314,7 +317,7 @@ namespace OnlineStore.DeviceLibrary
//定位工位有料架,直接开始入料
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_05_LocationUp
);
OutLog
(
"定位工位检测到料架: "
+
MoveInfo
.
SLog
+
" 缓冲阻挡下降, 定位气缸上升,读取料架号"
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
//缓冲阻挡下降
//
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡下降
CylinderMove
(
MoveInfo
,
IO_Type
.
SL_LocationCylinder_Down
,
IO_Type
.
SW4_LocationCylinder_Up
);
}
...
...
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
查看文件 @
4f98455
...
...
@@ -1051,7 +1051,8 @@ namespace OnlineStore.DeviceLibrary
{
return
true
;
}
else
if
(
move
.
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_56_CylinderAfter
)
&&
move
.
MoveInfo
.
IsInWait
.
Equals
(
false
))
else
if
(
move
.
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MO_56_CylinderAfter
)
&&
move
.
MoveInfo
.
IsInWait
.
Equals
(
false
)
&&
move
.
CylinderIsOk
(
IO_Type
.
BeforeAfterCylinder_Before
,
IO_Type
.
BeforeAfterCylinder_After
))
{
return
true
;
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论