Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e3121344
由
LN
编写于
2020-03-12 23:07:50 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
出料气缸加长,皮带线逻辑修改。
1 个父辈
b96e30eb
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
636 行增加
和
164 行删除
source/AssemblyLineClient/FrmDischargeLine.cs
source/AssemblyLineClient/记录.txt
source/DeviceLibrary/assemblyLine/DischargeLine.cs
source/DeviceLibrary/assemblyLine/DischargeLine_Partial.cs
source/DeviceLibrary/assemblyLine/EquipBase.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
source/DeviceLibrary/assemblyLine/OutTrayLineBean.cs
source/DeviceLibrary/assemblyLine/OutTrayLineBean_back.cs
source/DeviceLibrary/model/StoreStep.cs
source/LoadCVSLibrary/storeConfig/config/IO_Type.cs
source/AssemblyLineClient/FrmDischargeLine.cs
查看文件 @
e312134
...
...
@@ -214,12 +214,12 @@ namespace OnlineStore.AssemblyLine
btnLine1Test
.
Text
=
line1Name
+
"出库测试"
;
btnLine2Test
.
Text
=
line2Name
+
"出库测试"
;
this
.
cmbLineType
.
Items
.
AddRange
(
new
object
[]
{
line1Name
+
"运转-入口定位"
,
line2Name
+
"运转-入口定位"
,
//
line1Name+"运转-入口定位",
//
line2Name+"运转-入口定位",
line3Name
+
"运转测试"
,
line1Name
+
"运转
-出口定位
"
,
line2Name
+
"运转
-出口定位
"
});
cmbLineType
.
SelectedIndex
=
2
;
line1Name
+
"运转
测试
"
,
line2Name
+
"运转
测试
"
});
cmbLineType
.
SelectedIndex
=
0
;
IsLoad
=
true
;
}
...
...
@@ -362,25 +362,15 @@ namespace OnlineStore.AssemblyLine
return
;
}
int
index
=
cmbLineType
.
SelectedIndex
;
string
moveIo
=
IO_Type
.
DLine_Run
1
;
string
waitIo
=
IO_Type
.
EntryLocation_Check1
;
string
moveIo
=
IO_Type
.
DLine_Run
3
;
string
waitIo
=
IO_Type
.
Location_Check3
;
if
(
index
.
Equals
(
1
))
{
moveIo
=
IO_Type
.
DLine_Run2
;
waitIo
=
IO_Type
.
EntryLocation_Check2
;
}
else
if
(
index
.
Equals
(
2
))
{
moveIo
=
IO_Type
.
DLine_Run3
;
waitIo
=
IO_Type
.
Location_Check3
;
}
else
if
(
index
.
Equals
(
3
))
{
moveIo
=
IO_Type
.
DLine_Run1
;
waitIo
=
IO_Type
.
ExitLocation_Check1
;
}
else
if
(
index
.
Equals
(
4
))
else
if
(
index
.
Equals
(
2
))
{
moveIo
=
IO_Type
.
DLine_Run2
;
waitIo
=
IO_Type
.
ExitLocation_Check2
;
...
...
source/AssemblyLineClient/记录.txt
查看文件 @
e312134
...
...
@@ -291,8 +291,11 @@ IO_Value增加None的定义,防止误操作
20200312
皮带线判断修改
皮带线3扫码的时候不能开始送料。
短皮带线逻辑修改:对应气缸加长修改。
扫码修改:去掉不需要的缓存。
阻挡1下降条件修改:等待1离开或者2到达都可以继续。
上料1模块,等待500ms再下降顶升气缸
...
...
source/DeviceLibrary/assemblyLine/DischargeLine.cs
查看文件 @
e312134
...
...
@@ -46,14 +46,14 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo
=
new
LineMoveInfo
(
DeviceID
,
"["
+
hengyiName
+
"-SMove]"
);
if
(
id
.
Equals
(
1
))
{
TrayLine1
=
new
OutTrayLineBean
(
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
1
)
+
" "
,
IO_Type
.
EntryLocation_Check1
,
IO_Type
.
ExitLocation_Check1
,
IO_Type
.
ExitTray_Check1
,
IO_Type
.
DLine_Run1
,
IO_Type
.
EntryTray_Check3
,
this
.
DeviceID
);
TrayLine2
=
new
OutTrayLineBean
(
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
2
)
+
" "
,
IO_Type
.
EntryLocation_Check2
,
IO_Type
.
ExitLocation_Check2
,
IO_Type
.
ExitTray_Check2
,
IO_Type
.
DLine_Run2
,
IO_Type
.
MiddleTray_Check3
,
this
.
DeviceID
);
TrayLine1
=
new
OutTrayLineBean
(
330
+
((
id
-
1
)
*
3
+
1
)
,
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
1
)
+
" "
,
IO_Type
.
ExitLocation_Check1
,
IO_Type
.
ExitTray_Check1
,
IO_Type
.
DLine_Run1
,
IO_Type
.
EntryTray_Check3
,
this
.
DeviceID
);
TrayLine2
=
new
OutTrayLineBean
(
330
+
((
id
-
1
)
*
3
+
2
),
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
2
)
+
" "
,
IO_Type
.
ExitLocation_Check2
,
IO_Type
.
ExitTray_Check2
,
IO_Type
.
DLine_Run2
,
IO_Type
.
MiddleTray_Check3
,
this
.
DeviceID
);
}
else
{
IsNewType
=
true
;
TrayLine1
=
new
OutTrayLineBean
(
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
1
)
+
" "
,
IO_Type
.
EntryLocation_Check1
,
IO_Type
.
ExitLocation_Check1
,
IO_Type
.
ExitTray_Check1
,
IO_Type
.
DLine_Run1
,
IO_Type
.
MiddleTray_Check3
,
this
.
DeviceID
);
TrayLine2
=
new
OutTrayLineBean
(
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
2
)
+
" "
,
IO_Type
.
EntryLocation_Check2
,
IO_Type
.
ExitLocation_Check2
,
IO_Type
.
ExitTray_Check2
,
IO_Type
.
DLine_Run2
,
IO_Type
.
EntryTray_Check3
,
this
.
DeviceID
);
TrayLine1
=
new
OutTrayLineBean
(
330
+
((
id
-
1
)
*
3
+
1
),
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
1
)
+
" "
,
IO_Type
.
ExitLocation_Check1
,
IO_Type
.
ExitTray_Check1
,
IO_Type
.
DLine_Run1
,
IO_Type
.
MiddleTray_Check3
,
this
.
DeviceID
);
TrayLine2
=
new
OutTrayLineBean
(
330
+((
id
-
1
)
*
3
+
2
),
"皮带线"
+
"_"
+
((
id
-
1
)
*
3
+
2
)
+
" "
,
IO_Type
.
ExitLocation_Check2
,
IO_Type
.
ExitTray_Check2
,
IO_Type
.
DLine_Run2
,
IO_Type
.
EntryTray_Check3
,
this
.
DeviceID
);
}
Line3Turn
=
new
LineTurnBean
(
DeviceID
);
if
((
DeviceID
%
100
).
Equals
(
1
))
...
...
@@ -276,7 +276,7 @@ namespace OnlineStore.DeviceLibrary
else
{
//皮带线3出口有料,分盘定位装置无料
if
(
Line3TurnIsStop
()
&&
IOValue
(
IO_Type
.
SeparateDevice_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
StationInfo_NG
.
TrayValue
.
Equals
(
IO_VALUE
.
HIGH
))
if
(
Line3TurnIsStop
()
&&
IOValue
(
IO_Type
.
SeparateDevice_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
StationInfo_NG
.
TrayValue
.
Equals
(
IO_VALUE
.
HIGH
)
&&
IsInScanCode
.
Equals
(
false
)
)
{
StartOutStoreMove
(
new
InOutParam
());
}
...
...
source/DeviceLibrary/assemblyLine/DischargeLine_Partial.cs
查看文件 @
e312134
...
...
@@ -328,10 +328,12 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DON_07_SeparateCheck
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DON_08_CRun
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
IOMove
(
IO_Type
.
SeparateDevice_Run
,
IO_VALUE
.
HIGH
);
if
(
IOValue
(
IO_Type
.
SeparateDevice_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
int
robotIndex
=
GetRobotIndex
();
LogUtil
.
info
(
hengyiName
+
MoveInfo
.
SLog
+
"送料,接驳台有料盘,等待2000,调用arriveRobotLocation="
+
robotIndex
);
LogUtil
.
info
(
hengyiName
+
MoveInfo
.
SLog
+
"送料,接驳台有料盘,等待2000,调用arriveRobotLocation="
+
robotIndex
+
"["
+
StationInfo_Move
.
CodeStr
+
"]"
);
SServerManager
.
arriveRobotLocation
(
Name
,
robotIndex
,
StationInfo_Move
.
CodeStr
);
}
...
...
@@ -339,8 +341,6 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil
.
info
(
hengyiName
+
MoveInfo
.
SLog
+
"送料,接驳台无料盘,等待2000,"
);
}
IOMove
(
IO_Type
.
SeparateDevice_Run
,
IO_VALUE
.
HIGH
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DON_08_CRun
))
{
...
...
source/DeviceLibrary/assemblyLine/EquipBase.cs
查看文件 @
e312134
...
...
@@ -497,7 +497,7 @@ namespace OnlineStore.DeviceLibrary
//}
if
(
wait
.
IsEnd
)
{
if
(
M
oveInfo
.
OneWaitCanEndStep
)
if
(
m
oveInfo
.
OneWaitCanEndStep
)
{
isOk
=
true
;
break
;
...
...
@@ -505,7 +505,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
if
(!
M
oveInfo
.
OneWaitCanEndStep
)
if
(!
m
oveInfo
.
OneWaitCanEndStep
)
{
isOk
=
false
;
break
;
...
...
@@ -570,7 +570,20 @@ namespace OnlineStore.DeviceLibrary
protected
void
InLog
(
string
msg
)
{
string
posId
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosId
:
""
;
if
(
String
.
IsNullOrEmpty
(
posId
))
if
(
baseConfig
.
DType
.
Equals
(
DeviceType
.
MoveEquip
))
{
if
(
String
.
IsNullOrEmpty
(
posId
))
{
LogUtil
.
debug
(
Name
+
" "
+
msg
);
}
else
{
LogUtil
.
debug
(
Name
+
" "
+
"["
+
posId
+
"]"
+
msg
);
}
}
else
{
if
(
String
.
IsNullOrEmpty
(
posId
))
{
LogUtil
.
info
(
Name
+
" "
+
msg
);
}
...
...
@@ -579,10 +592,11 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
info
(
Name
+
" "
+
"["
+
posId
+
"]"
+
msg
);
}
}
}
protected
void
OutLog
(
string
msg
)
{
string
posId
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosId
:
""
;
if
(
baseConfig
.
DType
.
Equals
(
DeviceType
.
ProvidingEquip
))
if
(
baseConfig
.
DType
.
Equals
(
DeviceType
.
ProvidingEquip
)
||
baseConfig
.
DType
.
Equals
(
DeviceType
.
MoveEquip
)
)
{
if
(
String
.
IsNullOrEmpty
(
posId
))
{
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_InStore.cs
查看文件 @
e312134
...
...
@@ -884,7 +884,13 @@ namespace OnlineStore.DeviceLibrary
CylinderMove
(
null
,
IO_Type
.
SW_LocationCylinder_Up
,
IO_Type
.
SW_LocationCylinder_Down
);
if
(
Config
.
SidesWayNum
.
Equals
(
1
))
{
Task
.
Factory
.
StartNew
(
delegate
{
//需要等待500再下降
Thread
.
Sleep
(
500
);
CylinderMove
(
null
,
IO_Type
.
SW_TopCylinder_Up
,
IO_Type
.
SW_TopCylinder_Down
);
});
}
}
else
...
...
source/DeviceLibrary/assemblyLine/LineBean_Partial.cs
查看文件 @
e312134
...
...
@@ -154,7 +154,7 @@ namespace OnlineStore.DeviceLibrary
}
if
(
wait
.
IsEnd
)
{
if
(
Move
Info
.
OneWaitCanEndStep
)
if
(
checkWait
Info
.
OneWaitCanEndStep
)
{
isOk
=
true
;
break
;
...
...
@@ -162,7 +162,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
if
(!
Move
Info
.
OneWaitCanEndStep
)
if
(!
checkWait
Info
.
OneWaitCanEndStep
)
{
isOk
=
false
;
break
;
...
...
source/DeviceLibrary/assemblyLine/OutTrayLineBean.cs
查看文件 @
e312134
...
...
@@ -15,11 +15,8 @@ namespace OnlineStore.DeviceLibrary
public
class
OutTrayLineBean
{
public
int
MaxPosition
=
5
;
// private DischargeLine equipBean = null;
private
int
equipBeanId
=
301
;
private
string
Line3_TrayCheck
=
""
;
//入口定位信号
private
string
EntryLocation_Check
=
""
;
//出口定位信号
private
string
ExitLocation_Check
=
""
;
//出口料盘检测信号
...
...
@@ -36,14 +33,14 @@ namespace OnlineStore.DeviceLibrary
get
{
return
LineManager
.
Line
.
DisLineMap
[
equipBeanId
];
}
}
internal
bool
Line3CanRun
=
true
;
public
OutTrayLineBean
(
string
name
,
string
entryLocationS
,
string
exitLocationS
,
string
exittrayS
,
string
lineRundo
,
string
line3checkDi
,
int
dId
)
private
int
Id
=
0
;
public
OutTrayLineBean
(
int
id
,
string
name
,
string
exitLocationS
,
string
exittrayS
,
string
lineRundo
,
string
line3checkDi
,
int
dId
)
{
this
.
Id
=
id
;
lineRun
=
new
LineTurnBean
(
dId
);
this
.
equipBeanId
=
dId
;
//this.equipBean = equipBean;
this
.
Name
=
name
;
MoveInfo
=
new
LineMoveInfo
(
1001
,
name
);
this
.
EntryLocation_Check
=
entryLocationS
;
MoveInfo
=
new
LineMoveInfo
(
Id
,
name
);
this
.
ExitLocation_Check
=
exitLocationS
;
this
.
ExitTray_Check
=
exittrayS
;
this
.
LineRun_Do
=
lineRundo
;
...
...
@@ -60,31 +57,66 @@ namespace OnlineStore.DeviceLibrary
// private string posId = "";
public
bool
StartOut
(
InOutParam
moveParam
)
{
if
(
LineTurnIsStop
()
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
(
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Runing
)
||
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Busy
)))
if
(
LineTurnIsStop
()
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
(
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Runing
)
||
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Busy
)))
{
if
(
LastTrayPosition
<=
1
)
{
LogUtil
.
error
(
Name
+
" 启动送料【"
+
moveParam
.
ToStr
()
+
"】 失败,入口有料"
,
Id
+
32
);
return
false
;
}
//MoveInfo.MoveParam = moveParam;
MoveInfo
.
NewMove
(
LineMoveType
.
OutStore
,
moveParam
);
posId
=
moveParam
.
PosId
;
MoveInfo
.
NewMove
(
LineMoveType
.
OutStore
,
moveParam
);
posId
=
moveParam
.
PosId
+
"["
+
moveParam
.
WareCode
+
"]["
+
moveParam
.
rfid
+
"]"
;
if
(
moveParam
.
InStoreNg
)
{
posId
=
"入库NG料
"
;
posId
=
moveParam
.
rfid
+
"NG料"
+
"["
+
moveParam
.
WareCode
+
"]
"
;
}
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_01_WaitEntryNoTray
);
LogUtil
.
info
(
Name
+
"开始出料【"
+
moveParam
.
ToStr
()
+
"】:"
+
MoveInfo
.
SLog
+
"等待出口无料盘,NG气缸后退"
);
if
(
equipBeanId
.
Equals
(
302
)
&&
EntryLocation_Check
.
Equals
(
IO_Type
.
EntryLocation_Check2
))
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_01_NGBack
);
LogUtil
.
info
(
Name
+
"开始送料【"
+
moveParam
.
ToStr
()
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸后退"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
300
));
if
(
equipBeanId
.
Equals
(
302
)
)
{
if
(
equipBean
.
CylinderIsOk
(
IO_Type
.
NGCylinder_Before
,
IO_Type
.
NGCylinder_After
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_02_WaitEnteryNoTray
);
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待入口无料-- "
);
}
else
{
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_Before
,
IO_Type
.
NGCylinder_After
);
}
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
else
{
if
(
LastTrayPosition
>
1
)
{
WaitReviceTray
();
}
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_02_WaitEnteryNoTray
);
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待入口无料-- "
);
}
}
return
true
;
}
else
{
LogUtil
.
error
(
Name
+
" 启动
出料【"
+
moveParam
.
ToStr
()
+
"】 失败"
,
equipBeanId
+
31
);
LogUtil
.
error
(
Name
+
" 启动
送料【"
+
moveParam
.
ToStr
()
+
"】 失败"
,
Id
+
31
);
return
false
;
}
}
private
void
WaitReviceTray
()
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_04_CanReviceTray
);
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待移栽放料盘-- "
);
LastTrayPosition
=
1
;
if
(
equipBean
.
IsDebug
)
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
}
}
string
posId
=
""
;
internal
void
OutStoreProcess
()
{
...
...
@@ -97,64 +129,62 @@ namespace OnlineStore.DeviceLibrary
{
return
;
}
// string posId = MoveInfo.MoveParam == null ? "" : MoveInfo.MoveParam.PosId;
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_01_WaitEntryNoTray
))
{
if
(
IsInTurn
().
Equals
(
false
)
&&
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_02_WaitExitNoTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"等待出口无料盘"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
else
if
(
MoveInfo
.
IsTimeOut
(
180
))
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_01_NGBack
))
{
LogUtil
.
error
(
Name
+
"等待出口无料盘超时:"
+
FormUtil
.
GetSpanStr
(
MoveInfo
.
StepSpan
()),
305
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_02_WaitEnteryNoTray
);
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待入口无料-- "
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_02_WaitExitNoTray
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_02_WaitEnteryNoTray
))
{
if
(
L
ineTurnIsStop
()
)
if
(
L
astTrayPosition
>
1
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_03_LineRun
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"出口无料盘,转动到入口定位"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
lineRun
.
StartLineRun
(
LineRun_Do
,
EntryLocation_Check
,
null
);
WaitReviceTray
();
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_03_LineRun
))
{
if
(
LineTurnIsStop
())
else
if
(
MoveInfo
.
IsTimeOut
(
180
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_04_CanReviceTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待移栽放料盘-- "
);
if
(
equipBean
.
IsDebug
)
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
LogUtil
.
error
(
Name
+
"等待入口无料超时"
+
FormUtil
.
GetSpanStr
(
MoveInfo
.
StepSpan
()),
Id
+
33
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_04_CanReviceTray
))
{
if
(
equipBean
.
IsDebug
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_05_TrayIsOk
);
LogUtil
.
info
(
Name
+
"
出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"调试中
更改为已放料盘"
);
LogUtil
.
info
(
Name
+
"
送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"调试中,
更改为已放料盘"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_05_TrayIsOk
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_06_OutCheck
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
" --料盘已放----转动到出口定位"
);
LastTrayPosition
=
1
;
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
null
);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_06_WaitTime
);
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"盘已放,等待2000"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_06_
OutCheck
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_06_
WaitTime
))
{
if
(
LineTurnIsStop
())
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//皮带线不转,并且入口无信号
if
(
equipBean
.
Line3TurnIsStop
()
&&
equipBean
.
IOValue
(
Line3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
))
{
Line3CanRun
=
false
;
if
(
Line3_TrayCheck
.
Equals
(
IO_Type
.
EntryTray_Check3
))
{
DLO_LineRun
(
LineMoveStep
.
DLO_07_LineRun
)
;
equipBean
.
Line3LastTrayP
=
1
;
}
}
else
{
return
;
}
}
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_07_LineRun
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
" ["
+
LastTrayPosition
+
"],转动到下个工位"
);
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_07_LineRun
))
{
if
(
LineTurnIsStop
())
...
...
@@ -162,13 +192,14 @@ namespace OnlineStore.DeviceLibrary
if
(
MoveInfo
.
MoveParam
.
InStoreNg
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_08_NGBefore
);
LogUtil
.
info
(
Name
+
"
出
料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸前进"
);
LogUtil
.
info
(
Name
+
"
送
料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸前进"
);
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_After
,
IO_Type
.
NGCylinder_Before
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
else
{
CheckIsNeedRun
();
MoveInfo
.
EndMove
();
LogUtil
.
info
(
Name
+
"送料【"
+
posId
+
"】结束"
);
}
}
}
...
...
@@ -176,21 +207,13 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_09_NGAfter
);
LastTrayPosition
++;
LogUtil
.
info
(
Name
+
"
出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸后退,更新最后一盘料位置:"
+
LastTrayPosition
);
LogUtil
.
info
(
Name
+
"
送料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
" ["
+
LastTrayPosition
+
"],NG气缸后退"
);
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_Before
,
IO_Type
.
NGCylinder_After
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_09_NGAfter
))
{
CheckIsNeedRun
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_10_LineRun
))
{
CheckIsNeedRun
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_11_ExitNoTray
))
{
MoveInfo
.
EndMove
();
LogUtil
.
info
(
Name
+
"
出料【"
+
posId
+
"】:出口无料盘,出库
结束"
);
LogUtil
.
info
(
Name
+
"
送料【"
+
posId
+
"】:
结束"
);
}
}
private
bool
LineTurnIsStop
()
...
...
@@ -211,49 +234,6 @@ namespace OnlineStore.DeviceLibrary
}
return
false
;
}
private
void
CheckIsNeedRun
()
{
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
LastTrayPosition
>
5
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_11_ExitNoTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"最后一盘料位置【"
+
LastTrayPosition
+
"】,请检查"
+
ExitTray_Check
+
"信号是否正确"
);
}
else
{
DLO_LineRun
(
LineMoveStep
.
DLO_10_LineRun
);
}
}
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_11_ExitNoTray
);
}
}
private
void
DLO_LineRun
(
LineMoveStep
nextStep
)
{
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//皮带线不转,并且入口无信号
if
(
equipBean
.
Line3TurnIsStop
()
&&
equipBean
.
IOValue
(
Line3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
))
{
Line3CanRun
=
false
;
if
(
Line3_TrayCheck
.
Equals
(
IO_Type
.
EntryTray_Check3
))
{
equipBean
.
Line3LastTrayP
=
1
;
}
}
else
{
return
;
}
}
MoveInfo
.
NextMoveStep
(
nextStep
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"最后一盘料位置【"
+
LastTrayPosition
+
"】,转动到出口定位"
);
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
/// <summary>
/// 转动结束,最后一盘料的位置+1
...
...
@@ -306,14 +286,14 @@ namespace OnlineStore.DeviceLibrary
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
else
if
(
MoveInfo
.
MoveStep
<=
LineMoveStep
.
DLO_01_
WaitEntryNoTray
&&
MoveInfo
.
IsInWait
.
Equals
(
false
)
&&
else
if
(
MoveInfo
.
MoveStep
<=
LineMoveStep
.
DLO_01_
NGBack
&&
MoveInfo
.
IsInWait
.
Equals
(
false
)
&&
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//皮带线1出口有料,皮带3入库无料,且在停止状态
if
(
equipBean
.
Line3TurnIsStop
()
&&
equipBean
.
IOValue
(
Line3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
))
{
Line3CanRun
=
false
;
LogUtil
.
debug
(
Name
+
"出口有料
盘
,且"
+
Line3_TrayCheck
+
"=LOW,转动一个工位,["
+
LineRun_Do
+
"] ["
+
ExitLocation_Check
+
"]"
);
LogUtil
.
debug
(
Name
+
"出口有料,且"
+
Line3_TrayCheck
+
"=LOW,转动一个工位,["
+
LineRun_Do
+
"] ["
+
ExitLocation_Check
+
"]"
);
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
}
...
...
source/DeviceLibrary/assemblyLine/OutTrayLineBean_back.cs
0 → 100644
查看文件 @
e312134
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
OnlineStore.DeviceLibrary
{
/// <summary>
/// 出料皮带线
/// </summary>
public
class
OutTrayLineBean
{
public
int
MaxPosition
=
5
;
// private DischargeLine equipBean = null;
private
int
equipBeanId
=
301
;
private
string
Line3_TrayCheck
=
""
;
//入口定位信号
private
string
EntryLocation_Check
=
""
;
//出口定位信号
private
string
ExitLocation_Check
=
""
;
//出口料盘检测信号
private
string
ExitTray_Check
=
""
;
//出口料盘检测信号
private
string
LineRun_Do
=
""
;
//最后一盘料的位置,>5时可置为0,0表示当前皮带线无料盘
public
int
LastTrayPosition
=
0
;
private
string
Name
=
""
;
private
LineTurnBean
lineRun
=
null
;
internal
LineMoveInfo
MoveInfo
=
null
;
public
DischargeLine
equipBean
{
get
{
return
LineManager
.
Line
.
DisLineMap
[
equipBeanId
];
}
}
internal
bool
Line3CanRun
=
true
;
public
OutTrayLineBean
(
string
name
,
string
entryLocationS
,
string
exitLocationS
,
string
exittrayS
,
string
lineRundo
,
string
line3checkDi
,
int
dId
)
{
lineRun
=
new
LineTurnBean
(
dId
);
this
.
equipBeanId
=
dId
;
//this.equipBean = equipBean;
this
.
Name
=
name
;
MoveInfo
=
new
LineMoveInfo
(
1001
,
name
);
this
.
EntryLocation_Check
=
entryLocationS
;
this
.
ExitLocation_Check
=
exitLocationS
;
this
.
ExitTray_Check
=
exittrayS
;
this
.
LineRun_Do
=
lineRundo
;
this
.
Line3_TrayCheck
=
line3checkDi
;
}
public
void
StopRun
()
{
MoveInfo
.
EndMove
();
lineRun
.
StopLineRun
();
Line3CanRun
=
true
;
}
#
region
出库处理
// private string posId = "";
public
bool
StartOut
(
InOutParam
moveParam
)
{
if
(
LineTurnIsStop
()
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
(
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Runing
)||
equipBean
.
runStatus
.
Equals
(
LineRunStatus
.
Busy
)))
{
//MoveInfo.MoveParam = moveParam;
MoveInfo
.
NewMove
(
LineMoveType
.
OutStore
,
moveParam
);
posId
=
moveParam
.
PosId
;
if
(
moveParam
.
InStoreNg
)
{
posId
=
"入库NG料"
;
}
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_01_WaitEntryNoTray
);
LogUtil
.
info
(
Name
+
"开始出料【"
+
moveParam
.
ToStr
()
+
"】:"
+
MoveInfo
.
SLog
+
"等待出口无料盘,NG气缸后退"
);
if
(
equipBeanId
.
Equals
(
302
)
&&
EntryLocation_Check
.
Equals
(
IO_Type
.
EntryLocation_Check2
))
{
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_Before
,
IO_Type
.
NGCylinder_After
);
}
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
return
true
;
}
else
{
LogUtil
.
error
(
Name
+
" 启动出料【"
+
moveParam
.
ToStr
()
+
"】 失败"
,
equipBeanId
+
31
);
return
false
;
}
}
string
posId
=
""
;
internal
void
OutStoreProcess
()
{
if
(
MoveInfo
.
IsInWait
)
{
equipBean
.
CheckWait
(
MoveInfo
);
}
if
(
MoveInfo
.
IsInWait
)
{
return
;
}
// string posId = MoveInfo.MoveParam == null ? "" : MoveInfo.MoveParam.PosId;
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_01_WaitEntryNoTray
))
{
if
(
IsInTurn
().
Equals
(
false
)
&&
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_02_WaitExitNoTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"等待出口无料盘"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
else
if
(
MoveInfo
.
IsTimeOut
(
180
))
{
LogUtil
.
error
(
Name
+
"等待出口无料盘超时:"
+
FormUtil
.
GetSpanStr
(
MoveInfo
.
StepSpan
()),
305
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_02_WaitExitNoTray
))
{
if
(
LineTurnIsStop
())
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_03_LineRun
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"出口无料盘,转动到入口定位"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
lineRun
.
StartLineRun
(
LineRun_Do
,
EntryLocation_Check
,
null
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_03_LineRun
))
{
if
(
LineTurnIsStop
())
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_04_CanReviceTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"--- 等待移栽放料盘-- "
);
if
(
equipBean
.
IsDebug
)
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_04_CanReviceTray
))
{
if
(
equipBean
.
IsDebug
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_05_TrayIsOk
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"调试中更改为已放料盘"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_05_TrayIsOk
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_06_OutCheck
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
" --料盘已放----转动到出口定位"
);
LastTrayPosition
=
1
;
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
null
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_06_OutCheck
))
{
if
(
LineTurnIsStop
())
{
DLO_LineRun
(
LineMoveStep
.
DLO_07_LineRun
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_07_LineRun
))
{
if
(
LineTurnIsStop
())
{
if
(
MoveInfo
.
MoveParam
.
InStoreNg
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_08_NGBefore
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸前进"
);
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_After
,
IO_Type
.
NGCylinder_Before
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
2000
));
}
else
{
CheckIsNeedRun
();
}
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_08_NGBefore
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_09_NGAfter
);
LastTrayPosition
++;
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"NG气缸后退,更新最后一盘料位置:"
+
LastTrayPosition
);
equipBean
.
CylinderMove
(
MoveInfo
,
IO_Type
.
NGCylinder_Before
,
IO_Type
.
NGCylinder_After
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_09_NGAfter
))
{
CheckIsNeedRun
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_10_LineRun
))
{
CheckIsNeedRun
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
LineMoveStep
.
DLO_11_ExitNoTray
))
{
MoveInfo
.
EndMove
();
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:出口无料盘,出库结束"
);
}
}
private
bool
LineTurnIsStop
()
{
if
(
lineRun
.
InTurn
.
Equals
(
false
)
)
{
if
(
equipBean
.
IOValue
(
LineRun_Do
).
Equals
(
IO_VALUE
.
LOW
))
{
if
(
lineRun
.
CanStart
(
500
))
{
return
true
;
}
}
else
{
equipBean
.
IOMove
(
LineRun_Do
,
IO_VALUE
.
LOW
);
}
}
return
false
;
}
private
void
CheckIsNeedRun
()
{
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
LastTrayPosition
>
5
)
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_11_ExitNoTray
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"最后一盘料位置【"
+
LastTrayPosition
+
"】,请检查"
+
ExitTray_Check
+
"信号是否正确"
);
}
else
{
DLO_LineRun
(
LineMoveStep
.
DLO_10_LineRun
);
}
}
else
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
DLO_11_ExitNoTray
);
}
}
private
void
DLO_LineRun
(
LineMoveStep
nextStep
)
{
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//皮带线不转,并且入口无信号
if
(
equipBean
.
Line3TurnIsStop
()
&&
equipBean
.
IOValue
(
Line3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
))
{
Line3CanRun
=
false
;
if
(
Line3_TrayCheck
.
Equals
(
IO_Type
.
EntryTray_Check3
))
{
equipBean
.
Line3LastTrayP
=
1
;
}
}
else
{
return
;
}
}
MoveInfo
.
NextMoveStep
(
nextStep
);
LogUtil
.
info
(
Name
+
"出料【"
+
posId
+
"】:"
+
MoveInfo
.
SLog
+
"最后一盘料位置【"
+
LastTrayPosition
+
"】,转动到出口定位"
);
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
/// <summary>
/// 转动结束,最后一盘料的位置+1
/// </summary>
/// <param name="result"></param>
public
void
LineEndProcess
(
bool
result
)
{
if
(
result
&&
LastTrayPosition
>
0
)
{
LastTrayPosition
++;
}
if
(!
Line3CanRun
)
{
equipBean
.
Line3Turn
.
LastEndTime
=
DateTime
.
Now
;
}
Line3CanRun
=
true
;
}
/// <summary>
/// 此皮带线是否有盘。重启会重置为空
/// </summary>
/// <returns></returns>
internal
bool
HasTray
()
{
if
(
LastTrayPosition
>
0
&&
LastTrayPosition
<=
MaxPosition
*
10
)
{
return
true
;
}
if
(
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
return
true
;
}
return
false
;
}
internal
bool
IsInTurn
()
{
return
lineRun
.
InTurn
;
}
#
endregion
public
void
TimerPro
()
{
//皮带线1出口无料
if
(
IsInTurn
().
Equals
(
false
)
&&
HasTray
()&&
lineRun
.
CanStart
())
{
if
(
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
//皮带线1出口无料
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
else
if
(
MoveInfo
.
MoveStep
<=
LineMoveStep
.
DLO_01_WaitEntryNoTray
&&
MoveInfo
.
IsInWait
.
Equals
(
false
)
&&
equipBean
.
IOValue
(
ExitTray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
//皮带线1出口有料,皮带3入库无料,且在停止状态
if
(
equipBean
.
Line3TurnIsStop
()
&&
equipBean
.
IOValue
(
Line3_TrayCheck
).
Equals
(
IO_VALUE
.
LOW
))
{
Line3CanRun
=
false
;
LogUtil
.
debug
(
Name
+
"出口有料盘,且"
+
Line3_TrayCheck
+
"=LOW,转动一个工位,["
+
LineRun_Do
+
"] ["
+
ExitLocation_Check
+
"]"
);
lineRun
.
StartLineRun
(
LineRun_Do
,
ExitLocation_Check
,
LineEndProcess
);
}
}
}
}
}
public
class
LineTurnBean
{
public
delegate
void
TurnEndDel
(
bool
result
);
public
TurnEndDel
turnEnd
=
null
;
public
bool
InTurn
=
false
;
private
string
LastMoveDO
=
""
;
private
string
LastCheckDI
=
""
;
private
int
subType
=
0
;
internal
DateTime
LastEndTime
=
DateTime
.
Now
;
public
bool
CanStart
(
int
totalMS
=
1000
)
{
TimeSpan
span
=
DateTime
.
Now
-
LastEndTime
;
if
(
span
.
TotalMilliseconds
>
totalMS
)
{
return
true
;
}
return
false
;
}
public
LineTurnBean
(
int
subType
)
{
this
.
subType
=
subType
;
}
public
void
StopLineRun
()
{
if
(
InTurn
)
{
InTurn
=
false
;
}
}
private
int
canWhileCount
=
3
;
public
void
StartLineRun
(
string
moveDO
,
string
checkDI
,
TurnEndDel
endProcess
,
int
timeOutMS
=
30000
)
{
InTurn
=
true
;
this
.
turnEnd
=
endProcess
;
Task
.
Factory
.
StartNew
(
delegate
{
canWhileCount
=
3
;
LineRunAndWait
(
moveDO
,
checkDI
,
timeOutMS
);
});
}
private
string
LineRunAndWait
(
string
moveDO
,
string
checkDI
,
int
timeOutMS
=
30000
)
{
LastMoveDO
=
moveDO
;
LastCheckDI
=
checkDI
;
LogUtil
.
debug
(
subType
+
"开始转动:"
+
moveDO
+
",等待信号:"
+
checkDI
+
""
);
IOManager
.
IOMove
(
moveDO
,
IO_VALUE
.
HIGH
,
subType
);
InTurn
=
true
;
DateTime
startTime
=
DateTime
.
Now
;
string
result
=
""
;
bool
isStop
=
false
;
//先等待信号灭一次,然后再亮时停止
while
(
true
)
{
Thread
.
Sleep
(
50
);
TimeSpan
span
=
DateTime
.
Now
-
startTime
;
if
(
span
.
TotalSeconds
>
1
&&
IOManager
.
IOValue
(
moveDO
,
subType
).
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
error
(
subType
+
" LineRunAndWait1 转动["
+
moveDO
+
"]["
+
checkDI
+
"],已等待["
+
FormUtil
.
GetSpanStr
(
span
)
+
"],重写IO:"
+
moveDO
);
IOManager
.
IOMove
(
moveDO
,
IO_VALUE
.
HIGH
,
subType
);
}
if
(!
InTurn
)
{
isStop
=
true
;
result
=
"手动停止"
;
}
else
if
(
span
.
TotalMilliseconds
>
timeOutMS
)
{
isStop
=
true
;
result
=
"转动超时"
;
}
//判断Buzy及位置是否结束
else
if
(
IOManager
.
IOValue
(
checkDI
,
subType
).
Equals
(
IO_VALUE
.
LOW
))
{
isStop
=
true
;
}
if
(
isStop
)
{
if
(
result
.
Equals
(
""
))
{
LogUtil
.
debug
(
subType
+
"验证"
+
checkDI
+
"=Low结束:"
+
result
);
}
else
{
LogUtil
.
info
(
subType
+
"["
+
moveDO
+
"] ["
+
checkDI
+
"] 验证"
+
checkDI
+
"=Low结束:"
+
result
);
}
break
;
}
}
result
=
""
;
isStop
=
false
;
while
(
true
)
{
Thread
.
Sleep
(
50
);
TimeSpan
span
=
DateTime
.
Now
-
startTime
;
if
(
span
.
TotalSeconds
>
2
&&
IOManager
.
IOValue
(
moveDO
,
subType
).
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
error
(
subType
+
" LineRunAndWait2 转动["
+
moveDO
+
"]["
+
checkDI
+
"],已等待["
+
FormUtil
.
GetSpanStr
(
span
)
+
"],重写IO:"
+
moveDO
);
IOManager
.
IOMove
(
moveDO
,
IO_VALUE
.
HIGH
,
subType
);
}
if
(!
InTurn
)
{
isStop
=
true
;
result
=
"手动停止"
;
}
else
if
(
span
.
TotalMilliseconds
>
timeOutMS
)
{
isStop
=
true
;
result
=
"转动超时"
;
}
//判断Buzy及位置是否结束
else
if
(
IOManager
.
IOValue
(
checkDI
,
subType
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
canWhileCount
>
0
&&
span
.
TotalMilliseconds
<
800
)
{
canWhileCount
--;
LogUtil
.
info
(
subType
+
" 异常停止,重新开始转动:["
+
moveDO
+
"] ["
+
checkDI
+
"] 耗时 ["
+
FormUtil
.
GetSpanStr
(
span
)
+
"]["
+
canWhileCount
+
"]"
);
LineRunAndWait
(
moveDO
,
checkDI
,
timeOutMS
);
}
isStop
=
true
;
}
if
(
isStop
)
{
if
(
result
.
Equals
(
""
))
{
if
(
span
.
TotalSeconds
>=
4
&&
span
.
TotalSeconds
<=
5
)
{
LogUtil
.
debug
(
subType
+
"停止运动:["
+
moveDO
+
"] ["
+
checkDI
+
"] 耗时 ["
+
FormUtil
.
GetSpanStr
(
span
)
+
"]["
+
canWhileCount
+
"]"
);
}
else
{
LogUtil
.
info
(
subType
+
"停止运动:["
+
moveDO
+
"] ["
+
checkDI
+
"] 耗时 ["
+
FormUtil
.
GetSpanStr
(
span
)
+
"]["
+
canWhileCount
+
"]"
);
}
}
else
{
LogUtil
.
info
(
subType
+
"["
+
moveDO
+
"] ["
+
checkDI
+
"] 停止运动:"
+
result
+
" "
+
moveDO
);
}
LastEndTime
=
DateTime
.
Now
;
IOManager
.
IOMove
(
moveDO
,
IO_VALUE
.
LOW
,
subType
);
Task
.
Factory
.
StartNew
(
delegate
{
turnEnd
?.
Invoke
(
result
.
Equals
(
""
));
});
InTurn
=
false
;
return
result
;
}
}
}
}
}
source/DeviceLibrary/model/StoreStep.cs
查看文件 @
e312134
...
...
@@ -1093,17 +1093,17 @@ namespace OnlineStore.DeviceLibrary
#
region
皮带线
12
接收料盘并转动处理
/// <summary>
/// 皮带线12处理料盘:
需要放入料盘,等待入口无料盘
/// 皮带线12处理料盘:
NG气缸后退
/// </summary>
DLO_01_
WaitEntryNoTray
=
30301
,
DLO_01_
NGBack
=
30301
,
/// <summary>
/// 皮带线12处理料盘:
需要放入料盘,等待出口无料盘
/// 皮带线12处理料盘:
等待入口无料盘, 等待最后一盘料位置>1
/// </summary>
DLO_02_WaitE
xit
NoTray
,
/// <summary>
/// 皮带线12处理料盘:入口出口都没有料盘,转动皮带线到入口定位亮
/// </summary>
DLO_03_LineRun
,
DLO_02_WaitE
ntery
NoTray
,
///
//
<summary>
///
//
皮带线12处理料盘:入口出口都没有料盘,转动皮带线到入口定位亮
///
//
</summary>
//
DLO_03_LineRun,
/// <summary>
/// 皮带线12处理料盘:可以放入料盘,等待移栽放下料盘
/// </summary>
...
...
@@ -1114,9 +1114,9 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
DLO_05_TrayIsOk
,
/// <summary>
/// 皮带线12处理料盘:
皮带线转动到出口定位信号亮
/// 皮带线12处理料盘:
盘放下后等待2000ms
/// </summary>
DLO_06_
OutCheck
,
DLO_06_
WaitTime
,
/// <summary>
/// 皮带线12处理料盘:出库有料盘,继续转动一个工位,
/// </summary>
...
...
@@ -1129,10 +1129,10 @@ namespace OnlineStore.DeviceLibrary
/// 皮带线12处理料盘:是NG料盘,NG气缸后退
/// </summary>
DLO_09_NGAfter
,
/// <summary>
/// 皮带线12处理料盘:判断出口是否有料盘,有料盘需要转动,没有料盘结束
/// </summary>
DLO_10_LineRun
,
///
//
<summary>
///
//
皮带线12处理料盘:判断出口是否有料盘,有料盘需要转动,没有料盘结束
///
//
</summary>
//
DLO_10_LineRun,
/// <summary>
/// 皮带线12处理料盘:出口无料盘,结束,
...
...
source/LoadCVSLibrary/storeConfig/config/IO_Type.cs
查看文件 @
e312134
...
...
@@ -193,10 +193,10 @@ namespace OnlineStore.LoadCSVLibrary
public
static
string
DLine_Reset
=
"DLine_Reset"
;
/// <summary>
/// DI 0 皮带线1入口定位检测 EntryLocation_Check1 2 PRO_AOI_IP_2 0 皮带线1入口定位检测 X023 X023
/// </summary>
public
static
string
EntryLocation_Check1
=
"EntryLocation_Check1"
;
///
//
<summary>
///
//
DI 0 皮带线1入口定位检测 EntryLocation_Check1 2 PRO_AOI_IP_2 0 皮带线1入口定位检测 X023 X023
///
//
</summary>
//
public static string EntryLocation_Check1 = "EntryLocation_Check1";
/// <summary>
/// DI 0 皮带线1出口定位检测 ExitLocation_Check1 3 PRO_AOI_IP_2 0 皮带线1出口定位检测 X024 X024
/// </summary>
...
...
@@ -206,10 +206,10 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
public
static
string
ExitTray_Check1
=
"ExitTray_Check1"
;
/// <summary>
/// DI,0,皮带线2入口定位检测 EntryLocation_Check2 5 PRO_AOI_IP_2 0 皮带线2入口定位检测 X026 X026
/// </summary>
public
static
string
EntryLocation_Check2
=
"EntryLocation_Check2"
;
///
//
<summary>
///
//
DI,0,皮带线2入口定位检测 EntryLocation_Check2 5 PRO_AOI_IP_2 0 皮带线2入口定位检测 X026 X026
///
//
</summary>
//
public static string EntryLocation_Check2 = "EntryLocation_Check2";
/// <summary>
/// DI 皮带线2出口定位检测 ExitLocation_Check2 6 PRO_AOI_IP_2 0 皮带线2出口定位检测 X027 X027
/// </summary>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论