Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 87046a49
由
LN
编写于
2022-11-19 12:35:17 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
关机时要等待横移无托盘,所有托盘都是空或禁用时在关闭线体。
1 个父辈
253ddc3c
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
175 行增加
和
69 行删除
source/AssemblyLineClient/FrmLineStore.cs
source/DeviceLibrary/assemblyLine/LineBean.cs
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
source/DeviceLibrary/assemblyLine/LineBean_Shunt.cs
source/DeviceLibrary/assemblyLine/LineBean_Shunt2.cs
source/AssemblyLineClient/FrmLineStore.cs
查看文件 @
87046a4
...
...
@@ -565,10 +565,17 @@ namespace OnlineStore.AssemblyLine
if
(!
stopRun
&&
stopRequest
&&
(
DateTime
.
Now
-
stopTime
).
TotalSeconds
>
40
)
{
stopRun
=
true
;
//停止所有料仓TToolStripMenuItem_Click(null, null);
lineBean
.
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
lineBean
.
LineStopRun
=
true
;
LogUtil
.
info
(
"收到服务端停机要求,停止环形线"
);
//停止所有料仓TToolStripMenuItem_Click(null, null);
if
(
lineBean
.
LineCanStop
())
{
LogUtil
.
info
(
"收到服务端停机要求,直接停止环形线"
);
lineBean
.
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
}
else
{
LogUtil
.
info
(
"收到服务端停机要求,横移还有托盘,等托盘离开后再停止环形线"
);
}
}
}
else
...
...
source/DeviceLibrary/assemblyLine/LineBean.cs
查看文件 @
87046a4
...
...
@@ -552,6 +552,9 @@ namespace OnlineStore.DeviceLibrary
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
HIGH
);
}
/// <summary>
/// 关机
/// </summary>
public
bool
LineStopRun
=
false
;
public
void
WriteDrivetMotorRun
(
IO_VALUE
value
)
...
...
@@ -561,7 +564,18 @@ namespace OnlineStore.DeviceLibrary
IOMove
(
IO_Type
.
DriveMotor_Run3
,
value
);
IOMove
(
IO_Type
.
DriveMotor_Run4
,
value
);
}
public
bool
MotorHasRun
()
{
if
(
IOValue
(
IO_Type
.
DriveMotor_Run1
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOValue
(
IO_Type
.
DriveMotor_Run2
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOValue
(
IO_Type
.
DriveMotor_Run3
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOValue
(
IO_Type
.
DriveMotor_Run4
).
Equals
(
IO_VALUE
.
HIGH
)
)
{
return
true
;
}
return
false
;
}
#
region
灯光处理
...
...
@@ -851,6 +865,16 @@ namespace OnlineStore.DeviceLibrary
ShuntTimerProcess
();
Shunt2TimerProcess
();
if
(
LineStopRun
)
{
//需要关机
if
(
MotorHasRun
()
&&
LineCanStop
())
{
WriteDrivetMotorRun
(
IO_VALUE
.
LOW
);
LogInfo
(
"收到服务端停机要求,线体还未关闭,停止环形线线体转动"
);
}
}
}
catch
(
Exception
ex
)
{
...
...
@@ -1181,5 +1205,62 @@ namespace OnlineStore.DeviceLibrary
}
return
null
;
}
/// <summary>
/// 关机功能:判断是否可以关闭线体,验证横移上是否有料盘
/// </summary>
/// <returns></returns>
public
bool
LineCanStop
()
{
if
(!
SW23_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
return
false
;
}
if
(!
SW41_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
return
false
;
}
if
(!
Shunt_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
if
(
Shunt_MoveInfo
.
MoveStep
>=
LineMoveStep
.
Shunt06_Top1Up
&&
Shunt_MoveInfo
.
MoveStep
<=
LineMoveStep
.
Shunt11_TopDown
)
{
return
false
;
}
}
if
(!
Shunt2_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
))
{
if
(
Shunt2_MoveInfo
.
MoveStep
>=
LineMoveStep
.
Shunt06_Top1Up
&&
Shunt2_MoveInfo
.
MoveStep
<=
LineMoveStep
.
Shunt11_TopDown
)
{
return
false
;
}
}
if
(
hasTray
())
{
return
false
;
}
return
true
;
}
/// <summary>
/// 所有托盘都要是空托盘或者禁用托盘
/// </summary>
/// <returns></returns>
public
bool
hasTray
()
{
List
<
TrayInfo
>
trayList
=
TrayManager
.
getTrayList
();
foreach
(
TrayInfo
tray
in
trayList
)
{
if
(
tray
.
IsFull
)
{
if
(
TrayDisableManager
.
DisableTray
(
tray
.
TrayCode
))
{
continue
;
}
return
true
;
}
}
return
false
;
}
}
}
\ No newline at end of file
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
查看文件 @
87046a4
...
...
@@ -456,50 +456,56 @@ namespace OnlineStore.DeviceLibrary
sdIsInprocess
=
false
;
return
;
}
if
(
SW23_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
SW23WaitTrayNum
>=
0
)
if
(
(!
LineStopRun
)
||
hasTray
()
)
{
Equip_TrayPEndEvent
(
2
,
SW23WaitTrayNum
);
}
if
(
SW41_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
SW41WaitTrayNum
>=
0
)
{
Equip_TrayPEndEvent
(
4
,
SW41WaitTrayNum
);
if
(
SW23_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
SW23WaitTrayNum
>=
0
)
{
Equip_TrayPEndEvent
(
2
,
SW23WaitTrayNum
);
}
if
(
SW41_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
SW41WaitTrayNum
>=
0
)
{
Equip_TrayPEndEvent
(
4
,
SW41WaitTrayNum
);
}
}
if
(
SW41_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
ProvidingEquipMap
[
204
].
runStatus
<=
LineRunStatus
.
Wait
)
{
if
((!
LineStopRun
)
||
hasTray
())
{
if
(
IOValue
(
IO_Type
.
SW4_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW1_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
if
(
IOValue
(
IO_Type
.
SW4_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW1_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
TrayManager
.
LineCanMoveSW
(
4
)
&&
TrayManager
.
LineCanMoveSW
(
1
))
{
if
(
TrayManager
.
checkWatch
(
sw41WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
SW41_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW41_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW03_WaitTime
);
UpateSw41TrayNum
();
SWLog
(
"横移轨道41:检测到SW4_TrayCheck,再次检测,更新托盘号 ["
+
Sw41TrayNum
+
"] "
);
SW41_MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SW4_TrayCheck
,
IO_VALUE
.
HIGH
));
if
(
TrayManager
.
checkWatch
(
sw41WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
SW41_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW41_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW03_WaitTime
);
UpateSw41TrayNum
();
SWLog
(
"横移轨道41:检测到SW4_TrayCheck,再次检测,更新托盘号 ["
+
Sw41TrayNum
+
"] "
);
SW41_MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SW4_TrayCheck
,
IO_VALUE
.
HIGH
));
}
}
}
else
if
(
IOValue
(
IO_Type
.
SW4_StopCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW4_StopDown
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW4_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW1_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
(
DateTime
.
Now
-
lastSw4StopDownTime
).
TotalSeconds
>
2
&&
TrayManager
.
LineCanMoveSW
(
4
)
&&
TrayManager
.
LineCanMoveSW
(
1
))
{
if
(
TrayManager
.
checkWatch
(
sw41WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
else
if
(
IOValue
(
IO_Type
.
SW4_StopCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW4_StopDown
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW4_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW1_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
(
DateTime
.
Now
-
lastSw4StopDownTime
).
TotalSeconds
>
2
&&
TrayManager
.
LineCanMoveSW
(
4
)
&&
TrayManager
.
LineCanMoveSW
(
1
))
{
SW41_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW41_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW00_Wait
);
// UpateSw41TrayNum();
LogUtil
.
info
(
Name
+
"横移轨道41:检测到SW4_StopCheck, 开始处理托盘 "
);
//阻挡气缸下降500毫秒然后上升
lastSw4StopDownTime
=
DateTime
.
Now
;
if
(
TrayManager
.
checkWatch
(
sw41WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
SW41_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW41_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW00_Wait
);
// UpateSw41TrayNum();
LogUtil
.
info
(
Name
+
"横移轨道41:检测到SW4_StopCheck, 开始处理托盘 "
);
//阻挡气缸下降500毫秒然后上升
lastSw4StopDownTime
=
DateTime
.
Now
;
}
}
else
{
sw41WaitWatch
.
Stop
();
}
}
else
{
sw41WaitWatch
.
Stop
();
}
}
else
...
...
@@ -509,40 +515,43 @@ namespace OnlineStore.DeviceLibrary
}
if
(
SW23_MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
FeedingEquipMap
[
103
].
runStatus
<=
LineRunStatus
.
Wait
)
{
//检测到阻挡夹具信号后,阻挡气缸下降,等待有夹具信号,阻挡气缸上升,
//顶升气缸上升到位,开始流水线转动,检测到出口信号后,停止转动,顶升气缸下降,阻挡4下降,盘通过
if
(
IOValue
(
IO_Type
.
SW2_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
TrayManager
.
LineCanMoveSW
(
2
)
&&
TrayManager
.
LineCanMoveSW
(
3
))
if
((!
LineStopRun
)
||
hasTray
())
{
if
(
TrayManager
.
checkWatch
(
sw23WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
//检测到阻挡夹具信号后,阻挡气缸下降,等待有夹具信号,阻挡气缸上升,
//顶升气缸上升到位,开始流水线转动,检测到出口信号后,停止转动,顶升气缸下降,阻挡4下降,盘通过
if
(
IOValue
(
IO_Type
.
SW2_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
TrayManager
.
LineCanMoveSW
(
2
)
&&
TrayManager
.
LineCanMoveSW
(
3
))
{
SW23_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW23_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW03_WaitTime
);
UpateSw23TrayNum
();
SWLog
(
"横移轨道23:检测到SW2_TrayCheck,再次检测,更新托盘号 ["
+
Sw23TrayNum
+
"] "
);
SW23_MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SW2_TrayCheck
,
IO_VALUE
.
HIGH
));
if
(
TrayManager
.
checkWatch
(
sw23WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
SW23_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW23_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW03_WaitTime
);
UpateSw23TrayNum
();
SWLog
(
"横移轨道23:检测到SW2_TrayCheck,再次检测,更新托盘号 ["
+
Sw23TrayNum
+
"] "
);
SW23_MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SW2_TrayCheck
,
IO_VALUE
.
HIGH
));
}
}
}
else
if
(
IOValue
(
IO_Type
.
SW2_StopCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW2_StopDown
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW2_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
(
DateTime
.
Now
-
lastSw2StopDownTime
).
TotalSeconds
>
2
&&
TrayManager
.
LineCanMoveSW
(
2
)
&&
TrayManager
.
LineCanMoveSW
(
3
))
{
if
(
TrayManager
.
checkWatch
(
sw23WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
else
if
(
IOValue
(
IO_Type
.
SW2_StopCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
SW2_StopDown
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW2_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SW3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
(
DateTime
.
Now
-
lastSw2StopDownTime
).
TotalSeconds
>
2
&&
TrayManager
.
LineCanMoveSW
(
2
)
&&
TrayManager
.
LineCanMoveSW
(
3
))
{
SW23_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW23_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW00_Wait
);
// UpateSw23TrayNum();
LogUtil
.
info
(
Name
+
"横移轨道23:检测到SW2_StopCheck, 开始处理托盘 "
);
//阻挡气缸下降500毫秒然后上升
lastSw2StopDownTime
=
DateTime
.
Now
;
if
(
TrayManager
.
checkWatch
(
sw23WaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
))
{
SW23_MoveInfo
.
NewMove
(
LineMoveType
.
InStore
);
SW23_MoveInfo
.
NextMoveStep
(
LineMoveStep
.
SW00_Wait
);
// UpateSw23TrayNum();
LogUtil
.
info
(
Name
+
"横移轨道23:检测到SW2_StopCheck, 开始处理托盘 "
);
//阻挡气缸下降500毫秒然后上升
lastSw2StopDownTime
=
DateTime
.
Now
;
}
}
else
{
sw23WaitWatch
.
Stop
();
}
}
else
{
sw23WaitWatch
.
Stop
();
}
}
else
...
...
source/DeviceLibrary/assemblyLine/LineBean_Shunt.cs
查看文件 @
87046a4
...
...
@@ -362,10 +362,15 @@ namespace OnlineStore.DeviceLibrary
}
private
bool
TrayNeedShunt
(
int
trayNum
,
out
string
outMsg
)
{
{
outMsg
=
""
;
try
{
{
//如果需要关机,所有托盘都不分流横移
if
(
LineStopRun
)
{
return
false
;
}
TrayInfo
trayInfo
=
TrayManager
.
GetTrayInfo
(
trayNum
);
if
(!
trayInfo
.
IsFull
)
{
...
...
source/DeviceLibrary/assemblyLine/LineBean_Shunt2.cs
查看文件 @
87046a4
...
...
@@ -419,7 +419,11 @@ namespace OnlineStore.DeviceLibrary
{
outMsg
=
""
;
try
{
{
//如果需要关机,所有托盘都不分流横移
if
(
LineStopRun
)
{
return
false
;
}
TrayInfo
trayInfo
=
TrayManager
.
GetTrayInfo
(
trayNum
);
if
(!
trayInfo
.
IsFull
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论