Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
SO664-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 6204a70b
由
LN
编写于
2020-12-21 16:32:33 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加伺服报警检测功能
1 个父辈
9b480ac3
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
94 行增加
和
26 行删除
source/DeviceLibrary/assemblyLine/EquipBase.cs
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
source/DeviceLibrary/assemblyLine/HY/HY_Coveryor.cs
source/DeviceLibrary/assemblyLine/MoveEquip.cs
source/DeviceLibrary/baan/AxisBean.cs
source/DeviceLibrary/assemblyLine/EquipBase.cs
查看文件 @
6204a70
...
...
@@ -383,6 +383,43 @@ namespace OnlineStore.DeviceLibrary
Thread
.
Sleep
(
100
);
}
private
DateTime
checkAlarmTime
=
DateTime
.
Now
;
public
bool
CheckAxisAlarm
(
params
AxisBean
[]
axisList
)
{
if
(!
NoErrorAlarm
())
{
return
true
;
}
TimeSpan
span
=
DateTime
.
Now
-
checkAlarmTime
;
//1秒钟检测一次轴报警
if
(
span
.
TotalSeconds
<
3
)
{
return
false
;
}
checkAlarmTime
=
DateTime
.
Now
;
bool
isInAlarm
=
false
;
foreach
(
AxisBean
axisInfo
in
axisList
)
{
short
axis
=
axisInfo
.
Config
.
GetAxisValue
();
string
deviceName
=
axisInfo
.
Config
.
GetNameStr
();
int
alarmIo
=
AxisManager
.
instance
.
GetAlarmStatus
(
deviceName
,
axis
);
if
(
alarmIo
==
1
)
{
WarnMsg
=
Name
+
" 运动轴"
+
axisInfo
.
Config
.
Explain
+
"报警"
;
LogUtil
.
error
(
WarnMsg
);
Alarm
(
LineAlarmType
.
AxisAlarm
);
isInAlarm
=
true
;
}
}
//判断报警状态
return
isInAlarm
;
}
#
endregion
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
查看文件 @
6204a70
...
...
@@ -154,19 +154,19 @@ namespace OnlineStore.DeviceLibrary
case
LineMoveStep
.
FR_01_StopUp
:
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FR_02_LineRun
);
//阻挡上升
if
(
IOValue
(
IO_Type
.
SL_Location_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
LogInfo
(
MoveInfo
.
MoveType
+
":"
+
MoveInfo
.
SLog
+
":开始复位,放料顶升下降, 所有阻挡上升,检测到定位工位有信号,不转动链条"
);
}
else
{
LogInfo
(
MoveInfo
.
MoveType
+
":"
+
MoveInfo
.
SLog
+
":开始复位,放料顶升下降, 所有阻挡上升,链条先转动
3秒钟
"
);
//
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.HIGH))
//
{
//
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,检测到定位工位有信号,不转动链条");
//
}
//
else
//
{
LogInfo
(
MoveInfo
.
MoveType
+
":"
+
MoveInfo
.
SLog
+
":开始复位,放料顶升下降, 所有阻挡上升,链条先转动
3000
"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
//线体开始转动
AllLineMove
(
IO_VALUE
.
HIGH
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
SL_Location_Check
,
IO_VALUE
.
HIGH
));
MoveInfo
.
OneWaitCanEndStep
=
true
;
}
//
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
//
MoveInfo.OneWaitCanEndStep = true;
//
}
break
;
case
LineMoveStep
.
FR_02_LineRun
:
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
FR_03_CylinderUp
);
...
...
@@ -424,6 +424,11 @@ namespace OnlineStore.DeviceLibrary
AgvStatusPro
();
LedProcess
();
if
(
UseAxis
&&
runStatus
>=
LineRunStatus
.
Runing
)
{
CheckAxisAlarm
(
UpdownAxis
,
BatchAxis
);
}
}
}
...
...
source/DeviceLibrary/assemblyLine/HY/HY_Coveryor.cs
查看文件 @
6204a70
...
...
@@ -180,6 +180,10 @@ namespace OnlineStore.DeviceLibrary
CheckFixture
();
}
}
if
(
UseAxis
&&
runStatus
>=
LineRunStatus
.
Runing
)
{
CheckAxisAlarm
(
UpdownAxis
);
}
}
}
}
source/DeviceLibrary/assemblyLine/MoveEquip.cs
查看文件 @
6204a70
...
...
@@ -232,6 +232,10 @@ namespace OnlineStore.DeviceLibrary
CheckFixture
();
}
}
if
(
UseAxis
&&
runStatus
>=
LineRunStatus
.
Runing
)
{
CheckAxisAlarm
(
UpdownAxis
);
}
OutStoreListPro
();
}
...
...
source/DeviceLibrary/baan/AxisBean.cs
查看文件 @
6204a70
...
...
@@ -142,30 +142,39 @@ namespace OnlineStore.DeviceLibrary
{
return
true
;
}
//轴不报警时才重新运动,否则直接报警
int
alarm
=
AxisManager
.
instance
.
GetAlarmStatus
(
deviceName
,
axisNo
);
//判断是否需要重新运动
if
(
MoveInfo
.
CanWhileCount
>
0
)
if
(
alarm
.
Equals
(
1
))
{
msg
=
" "
+
MoveInfo
.
SLog
+
MoveInfo
.
Name
+
axis
.
DisplayStr
+
",目标位置["
+
targetPosition
+
"]当前位置["
+
outCount
+
"],误差过大且轴报警"
;
LogUtil
.
error
(
msg
,
600
);
}
else
if
(
MoveInfo
.
CanWhileCount
>
0
&&
alarm
.
Equals
(
0
))
{
string
clearMsg
=
""
;
//判断轴是否报警
if
(
MoveInfo
.
CanWhileCount
<=
3
)
{
int
isAlarm
=
AxisManager
.
instance
.
GetAlarmStatus
(
deviceName
,
axisNo
);
if
(
isAlarm
.
Equals
(
1
))
{
clearMsg
=
"清理报警,"
;
AxisManager
.
instance
.
AlarmClear
(
deviceName
,
axisNo
);
Thread
.
Sleep
(
200
);
AxisManager
.
instance
.
ServoOn
(
deviceName
,
axisNo
);
Thread
.
Sleep
(
500
);
}
}
//
//
判断轴是否报警
//
if (MoveInfo.CanWhileCount <= 3)
//
{
// int
isAlarm = AxisManager.instance.GetAlarmStatus(deviceName, axisNo);
//
if (isAlarm.Equals(1))
//
{
//
clearMsg = "清理报警,";
//
AxisManager.instance.AlarmClear(deviceName, axisNo);
//
Thread.Sleep(200);
//
AxisManager.instance.ServoOn(deviceName, axisNo);
//
Thread.Sleep(500);
// }
//
}
if
(
String
.
IsNullOrEmpty
(
clearMsg
))
{
{
AxisManager
.
instance
.
SuddenStop
(
axis
.
DeviceName
,
axis
.
GetAxisValue
());
Thread
.
Sleep
(
100
);
}
LogUtil
.
error
(
MoveInfo
.
Name
+
axis
.
DisplayStr
+
"目标位置["
+
targetPosition
+
"]当前位置["
+
outCount
+
"],误差过大,"
+
clearMsg
+
"重新开始运动,剩余["
+
MoveInfo
.
CanWhileCount
+
"]次"
);
"],误差过大,"
+
clearMsg
+
"重新开始运动,剩余["
+
MoveInfo
.
CanWhileCount
+
"]次"
);
AxisManager
.
instance
.
AbsMove
(
axis
.
DeviceName
,
axis
.
GetAxisValue
(),
targetPosition
,
targetSpeed
,
axis
.
AddSpeed
,
axis
.
DelSpeed
);
MoveInfo
.
CanWhileCount
--;
Thread
.
Sleep
(
200
);
...
...
@@ -192,6 +201,15 @@ namespace OnlineStore.DeviceLibrary
return
true
;
}
//判断是否需要重新运动
//轴不报警时才重新运动,否则直接报警
int
alarm
=
AxisManager
.
instance
.
GetAlarmStatus
(
axis
.
DeviceName
,
axis
.
GetAxisValue
());
//判断是否需要重新运动
if
(
alarm
.
Equals
(
1
))
{
msg
=
" "
+
MoveInfo
.
SLog
+
MoveInfo
.
Name
+
axis
.
DisplayStr
+
",收到原点完成信号,当前位置["
+
outCount
+
"],误差过大且轴报警"
;
LogUtil
.
error
(
msg
,
600
);
}
if
(
MoveInfo
.
CanWhileCount
>
0
)
{
LogUtil
.
error
(
MoveInfo
.
Name
+
axis
.
DisplayStr
+
"收到原点完成信号,当前位置["
+
outCount
+
"],重新回原点,剩余["
+
MoveInfo
.
CanWhileCount
+
"]次"
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论