Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 5a6e9ac4
由
LN
编写于
2020-03-03 14:24:38 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
托盘检测入口加锁处理
1 个父辈
ec5a2f4b
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
71 行增加
和
41 行删除
source/AssemblyLineClient/记录.txt
source/DeviceLibrary/assemblyLine/EquipBase.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
source/DeviceLibrary/assemblyLine/ProvidingEquip_Partial.cs
source/DeviceLibrary/model/KTK_Store.cs
source/AssemblyLineClient/记录.txt
查看文件 @
5a6e9ac
...
...
@@ -218,7 +218,8 @@ PRO,0,移栽上下轴流水线取放料详细位置P2,UpDownP2DetialList,0X0=800
20200302
上料模块,入料的时候如果链条油两个料架,阻挡下降时间过久,会两个一起过去。
20200303
托盘检测入口加锁处理。
...
...
source/DeviceLibrary/assemblyLine/EquipBase.cs
查看文件 @
5a6e9ac
...
...
@@ -314,6 +314,11 @@ namespace OnlineStore.DeviceLibrary
preTrayNum
=
currTrayNum
;
currTrayNum
=
RFIDManager
.
GetTrayNum
(
DeviceID
,
true
);
LogInfo
(
" ["
+
trayCount
+
"] IP ["
+
RFIDManager
.
GetRFIP
(
DeviceID
)
+
"] ["
+
preTrayNum
+
"] 当前托盘 ["
+
currTrayNum
+
"]"
);
if
(
preTrayNum
.
Equals
(
currTrayNum
))
{
TrayManager
.
TrayErrorMsg
=
DateTime
.
Now
.
ToLongTimeString
()+
" "
+
Name
+
"托盘号出现错乱:上一个托盘["
+
preTrayNum
+
"] 当前托盘 ["
+
currTrayNum
+
"],连续两个托盘号一样"
;
LogUtil
.
error
(
Name
+
"托盘号出现错乱:上一个托盘["
+
preTrayNum
+
"] 当前托盘 ["
+
currTrayNum
+
"],连续两个托盘号一样"
);
}
return
true
;
}
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
查看文件 @
5a6e9ac
...
...
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using
System.Diagnostics
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary
...
...
@@ -53,8 +54,17 @@ namespace OnlineStore.DeviceLibrary
internal
DateTime
lastStopDown
=
DateTime
.
Now
;
private
Stopwatch
swWaitWatch
=
new
Stopwatch
();
private
object
lockObj
=
""
;
private
void
StartCheckFixture
()
{
if
(
Monitor
.
TryEnter
(
lockObj
,
100
))
{
try
{
if
(
SecondMoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
).
Equals
(
false
))
{
return
;
}
if
(!
LineManager
.
Line
.
CanProcessLine
())
{
swWaitWatch
.
Stop
();
...
...
@@ -64,7 +74,7 @@ namespace OnlineStore.DeviceLibrary
if
(
Config
.
SidesWayNum
>
0
)
{
bool
canProcess
=
(
LineManager
.
Line
.
SwNoProcess
(
Config
.
SidesWayNum
));
if
(
IOValue
(
IO_Type
.
SW_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
)
if
(
IOValue
(
IO_Type
.
SW_TrayCheck
).
Equals
(
IO_VALUE
.
HIGH
)
)
{
if
(
TrayManager
.
checkWatch
(
swWaitWatch
,
TrayManager
.
SwTrayWaitTime
,
true
)
&&
canProcess
)
{
...
...
@@ -92,7 +102,7 @@ namespace OnlineStore.DeviceLibrary
swWaitWatch
.
Stop
();
SecondMoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
,
CheckParam
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_00_Stop1Down
);
LogUtil
.
info
(
Name
+
"检测到SW_StopCheck:"
+
SecondMoveInfo
.
SLog
+
"阻挡气缸下降 ,等待 SW_StopCheck=0"
);
LogUtil
.
info
(
Name
+
"检测到SW_StopCheck:"
+
SecondMoveInfo
.
SLog
+
"阻挡气缸下降 ,等待 SW_StopCheck=0"
);
//CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,等待 SW_StopCheck=0" );
IOMove
(
IO_Type
.
SW_StopDown
,
IO_VALUE
.
HIGH
);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
...
...
@@ -141,6 +151,20 @@ namespace OnlineStore.DeviceLibrary
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
" 出错:"
+
ex
.
ToString
());
}
finally
{
Monitor
.
Exit
(
lockObj
);
}
}
else
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
"失败,未得到锁"
);
}
}
protected
override
void
CheckFixtureProcess
()
{
...
...
@@ -188,21 +212,10 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_02_WaitFixture
))
{
//if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH))
//{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_03_Stop2Down
);
CheckLog
(
"托盘检测:"
+
SecondMoveInfo
.
SLog
+
"阻挡气缸上升,等待SW_TrayCheck=1)"
);
IOMove
(
IO_Type
.
SW_StopDown
,
IO_VALUE
.
LOW
);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SW_TrayCheck
,
IO_VALUE
.
HIGH
));
//}
//else
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_02_WaitFixture);
// CheckLog("托盘检测:" + SecondMoveInfo.SLog + "再次等待SW_TrayCheck=1并需要持续:" + TrayManager.SwTrayWaitTime);
// IOMove(IO_Type.SW_StopDown, IO_VALUE.LOW);
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.SwTrayWaitTime));
//}
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_03_Stop2Down
))
{
...
...
@@ -217,12 +230,9 @@ namespace OnlineStore.DeviceLibrary
CheckLog
(
"托盘检测:"
+
SecondMoveInfo
.
SLog
+
" ,等待编码信号稳定 FL_TrayCheck=1"
);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
FL_TrayCheck
,
IO_VALUE
.
HIGH
));
}
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_04_Wait
))
{
//preTrayNum = currTrayNum;
//currTrayNum = TrayManager.GetTrayNum(DeviceID);
UpdateTrayNum
();
//出料中,需要拦盘
if
(
CurrTrayIsNeed
(
currTrayNum
,
true
))
...
...
@@ -468,8 +478,8 @@ 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"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
//进料阻挡下降
InLog
(
"入料检测: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降
1000
,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
//进料阻挡下降
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
//缓冲阻挡下降
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_OutStore.cs
查看文件 @
5a6e9ac
...
...
@@ -134,8 +134,8 @@ namespace OnlineStore.DeviceLibrary
else
if
(
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FO_03_LineStart
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
OutLog
(
"准备出库料架: "
+
MoveInfo
.
SLog
+
" 阻挡工位检测有料架,进料阻挡下降
1000ms
,缓冲阻挡下降,流水线转动 1000"
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
,
1000
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待指定时间
...
...
source/DeviceLibrary/assemblyLine/ProvidingEquip_Partial.cs
查看文件 @
5a6e9ac
...
...
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using
System.Diagnostics
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary
...
...
@@ -30,12 +31,23 @@ namespace OnlineStore.DeviceLibrary
}
return
false
;
}
internal
DateTime
lastStopDown
=
DateTime
.
Now
;
private
Stopwatch
trayCheckWait
=
new
Stopwatch
();
private
object
lockObj
=
""
;
private
void
StartCheckFixture
()
{
if
(
Monitor
.
TryEnter
(
lockObj
,
100
))
{
try
{
if
(
SecondMoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
).
Equals
(
false
))
{
return
;
}
bool
canProcess
=
(
LineManager
.
Line
.
SwNoProcess
(
Config
.
SidesWayNum
));
//int num = TrayManager.GetTrayNum(DeviceID);
if
(
IOValue
(
IO_Type
.
StopCylinder_Check2
).
Equals
(
IO_VALUE
.
HIGH
)
)
if
(
IOValue
(
IO_Type
.
StopCylinder_Check2
).
Equals
(
IO_VALUE
.
HIGH
)
)
{
if
(
TrayManager
.
checkWatch
(
trayCheckWait
,
TrayManager
.
SwTrayWaitTime
,
true
)
&&
canProcess
)
{
...
...
@@ -48,15 +60,17 @@ namespace OnlineStore.DeviceLibrary
}
}
else
if
(
IOValue
(
IO_Type
.
StopCylinder_Check1
).
Equals
(
IO_VALUE
.
HIGH
)
)
else
if
(
IOValue
(
IO_Type
.
StopCylinder_Check1
).
Equals
(
IO_VALUE
.
HIGH
)
&&
(
DateTime
.
Now
-
lastStopDown
).
TotalSeconds
>
3
)
{
if
(
TrayManager
.
checkWatch
(
trayCheckWait
,
TrayManager
.
SwTrayWaitTime
,
true
)
&&
canProcess
)
{
lastStopDown
=
DateTime
.
Now
;
trayCheckWait
.
Stop
();
//托盘在第一个阻挡处
SecondMoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_00_Stop1Down
);
CheckLog
(
" 托盘检测:"
+
SecondMoveInfo
.
SLog
+
"阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0"
);
LogUtil
.
info
(
Name
+
" 托盘检测:"
+
SecondMoveInfo
.
SLog
+
"阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0"
);
//CheckLog(" 托盘检测:" + SecondMoveInfo.SLog + "阻挡气缸1-1下降 ,等待 StopCylinder_Check1=0" );
IOMove
(
IO_Type
.
StopCylinder_Down1
,
IO_VALUE
.
HIGH
);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCylinder_Down1
,
IO_VALUE
.
HIGH
));
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCylinder_Check1
,
IO_VALUE
.
LOW
));
...
...
@@ -68,6 +82,20 @@ namespace OnlineStore.DeviceLibrary
trayCheckWait
.
Stop
();
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
" 出错:"
+
ex
.
ToString
());
}
finally
{
Monitor
.
Exit
(
lockObj
);
}
}
else
{
LogUtil
.
error
(
Name
+
" StartCheckFixture "
+
"失败,未得到锁"
);
}
}
private
void
MO_14_TopCylinder_Down
()
{
SecondMoveInfo
.
NewMove
(
LineMoveType
.
CheckFixture
);
...
...
@@ -215,30 +243,13 @@ namespace OnlineStore.DeviceLibrary
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" 再次检测料盘信号"
);
//CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 等待" + TrayManager.SwTrayWaitTime + ",再次检测料盘信号");
IOMove
(
IO_Type
.
StopCylinder_Down1
,
IO_VALUE
.
LOW
);
// SecondMoveInfo.OneWaitCanEndStep = true;
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCylinder_Check2
,
IO_VALUE
.
HIGH
));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
// SecondMoveInfo.EndStepWait();
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_03_Stop2Down
))
{
//if (IOValue(IO_Type.StopCylinder_Check2).Equals(IO_VALUE.HIGH))
//{
CheckLog
(
"托盘阻挡"
+
SecondMoveInfo
.
SLog
+
" ,等待编码信号稳定StopCylinder_Check2=1"
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MIO_04_Wait
);
SecondMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
StopCylinder_Check2
,
IO_VALUE
.
HIGH
));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
//SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
//}
//else
//{
// SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_Stop2Down);
// CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 等待" + TrayManager.SwTrayWaitTime + ",再次检测料盘信号");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW);
// SecondMoveInfo.OneWaitCanEndStep = true;
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCylinder_Check2, IO_VALUE.HIGH));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(TrayManager.StopDownWaitTime));
//}
}
else
if
(
SecondMoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
MIO_04_Wait
))
{
...
...
@@ -309,6 +320,7 @@ namespace OnlineStore.DeviceLibrary
{
SecondMoveInfo
.
EndMove
();
CheckLog
(
"托盘放行 结束,触发 TrayPEndEvent "
);
lastStopDown
=
DateTime
.
Now
.
AddSeconds
(-
2
);
this
.
TrayPEndEvent
?.
Invoke
(
Config
.
SidesWayNum
,
currTrayNum
);
}
else
...
...
@@ -344,6 +356,7 @@ namespace OnlineStore.DeviceLibrary
{
CheckLog
(
"托盘放行 结束,触发 TrayPEndEvent "
);
SecondMoveInfo
.
EndMove
();
lastStopDown
=
DateTime
.
Now
.
AddSeconds
(-
2
);
this
.
TrayPEndEvent
?.
Invoke
(
Config
.
SidesWayNum
,
currTrayNum
);
}
#
endregion
...
...
source/DeviceLibrary/model/KTK_Store.cs
查看文件 @
5a6e9ac
...
...
@@ -436,6 +436,7 @@ namespace OnlineStore.DeviceLibrary
{
Task
.
Factory
.
StartNew
(
delegate
{
LogUtil
.
info
(
"定时会写IO: ["
+
IoType
+
"]=["
+
value
+
"],msTime="
+
msTime
);
IOManager
.
IOMove
(
IoType
,
value
,
baseConfig
.
Id
);
Thread
.
Sleep
(
msTime
);
IO_VALUE
tValue
=
value
.
Equals
(
IO_VALUE
.
HIGH
)
?
IO_VALUE
.
LOW
:
IO_VALUE
.
HIGH
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论