Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
MIMO
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 3a88735d
由
刘韬
编写于
2022-10-25 10:34:00 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
c60ccbf4
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
107 行增加
和
25 行删除
DeviceLibrary/DeviceLibrary/LiftMonitor.cs
DeviceLibrary/DeviceLibrary/LiftMonitor.cs
查看文件 @
3a88735
...
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
...
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace
DeviceLibrary
namespace
DeviceLibrary
{
{
public
class
LiftMonitor
:
ISafetyDevice
public
class
LiftMonitor
:
ISafetyDevice
{
{
string
up
;
string
up
;
string
down
;
string
down
;
...
@@ -18,20 +18,26 @@ namespace DeviceLibrary
...
@@ -18,20 +18,26 @@ namespace DeviceLibrary
int
upspeed
;
int
upspeed
;
int
downspeed
;
int
downspeed
;
int
StrokeLength
=
270000
;
int
StrokeLength
=
270000
;
public
LiftMonitor
(
string
_up
,
string
_down
,
string
_break
,
AxisBean
_axisBean
,
int
_upspeed
,
int
_downspeed
=
0
)
{
bool
paused
=
false
;
public
LiftMonitor
(
string
_up
,
string
_down
,
string
_break
,
AxisBean
_axisBean
,
int
_StrokeLength
,
int
_upspeed
,
int
_downspeed
=
0
)
{
up
=
_up
;
up
=
_up
;
down
=
_down
;
down
=
_down
;
axisBean
=
_axisBean
;
axisBean
=
_axisBean
;
upspeed
=
_upspeed
;
upspeed
=
_upspeed
;
axisbreak
=
_break
;
axisbreak
=
_break
;
downspeed
=
_downspeed
;
downspeed
=
_downspeed
;
if
(
downspeed
==
0
)
{
StrokeLength
=
_StrokeLength
;
if
(
downspeed
==
0
)
{
downspeed
=
upspeed
;
downspeed
=
upspeed
;
}
}
SafetyDevice
.
AddDevice
(
this
);
SafetyDevice
.
AddDevice
(
this
);
}
}
public
bool
isAtTOP
{
public
bool
isAtTOP
get
{
{
get
{
return
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
);
return
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
);
}
}
}
}
...
@@ -42,27 +48,57 @@ namespace DeviceLibrary
...
@@ -42,27 +48,57 @@ namespace DeviceLibrary
return
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
);
return
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
);
}
}
}
}
public
void
LiftUp
(
MoveInfo
moveInfo
)
{
public
void
LiftUp
(
MoveInfo
moveInfo
)
{
if
(
moveInfo
==
null
)
if
(
moveInfo
==
null
)
moveInfo
=
new
MoveInfo
(
"界面"
,
false
);
moveInfo
=
new
MoveInfo
(
"界面"
,
false
);
if
(
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
IOManager
.
IOValue
(
IO_Type
.
SuddenStop_BTN
).
Equals
(
IO_VALUE
.
LOW
))
{
moveInfo
.
log
(
$
"急停未解除"
);
return
;
}
paused
=
false
;
if
(
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
moveInfo
.
log
(
$
"{axisBean.AxisName},已在位置,无需上升"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},已在位置,无需上升"
);
return
;
return
;
}
}
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
HIGH
);
if
(!
axisBean
.
IsServeoOn
)
Thread
.
Sleep
(
200
);
axisBean
.
Open
(
true
,
out
string
msg
);
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
HIGH
);
Thread
.
Sleep
(
200
);
}
axisBean
.
RelMove
(
StrokeLength
,
(
double
)
upspeed
);
axisBean
.
RelMove
(
StrokeLength
,
(
double
)
upspeed
);
DateTime
d
=
DateTime
.
Now
;
DateTime
d
=
DateTime
.
Now
;
moveInfo
.
log
(
$
"{axisBean.AxisName},LiftUp"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},LiftUp"
);
if
(
moveInfo
!=
null
)
if
(
moveInfo
!=
null
)
moveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAction
(
new
Func
<
WaitResultInfo
,
bool
>(
WaitUp
),
$
"等待顶升[{axisBean.Config.Explain}]机构上升"
));
moveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAction
(
new
Func
<
WaitResultInfo
,
bool
>(
WaitUp
),
$
"等待顶升[{axisBean.Config.Explain}]机构上升"
));
Task
.
Run
(()=>
{
Task
.
Run
(()
=>
{
while
(!
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
while
(!
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
Task
.
Delay
(
30
);
Task
.
Delay
(
30
);
if
(
paused
)
{
paused
=
false
;
return
;
}
if
(
IOManager
.
IOValue
(
IO_Type
.
SuddenStop_BTN
).
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
info
(
"设备急停"
);
Pause
();
return
;
}
}
}
axisBean
.
SuddenStop
();
axisBean
.
SuddenStop
();
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
axisBean
.
ServoOff
();
}
var
t
=
(
DateTime
.
Now
-
d
).
TotalSeconds
;
var
t
=
(
DateTime
.
Now
-
d
).
TotalSeconds
;
moveInfo
.
log
(
$
"{axisBean.AxisName},上升到位,s:{t}"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},上升到位,s:{t}"
);
});
});
...
@@ -72,12 +108,19 @@ namespace DeviceLibrary
...
@@ -72,12 +108,19 @@ namespace DeviceLibrary
if
(
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOManager
.
IOValue
(
up
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
{
axisBean
.
SuddenStop
();
axisBean
.
SuddenStop
();
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
return
true
;
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
axisBean
.
ServoOff
();
}
return
true
;
}
}
if
(!
axisBean
.
IsBusy
)
{
if
(!
axisBean
.
IsBusy
)
axisBean
.
RelMove
(
StrokeLength
,
(
double
)
upspeed
);
{
LogUtil
.
info
(
"恢复继续上升"
);
LiftUp
(
null
);
}
}
return
false
;
return
false
;
}
}
...
@@ -85,13 +128,24 @@ namespace DeviceLibrary
...
@@ -85,13 +128,24 @@ namespace DeviceLibrary
{
{
if
(
moveInfo
==
null
)
if
(
moveInfo
==
null
)
moveInfo
=
new
MoveInfo
(
"界面"
,
false
);
moveInfo
=
new
MoveInfo
(
"界面"
,
false
);
if
(
IOManager
.
IOValue
(
IO_Type
.
SuddenStop_BTN
).
Equals
(
IO_VALUE
.
LOW
))
{
moveInfo
.
log
(
$
"急停未解除"
);
return
;
}
paused
=
false
;
if
(
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
{
moveInfo
.
log
(
$
"{axisBean.AxisName},已在位置,无需下降"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},已在位置,无需下降"
);
return
;
return
;
}
}
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
HIGH
);
if
(!
axisBean
.
IsServeoOn
)
Thread
.
Sleep
(
200
);
axisBean
.
Open
(
true
,
out
string
msg
);
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
HIGH
);
Thread
.
Sleep
(
200
);
}
axisBean
.
RelMove
(-
StrokeLength
,
(
double
)
downspeed
);
axisBean
.
RelMove
(-
StrokeLength
,
(
double
)
downspeed
);
DateTime
d
=
DateTime
.
Now
;
DateTime
d
=
DateTime
.
Now
;
moveInfo
.
log
(
$
"{axisBean.AxisName},LiftDown"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},LiftDown"
);
...
@@ -102,9 +156,24 @@ namespace DeviceLibrary
...
@@ -102,9 +156,24 @@ namespace DeviceLibrary
while
(!
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
while
(!
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
{
Task
.
Delay
(
30
);
Task
.
Delay
(
30
);
if
(
paused
)
{
paused
=
false
;
return
;
}
if
(
IOManager
.
IOValue
(
IO_Type
.
SuddenStop_BTN
).
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
info
(
"设备急停"
);
Pause
();
return
;
}
}
}
axisBean
.
SuddenStop
();
axisBean
.
SuddenStop
();
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
axisBean
.
ServoOff
();
}
var
t
=
(
DateTime
.
Now
-
d
).
TotalSeconds
;
var
t
=
(
DateTime
.
Now
-
d
).
TotalSeconds
;
moveInfo
.
log
(
$
"{axisBean.AxisName},下降到位,s:{t}"
);
moveInfo
.
log
(
$
"{axisBean.AxisName},下降到位,s:{t}"
);
});
});
...
@@ -114,25 +183,38 @@ namespace DeviceLibrary
...
@@ -114,25 +183,38 @@ namespace DeviceLibrary
if
(
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOManager
.
IOValue
(
down
.
ToString
()).
Equals
(
IO_VALUE
.
HIGH
))
{
{
axisBean
.
SuddenStop
();
axisBean
.
SuddenStop
();
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
axisBean
.
ServoOff
();
}
return
true
;
return
true
;
}
}
if
(!
axisBean
.
IsBusy
)
if
(!
axisBean
.
IsBusy
)
{
{
axisBean
.
RelMove
(-
StrokeLength
,
(
double
)
downspeed
);
LogUtil
.
info
(
"恢复继续下降"
);
LiftDown
(
null
);
}
}
return
false
;
return
false
;
}
}
public
void
Pause
()
public
void
Pause
()
{
{
paused
=
true
;
axisBean
.
SuddenStop
();
axisBean
.
SuddenStop
();
if
(!
string
.
IsNullOrEmpty
(
axisbreak
))
{
IOManager
.
IOMove
(
axisbreak
,
IO_VALUE
.
LOW
);
axisBean
.
ServoOff
();
}
}
}
public
void
Resume
()
public
void
Resume
()
{
{
//
throw new NotImplementedException();
//
throw new NotImplementedException();
}
}
}
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论