Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
NS200
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a859c3a1
由
张东亮
编写于
2025-12-09 20:34:19 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
左侧放料检查问题修改
1 个父辈
fe52978a
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
94 行增加
和
51 行删除
DeviceLibrary/AutoScanAndLabel/LabelParam.cs
DeviceLibrary/AutoScanAndLabel/MainMachine _LeftProcess.cs
DeviceLibrary/AutoScanAndLabel/MainMachine _MiddleProcess.cs
DeviceLibrary/AutoScanAndLabel/MoveInfo.cs
DeviceLibrary/AutoScanAndLabel/MoveStep.cs
LoadCVSLibrary/storeConfig/ConfigItemBase.cs
DeviceLibrary/AutoScanAndLabel/LabelParam.cs
查看文件 @
a859c3a
...
...
@@ -43,6 +43,7 @@ namespace DeviceLibrary
/// 料盘高度
/// </summary>
public
int
PlateH
{
get
;
set
;
}
public
int
PlwHight
{
get
;
set
;
}
/// <summary>
/// 料盘宽度
/// </summary>
...
...
DeviceLibrary/AutoScanAndLabel/MainMachine _LeftProcess.cs
查看文件 @
a859c3a
...
...
@@ -58,11 +58,16 @@ namespace DeviceLibrary
}
bool
checkReelIsPutOk
(
int
curPos
)
{
if
((
RightMoveInfo
.
MoveStep
>=
MoveStep
.
R12_ShelfNoTray
)
||
RightMoveInfo
.
MoveStep
==
MoveStep
.
Wait
)
//无料盘.空料串时定位信号不亮
{
LeftMoveInfo
.
log
(
"右侧已无料盘,该盘为最后一盘,不检测"
);
return
true
;
}
bool
enableCheck
=
ConfigHelper
.
Config
.
Get
(
"左侧料盘放料串检查是否启用"
,
true
);
if
(
enableCheck
)
{
var
aixH
=
1f
*
Math
.
Abs
(
_leftBatchAxisPositionWhileTrayCheck
-
curPos
)
/
Config
.
Left_Batch_ChangeValue
;
int
plateH
=
LeftMoveInfo
.
MoveParam
.
PlateH
==
0
?
PlwHight
/
Config
.
Right_Batch_ChangeValue
:
LeftMoveInfo
.
MoveParam
.
PlateH
;
float
plateH
=
Math
.
Max
(
LeftMoveInfo
.
MoveParam
.
PlwHight
/
Config
.
Right_Batch_ChangeValue
,
LeftMoveInfo
.
MoveParam
.
PlateH
)
;
var
canErrorMM
=
ConfigHelper
.
Config
.
Get
(
"左侧料盘放料串检查厚度最大偏差值"
,
5
);
if
(
Math
.
Abs
(
aixH
-
plateH
)
<=
canErrorMM
)
{
...
...
@@ -107,13 +112,17 @@ namespace DeviceLibrary
case
MoveStep
.
L03
:
LeftMoveInfo
.
NextMoveStep
(
MoveStep
.
L04
);
int
targetP1
=
Left_Batch_Axis
.
GetAclPosition
()
-
ConfigHelper
.
Config
.
Get
(
"LeftAxisDownValue"
,
50
)
*
Config
.
Left_Batch_ChangeValue
;
int
currpoint
=
Left_Batch_Axis
.
GetAclPosition
();
if
(
PlwHight
>
5000
)
{
int
currpoint
=
Left_Batch_Axis
.
GetAclPosition
();
int
countPleHight
=
PlwHight
/
Config
.
Right_Batch_ChangeValue
*
Config
.
Left_Batch_ChangeValue
;
targetP1
=
currpoint
-
countPleHight
+
5000
;
LeftMoveInfo
.
MoveParam
.
PlateH
=
countPleHight
/
Config
.
Left_Batch_ChangeValue
;
LeftMoveInfo
.
log
(
$
"出料提升机构,获取到料盘高度脉冲{PlwHight},当前位置{currpoint},计算盘高{LeftMoveInfo.MoveParam.PlateH}"
);
var
target
=
currpoint
-
countPleHight
+
5000
;
if
(
target
<
targetP1
)
{
targetP1
=
target
;
LeftMoveInfo
.
MoveParam
.
PlateH
=
countPleHight
/
Config
.
Left_Batch_ChangeValue
;
LeftMoveInfo
.
log
(
$
"出料提升机构,获取到料盘高度脉冲{PlwHight},当前位置{currpoint},计算盘高{LeftMoveInfo.MoveParam.PlateH}"
);
}
}
int
targetSpeed
=
Config
.
Left_Batch_P1_speed
;
if
(
targetP1
<=
0
)
...
...
@@ -181,8 +190,21 @@ namespace DeviceLibrary
LeftMoveInfo
.
log
(
$
"批量轴上升到P2位置,LeftStartMovePosition={LeftStartMovePosition}"
);
break
;
case
MoveStep
.
L13
:
bool
enableCheck
=
ConfigHelper
.
Config
.
Get
(
"左侧料盘放料串检查是否启用"
,
true
);
if
(
enableCheck
)
{
//等待右侧测高完成
if
((
RightMoveInfo
.
MoveStep
>
MoveStep
.
R04
&&
RightMoveInfo
.
MoveStep
<=
MoveStep
.
R10_WaitReelLeave
)
||
RightMoveInfo
.
MoveStep
==
MoveStep
.
Wait
)
//测高完成
{
LeftMoveInfo
.
MoveParam
.
PlwHight
=
PlwHight
;
LeftMoveInfo
.
log
(
$
"右侧测高完成:PlwHight={PlwHight}"
);
}
else
{
return
;
}
}
var
curPos
=
Left_Batch_Axis
.
GetAclPosition
();
//判断当前料盘是否放到料串上
if
(
checkReelIsPutOk
(
curPos
))
{
...
...
@@ -213,6 +235,11 @@ namespace DeviceLibrary
LeftMoveInfo
.
log
(
$
"批量轴重新上升到P2位置,LeftStartMovePosition={LeftStartMovePosition}"
);
break
;
case
MoveStep
.
L16
:
if
(
RightMoveInfo
.
MoveStep
==
MoveStep
.
Wait
||
RightShelfNoTray
)
{
PlwHight
=
0
;
LeftMoveInfo
.
log
(
$
"右侧无料盘,PlwHight={PlwHight}"
);
}
LeftBatchAxisPositionWhileTrayCheck
=
Left_Batch_Axis
.
GetAclPosition
();
LeftMoveInfo
.
NextMoveStep
(
MoveStep
.
L20_WaitLabel
);
break
;
...
...
@@ -413,26 +440,26 @@ namespace DeviceLibrary
/// <summary>
/// 下降固定值
/// </summary>
void
LeftBatchAxisDown
()
{
//
void LeftBatchAxisDown()
//
{
int
targetP1
=
Left_Batch_Axis
.
GetAclPosition
()
-
ConfigHelper
.
Config
.
Get
(
"LeftAxisDownValue"
,
50
)
*
Config
.
Left_Batch_ChangeValue
;
if
(
PlwHight
>
5000
)
{
int
currpoint
=
Left_Batch_Axis
.
GetAclPosition
();
int
countPleHight
=
PlwHight
/
Config
.
Right_Batch_ChangeValue
*
Config
.
Left_Batch_ChangeValue
;
targetP1
=
currpoint
-
countPleHight
+
5000
;
LeftMoveInfo
.
log
(
$
"出料提升机构,获取到料盘高度脉冲{PlwHight},当前位置{currpoint},计算盘高{countPleHight}"
);
}
int
targetSpeed
=
Config
.
Left_Batch_P1_speed
;
if
(
targetP1
<=
0
)
{
LeftMoveInfo
.
log
(
"出料提升机构,下降固定值小于0,设置回到0原点。"
);
targetP1
=
0
;
}
LeftMoveInfo
.
log
(
$
"出料提升机构,下降固定值为{targetP1}脉冲!"
);
Left_Batch_Axis
.
AbsMove
(
LeftMoveInfo
,
targetP1
,
targetSpeed
);
}
//
int targetP1 = Left_Batch_Axis.GetAclPosition() - ConfigHelper.Config.Get("LeftAxisDownValue", 50) * Config.Left_Batch_ChangeValue;
//
if (PlwHight > 5000)
//
{
//
int currpoint = Left_Batch_Axis.GetAclPosition();
//
int countPleHight = PlwHight / Config.Right_Batch_ChangeValue * Config.Left_Batch_ChangeValue;
//
targetP1 = currpoint - countPleHight + 5000;
//
LeftMoveInfo.log($"出料提升机构,获取到料盘高度脉冲{PlwHight},当前位置{currpoint},计算盘高{countPleHight}");
//
}
//
int targetSpeed = Config.Left_Batch_P1_speed;
//
if (targetP1 <= 0)
//
{
//
LeftMoveInfo.log("出料提升机构,下降固定值小于0,设置回到0原点。");
//
targetP1 = 0;
//
}
//
LeftMoveInfo.log($"出料提升机构,下降固定值为{targetP1}脉冲!");
//
Left_Batch_Axis.AbsMove(LeftMoveInfo, targetP1, targetSpeed);
//
}
/// <summary>
/// 下降在上升以后,上升指定阈值,防止感应器失效
...
...
DeviceLibrary/AutoScanAndLabel/MainMachine _MiddleProcess.cs
查看文件 @
a859c3a
...
...
@@ -26,7 +26,7 @@ namespace DeviceLibrary
//如果右侧可取料那么那么移动轴到p2点,夹爪释放。获取右侧的标签信息,右侧标签信息复位,否则等待
if
(
RightMoveInfo
.
MoveStep
==
MoveStep
.
R10_WaitReelLeave
)
{
PlwHight
=
0
;
//
PlwHight = 0;
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M02
);
Take_Middle_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_Middle_P2
,
Config
.
Take_Middle_P2_speed
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P2
,
Config
.
Take_UpDown_P2_speed
);
...
...
@@ -43,7 +43,7 @@ namespace DeviceLibrary
MiddleMoveInfo
.
log
(
"等待右侧可以取料"
);
}
break
;
//z轴移动到p3点,抓取,返回p2点
//z轴移动到p3点,抓取,返回p2点
case
MoveStep
.
M02
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M03
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P3
,
Config
.
Take_UpDown_P3_speed
);
...
...
@@ -58,10 +58,10 @@ namespace DeviceLibrary
break
;
case
MoveStep
.
M04
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M05
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P2
,
Config
.
Take_UpDown_P2_speed
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P2
,
Config
.
Take_UpDown_P2_speed
);
MiddleMoveInfo
.
log
(
"上下轴返回P2点"
);
break
;
//如果抓取完成或者定位低电平,进入下一步,右侧进行下一盘;如果左侧空闲,存在NG或抓取失败人工处理,如果右侧进料确认右侧进入继续取料步骤,如果中间ng轴会p1点否则继续下一个流程
//如果抓取完成或者定位低电平,进入下一步,右侧进行下一盘;如果左侧空闲,存在NG或抓取失败人工处理,如果右侧进料确认右侧进入继续取料步骤,如果中间ng轴会p1点否则继续下一个流程
case
MoveStep
.
M05
:
if
(
clampTool
.
IsClamp
()
||
IOValue
(
IO_Type
.
RightTop_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
...
...
@@ -83,12 +83,12 @@ namespace DeviceLibrary
{
if
(
MiddleMoveInfo
.
MoveParam
.
IsNg
)
{
Msg
.
add
(
crc
.
GetString
(
"Res0096"
,
"抓料失败请手动处理,请将料盘放入:NG箱,按右侧按钮继续"
),
MsgLevel
.
alarm
);
Msg
.
add
(
crc
.
GetString
(
"Res0096"
,
"抓料失败请手动处理,请将料盘放入:NG箱,按右侧按钮继续"
),
MsgLevel
.
alarm
);
MiddleMoveInfo
.
log
(
"抓料失败请手动处理,请将料盘放入:NG箱,按右侧按钮继续"
);
}
else
{
Msg
.
add
(
crc
.
GetString
(
"Res0097"
,
"抓料失败请手动处理,请将料盘放入: 左侧料串,按右侧按钮继续"
),
MsgLevel
.
alarm
);
Msg
.
add
(
crc
.
GetString
(
"Res0097"
,
"抓料失败请手动处理,请将料盘放入: 左侧料串,按右侧按钮继续"
),
MsgLevel
.
alarm
);
MiddleMoveInfo
.
log
(
"抓料失败请手动处理,请将料盘放入: 左侧料串,按右侧按钮继续"
);
}
...
...
@@ -110,7 +110,7 @@ namespace DeviceLibrary
MiddleMoveInfo
.
log
(
"抓料失败,等待左侧允许放料"
);
}
break
;
//NG料进入NG流程,正常入正常流程
//NG料进入NG流程,正常入正常流程
case
MoveStep
.
M06_Wait
:
break
;
case
MoveStep
.
M06
:
...
...
@@ -123,7 +123,7 @@ namespace DeviceLibrary
//else if (RightMoveInfo.MoveStep >= MoveStep.R06_GettedReelHigh && RightMoveInfo.MoveStep <= MoveStep.R10_WaitReelLeave)
else
//if (LastHeightPos > 0)
{
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M07
);
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M07
);
MiddleMoveInfo
.
log
(
$
"开始往左侧料串移栽,{MiddleMoveInfo.MoveParam.ToStr()}"
);
}
//else if (MiddleMoveInfo.IsTimeOut(60))
...
...
@@ -137,7 +137,7 @@ namespace DeviceLibrary
Msg
.
add
(
msg
,
MsgLevel
.
info
);
}
//左侧空闲,等待贴标流程为打印标签,复制信息给标签流程,进入下一步,移动旋转轴到p3
else
if
(
LeftMoveInfo
.
MoveStep
==
MoveStep
.
L10_WaitReelPut
)
else
if
(
LeftMoveInfo
.
MoveStep
==
MoveStep
.
L10_WaitReelPut
)
{
if
(
clampTool
.
IsClamp
())
{
...
...
@@ -181,13 +181,25 @@ namespace DeviceLibrary
Msg
.
add
(
crc
.
GetString
(
"Res0098"
,
"等待左侧允许放料"
),
MsgLevel
.
info
);
}
break
;
//z轴到p4
//z轴到p4
case
MoveStep
.
M08
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M08_01
);
if
(
MiddleMoveInfo
.
MoveParam
.
PlateW
>
7
)
{
MiddleMoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1500
));
MiddleMoveInfo
.
log
(
$
"尺寸:{MiddleMoveInfo.MoveParam.PlateW},停留1500ms"
);
}
else
{
MiddleMoveInfo
.
log
(
$
"尺寸:{MiddleMoveInfo.MoveParam.PlateW},不停留"
);
}
break
;
case
MoveStep
.
M08_01
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M09
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P4
,
Config
.
Take_UpDown_P4_speed
);
MiddleMoveInfo
.
log
(
"左侧允许放料,上下轴到P4"
);
break
;
//夹爪释放复制信息给左侧流程,左侧进入到收到料流程
//夹爪释放复制信息给左侧流程,左侧进入到收到料流程
case
MoveStep
.
M09
:
if
(
clampTool
.
Release
())
{
...
...
@@ -200,11 +212,11 @@ namespace DeviceLibrary
else
if
(
MiddleMoveInfo
.
IsTimeOut
(
10
))
{
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M09
);
MiddleMoveInfo
.
log
(
"等待夹爪放松"
);
MiddleMoveInfo
.
log
(
"等待夹爪放松"
);
}
Msg
.
add
(
crc
.
GetString
(
"Res0050"
,
"等待夹爪放松"
),
MsgLevel
.
info
);
Msg
.
add
(
crc
.
GetString
(
"Res0050"
,
"等待夹爪放松"
),
MsgLevel
.
info
);
break
;
//待机流程
//待机流程
case
MoveStep
.
M10
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M_ReturnToP1
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P1
,
Config
.
Take_UpDown_P1_speed
);
...
...
@@ -215,22 +227,23 @@ namespace DeviceLibrary
Take_Middle_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_Middle_P1
,
Config
.
Take_Middle_P1_speed
);
MiddleMoveInfo
.
log
(
"放料完成,旋转轴返回待机点"
);
break
;
//NG流程
//NG流程
case
MoveStep
.
M20_ToNgBox
:
if
(
PlwHight
>
65
*
1000
)
if
(
PlwHight
>
65
*
1000
)
{
Msg
.
add
(
crc
.
GetString
(
"Res0166.2bf72810"
,
"NG物料厚度超过72mm无法放入NG箱"
),
MsgLevel
.
alarm
);
Msg
.
add
(
crc
.
GetString
(
"Res0166.2bf72810"
,
"NG物料厚度超过72mm无法放入NG箱"
),
MsgLevel
.
alarm
);
}
else
if
(
PlwHight
>
0
)
{
else
if
(
PlwHight
>
0
)
{
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M20_1_ToNgBox
);
Take_UpDown_Axis
.
AbsMove
(
MiddleMoveInfo
,
Config
.
Take_UpDown_P1
,
Config
.
Take_UpDown_P1_speed
);
MiddleMoveInfo
.
log
(
"NG时上下轴转到P1"
);
}
else
{
Msg
.
add
(
crc
.
GetString
(
"Res0182.2def73c9"
,
"NG物料, 等待测高"
),
MsgLevel
.
info
);
Msg
.
add
(
crc
.
GetString
(
"Res0182.2def73c9"
,
"NG物料, 等待测高"
),
MsgLevel
.
info
);
MiddleMoveInfo
.
log
(
"NG物料, 等待测高"
);
}
break
;
...
...
@@ -263,7 +276,7 @@ namespace DeviceLibrary
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M22
);
MiddleMoveInfo
.
log
(
"等待夹爪放松"
);
}
Msg
.
add
(
crc
.
GetString
(
"Res0050"
,
"等待夹爪放松"
),
MsgLevel
.
info
);
Msg
.
add
(
crc
.
GetString
(
"Res0050"
,
"等待夹爪放松"
),
MsgLevel
.
info
);
break
;
case
MoveStep
.
M23
:
MiddleMoveInfo
.
NextMoveStep
(
MoveStep
.
M_ReturnToP1
);
...
...
@@ -288,12 +301,13 @@ namespace DeviceLibrary
return
7
;
}
string
MiddleState
()
{
string
MiddleState
()
{
string
state
=
""
;
if
(
MiddleMoveInfo
.
MoveStep
==
MoveStep
.
M_Standby
||
MiddleMoveInfo
.
MoveStep
==
MoveStep
.
Wait
)
state
+=
crc
.
GetString
(
"Res0074"
,
"等待中"
);
state
+=
crc
.
GetString
(
"Res0074"
,
"等待中"
);
else
state
+=
crc
.
GetString
(
"Res0045"
,
"当前ReelID:"
)
+
MiddleMoveInfo
.
MoveParam
.
WareCode
;
state
+=
crc
.
GetString
(
"Res0045"
,
"当前ReelID:"
)
+
MiddleMoveInfo
.
MoveParam
.
WareCode
;
return
state
;
}
...
...
DeviceLibrary/AutoScanAndLabel/MoveInfo.cs
查看文件 @
a859c3a
...
...
@@ -222,11 +222,11 @@ namespace DeviceLibrary
{
if
(
IsHomeMove
)
{
return
"
轴【"
+
AxisInfo
.
DisplayStr
+
"】原点返回"
;
return
"
【"
+
AxisInfo
.
DisplayStr
+
"】"
+
crc
.
GetString
(
"AxisMoveControl_groupAxis_panel1_btnAxisReturnHome_Text"
,
"原点返回"
)
;
}
else
{
return
"
轴
【"
+
AxisInfo
.
DisplayStr
+
"】绝对运动,目标位置【"
+
TargetPosition
+
"】"
;
return
"【"
+
AxisInfo
.
DisplayStr
+
"】绝对运动,目标位置【"
+
TargetPosition
+
"】"
;
}
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W002_IOValue
))
...
...
DeviceLibrary/AutoScanAndLabel/MoveStep.cs
查看文件 @
a859c3a
...
...
@@ -99,6 +99,7 @@ namespace DeviceLibrary
M07
,
M_ReturnToP1
,
M08
,
M08_01
,
M09
,
M10
,
M20_ToNgBox
,
...
...
LoadCVSLibrary/storeConfig/ConfigItemBase.cs
查看文件 @
a859c3a
...
...
@@ -125,7 +125,7 @@ namespace OnlineStore.LoadCSVLibrary
{
get
{
return
Explain
+
"("
+
ProName
+
")"
;
return
crc
.
GetString
(
ProName
,
"Explain"
)
+
"("
+
ProName
+
")"
;
}
set
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论