Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
SO853-AutoCountMachine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c442141f
由
刘韬
编写于
2022-03-24 14:34:36 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
对特殊PN做3次点料处理
1 个父辈
289bedb8
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
87 行增加
和
3 行删除
DeviceLibrary/AutoScan/MoveStep.cs
DeviceLibrary/AutoScan/RobotManage.cs
DeviceLibrary/AutoScan/T1Machine.partial.cs
DeviceLibrary/AutoScan/XRayMachine.XRay.cs
DeviceLibrary/AutoScan/XRayMachine.cs
DeviceLibrary/AutoScan/MoveStep.cs
查看文件 @
c442141
...
@@ -93,7 +93,12 @@ namespace DeviceLibrary
...
@@ -93,7 +93,12 @@ namespace DeviceLibrary
XRay_09_SentToLabelStop
,
XRay_09_SentToLabelStop
,
XRay_10_CloseOutDoor
,
XRay_10_CloseOutDoor
,
XRay_11_GetCoutResult
,
XRay_11_GetCoutResult
,
XRay_Extra_01
,
XRay_Extra_02
,
XRay_Extra_03
,
XRay_Extra_04
,
XRay_End
,
XRay_End
,
Filter_01_WaitReel
,
Filter_01_WaitReel
,
Filter_02_WaitReel
,
Filter_02_WaitReel
,
Filter_10_NGReel_PushOut
,
Filter_10_NGReel_PushOut
,
...
...
DeviceLibrary/AutoScan/RobotManage.cs
查看文件 @
c442141
...
@@ -112,6 +112,16 @@ namespace DeviceLibrary
...
@@ -112,6 +112,16 @@ namespace DeviceLibrary
Line1
=
new
LineRunMonitor
(
"line1"
,
labelMachine
.
Config
.
DOList
[
IO_Label_Type
.
Line1_Run
].
GetIOAddr
());
Line1
=
new
LineRunMonitor
(
"line1"
,
labelMachine
.
Config
.
DOList
[
IO_Label_Type
.
Line1_Run
].
GetIOAddr
());
Line2
=
new
LineRunMonitor
(
"line2"
,
labelMachine
.
Config
.
DOList
[
IO_Label_Type
.
Line2_Run
].
GetIOAddr
());
Line2
=
new
LineRunMonitor
(
"line2"
,
labelMachine
.
Config
.
DOList
[
IO_Label_Type
.
Line2_Run
].
GetIOAddr
());
LogUtil
.
info
(
$
"XRay StartDate:{UseData.GetStartDateTime},TotalSecond:{UseData.GetTotalUseSeconds},TotalTimes:{UseData.GetTimes}"
);
LogUtil
.
info
(
$
"XRay StartDate:{UseData.GetStartDateTime},TotalSecond:{UseData.GetTotalUseSeconds},TotalTimes:{UseData.GetTimes}"
);
var
wiston_spnlist
=
ConfigHelper
.
Config
.
Get
<
string
[
]>
(
"wiston_spnlist"
);
if
(
wiston_spnlist
==
null
)
wiston_spnlist
=
new
string
[]
{
""
};
xrayMachine
.
pnlst
=
new
HashSet
<
string
>(
wiston_spnlist
);
xrayMachine
.
relmove
=
ConfigHelper
.
Config
.
Get
<
int
>(
"wiston_relmove"
,
50
);
xrayMachine
.
ptrycount
=
ConfigHelper
.
Config
.
Get
<
int
>(
"wiston_strycount"
,
3
);
LogUtil
.
info
(
"加载到特殊pn序列"
+
string
.
Join
(
","
,
ConfigHelper
.
Config
.
Get
<
string
[
]>
(
"wiston_spnlist"
)));
LogUtil
.
info
(
"加载到相对移动偏移"
+
xrayMachine
.
relmove
+
",重试次数"
+
xrayMachine
.
ptrycount
);
LoadFinishEvent
?.
Invoke
(
IsDebug
?
IsDebug
:
IsLoadOk
,
msgs
);
LoadFinishEvent
?.
Invoke
(
IsDebug
?
IsDebug
:
IsLoadOk
,
msgs
);
}
}
catch
(
Exception
ex
)
{
catch
(
Exception
ex
)
{
...
...
DeviceLibrary/AutoScan/T1Machine.partial.cs
查看文件 @
c442141
...
@@ -414,9 +414,19 @@ namespace DeviceLibrary
...
@@ -414,9 +414,19 @@ namespace DeviceLibrary
{
{
case
MoveStep
.
Shelf_Out_Wait
:
case
MoveStep
.
Shelf_Out_Wait
:
if
(
IOValue
(
IO_T1_Type
.
T1_Lift_Tray_Check
).
Equals
(
IO_VALUE
.
LOW
))
if
(
IOValue
(
IO_T1_Type
.
T1_Lift_Tray_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
ConfigIO
io
=
Config
.
getWaitIO
(
IO_T1_Type
.
T1_Lift_Tray_Check
);
WarnMsg
=
$
"{crc.GetString("
wait
", "
等待
")}("
+
io
.
DisplayStr
+
"=LOW"
+
$
")"
;
Msg
.
add
(
WarnMsg
,
MsgLevel
.
warning
);
return
;
return
;
}
if
(
IOValue
(
IO_T1_Type
.
T1_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOValue
(
IO_T1_Type
.
T1_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
ConfigIO
io
=
Config
.
getWaitIO
(
IO_T1_Type
.
T1_Out_Check
);
WarnMsg
=
$
"{crc.GetString("
wait
", "
等待
")}("
+
io
.
DisplayStr
+
"=HIGH"
+
$
")"
;
Msg
.
add
(
WarnMsg
,
MsgLevel
.
warning
);
return
;
return
;
}
ShelfOutMoveInfo
.
NextMoveStep
(
MoveStep
.
Shelf_30_Out_BatchDown
);
ShelfOutMoveInfo
.
NextMoveStep
(
MoveStep
.
Shelf_30_Out_BatchDown
);
ShelfOutMoveInfo
.
log
(
"出口工位有料,出口等待位无料,开始送出"
);
ShelfOutMoveInfo
.
log
(
"出口工位有料,出口等待位无料,开始送出"
);
...
...
DeviceLibrary/AutoScan/XRayMachine.XRay.cs
查看文件 @
c442141
...
@@ -17,6 +17,9 @@ namespace DeviceLibrary
...
@@ -17,6 +17,9 @@ namespace DeviceLibrary
using
crc
=
OnlineStore
.
CodeResourceControl
;
using
crc
=
OnlineStore
.
CodeResourceControl
;
partial
class
XRayMachine
partial
class
XRayMachine
{
{
public
HashSet
<
string
>
pnlst
;
public
int
ptrycount
;
public
int
relmove
;
const
string
xraydir
=
@"\Image\Xray"
;
const
string
xraydir
=
@"\Image\Xray"
;
Task
GetResultTask
=
null
;
Task
GetResultTask
=
null
;
void
WorkProcess
()
void
WorkProcess
()
...
@@ -57,6 +60,14 @@ namespace DeviceLibrary
...
@@ -57,6 +60,14 @@ namespace DeviceLibrary
RobotManage
.
XRay
.
Start
();
RobotManage
.
XRay
.
Start
();
MoveInfo
.
log
(
$
"打开X光"
);
MoveInfo
.
log
(
$
"打开X光"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
var
pps
=
MoveInfo
.
ReelParam
.
PN
.
Split
(
'-'
);
var
pn
=
pps
[
0
];
if
(
pnlst
.
Contains
(
pn
))
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
XRay_Extra_01
);
MoveInfo
.
log
(
$
"判断为需要多次拍照的料盘,PN:{pn}"
);
countlist
.
Clear
();
}
break
;
break
;
case
MoveStep
.
XRay_05_GetImage
:
case
MoveStep
.
XRay_05_GetImage
:
if
(
GrabImage
())
if
(
GrabImage
())
...
@@ -137,8 +148,54 @@ namespace DeviceLibrary
...
@@ -137,8 +148,54 @@ namespace DeviceLibrary
MoveInfo
.
StopwatchLog
();
MoveInfo
.
StopwatchLog
();
MoveInfo
.
EndMove
();
MoveInfo
.
EndMove
();
break
;
break
;
case
MoveStep
.
XRay_Extra_01
:
MoveInfo
.
NextMoveStep
(
MoveStep
.
XRay_Extra_02
);
if
(
GrabImage
())
{
MoveInfo
.
log
(
$
"获取图像,开始点料 IsRayOpen:{RobotManage.XRay.IsRayOpen}"
);
var
c
=
GetCountResult
(
true
);
countlist
.
Add
(
c
);
MoveInfo
.
log
(
$
"获取点料数量:{c}, 第:{countlist.Count}次"
);
}
else
{
MoveInfo
.
StopwatchLog
(
false
,
"获取图像失败"
);
countlist
.
Add
(-
1
);
}
Line_In_Axis
.
RelMove
(
MoveInfo
,
relmove
,
Config
.
Line_In_Relative_speed
);
MoveInfo
.
StopwatchLog
(
false
,
"轻微移动皮带,重试X光点料"
);
break
;
case
MoveStep
.
XRay_Extra_02
:
if
(
countlist
.
Count
<=
ptrycount
)
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
XRay_Extra_01
);
MoveInfo
.
log
(
$
"开始第{countlist.Count}次"
);
}
else
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
XRay_Extra_03
);
var
maxcount
=
countlist
.
Max
();
MoveInfo
.
log
(
$
"获取到最大数量{maxcount}, 分别数量:{string.Join("
,
", countlist)}"
);
MoveInfo
.
ReelParam
.
QTY
=
maxcount
;
var
cl
=
ServerConn
.
inputCounterDataByXRayMachine
(
MoveInfo
.
ReelParam
.
WareCode
,
maxcount
);
if
(
cl
==
null
)
{
MoveInfo
.
ReelParam
.
IsNg
=
true
;
MoveInfo
.
ReelParam
.
NgMsg
=
"点料数量上传失败"
;
MoveInfo
.
ReelParam
.
logresult
();
}
}
break
;
case
MoveStep
.
XRay_Extra_03
:
MoveInfo
.
NextMoveStep
(
MoveStep
.
XRay_08_OpenOutDoor
);
MoveInfo
.
log
(
$
"关闭X光"
);
RobotManage
.
XRay
.
Stop
();
IOMove
(
IO_XRay_Type
.
Xray_Lock
,
IO_VALUE
.
LOW
);
MoveInfo
.
StopwatchLog
(
false
,
"准备送出"
);
break
;
}
}
}
}
List
<
int
>
countlist
=
new
List
<
int
>();
public
string
xrayImagePath
;
public
string
xrayImagePath
;
[
HandleProcessCorruptedStateExceptions
]
[
HandleProcessCorruptedStateExceptions
]
public
bool
GrabImage
()
public
bool
GrabImage
()
...
@@ -212,7 +269,7 @@ namespace DeviceLibrary
...
@@ -212,7 +269,7 @@ namespace DeviceLibrary
}
}
}
}
[
HandleProcessCorruptedStateExceptions
]
[
HandleProcessCorruptedStateExceptions
]
public
void
GetCountResult
(
)
public
int
GetCountResult
(
bool
dontlog
=
false
)
{
{
//返回的数量是string类型,count = "4000,3000,3500,2000"
//返回的数量是string类型,count = "4000,3000,3500,2000"
int
count
=
0
;
int
count
=
0
;
...
@@ -274,7 +331,7 @@ namespace DeviceLibrary
...
@@ -274,7 +331,7 @@ namespace DeviceLibrary
MoveInfo
.
ReelParam
.
IsNg
=
true
;
MoveInfo
.
ReelParam
.
IsNg
=
true
;
MoveInfo
.
ReelParam
.
NgMsg
=
"点料失败"
;
MoveInfo
.
ReelParam
.
NgMsg
=
"点料失败"
;
MoveInfo
.
ReelParam
.
logresult
();
MoveInfo
.
ReelParam
.
logresult
();
return
;
return
count
;
}
}
if
(
countStr
!=
null
)
if
(
countStr
!=
null
)
...
@@ -298,7 +355,7 @@ namespace DeviceLibrary
...
@@ -298,7 +355,7 @@ namespace DeviceLibrary
if
(
File
.
Exists
(
resfile
))
if
(
File
.
Exists
(
resfile
))
File
.
Delete
(
resfile
);
File
.
Delete
(
resfile
);
Directory
.
Move
(
Path
.
Combine
(
root
,
resfilename
),
resfile
);
Directory
.
Move
(
Path
.
Combine
(
root
,
resfilename
),
resfile
);
if
(!
RobotManage
.
offlinemode
)
if
(!
RobotManage
.
offlinemode
&&
!
dontlog
)
{
{
var
cl
=
ServerConn
.
inputCounterDataByXRayMachine
(
MoveInfo
.
ReelParam
.
WareCode
,
count
);
var
cl
=
ServerConn
.
inputCounterDataByXRayMachine
(
MoveInfo
.
ReelParam
.
WareCode
,
count
);
if
(
cl
==
null
)
if
(
cl
==
null
)
...
@@ -319,6 +376,7 @@ namespace DeviceLibrary
...
@@ -319,6 +376,7 @@ namespace DeviceLibrary
{
{
MoveInfo
.
log
(
"GetCountResult 出错: "
+
ex
.
ToString
());
MoveInfo
.
log
(
"GetCountResult 出错: "
+
ex
.
ToString
());
}
}
return
count
;
}
}
}
}
...
...
DeviceLibrary/AutoScan/XRayMachine.cs
查看文件 @
c442141
...
@@ -56,6 +56,7 @@ namespace DeviceLibrary
...
@@ -56,6 +56,7 @@ namespace DeviceLibrary
IOMonitor
.
RegisterIO
(
IO_XRay_Type
.
Exit_Open
,
Config
,
IO_VALUE
.
LOW
,
delegate
()
{
XRayDoorOpen
();
});
IOMonitor
.
RegisterIO
(
IO_XRay_Type
.
Exit_Open
,
Config
,
IO_VALUE
.
LOW
,
delegate
()
{
XRayDoorOpen
();
});
IOMonitor
.
RegisterIO
(
IO_XRay_Type
.
Entry_Open
,
Config
,
IO_VALUE
.
LOW
,
delegate
()
{
XRayDoorOpen
();
});
IOMonitor
.
RegisterIO
(
IO_XRay_Type
.
Entry_Open
,
Config
,
IO_VALUE
.
LOW
,
delegate
()
{
XRayDoorOpen
();
});
AlarmBuzzer
.
SetOnOffAction
(()
=>
{
IOMove
(
IO_XRay_Type
.
Alarm_Buzzer
,
IO_VALUE
.
HIGH
);
},
()
=>
{
IOMove
(
IO_XRay_Type
.
Alarm_Buzzer
,
IO_VALUE
.
LOW
);
});
AlarmBuzzer
.
SetOnOffAction
(()
=>
{
IOMove
(
IO_XRay_Type
.
Alarm_Buzzer
,
IO_VALUE
.
HIGH
);
},
()
=>
{
IOMove
(
IO_XRay_Type
.
Alarm_Buzzer
,
IO_VALUE
.
LOW
);
});
LogUtil
.
info
(
DeviceName
+
" init end"
);
LogUtil
.
info
(
DeviceName
+
" init end"
);
}
}
catch
(
Exception
e
){
catch
(
Exception
e
){
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论