Commit 3a88735d 刘韬

1

1 个父辈 c60ccbf4
......@@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace DeviceLibrary
{
public class LiftMonitor :ISafetyDevice
public class LiftMonitor : ISafetyDevice
{
string up;
string down;
......@@ -18,20 +18,26 @@ namespace DeviceLibrary
int upspeed;
int downspeed;
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;
down = _down;
axisBean = _axisBean;
upspeed = _upspeed;
axisbreak = _break;
downspeed = _downspeed;
if (downspeed == 0) {
StrokeLength = _StrokeLength;
if (downspeed == 0)
{
downspeed = upspeed;
}
SafetyDevice.AddDevice(this);
}
public bool isAtTOP {
get {
public bool isAtTOP
{
get
{
return IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH);
}
}
......@@ -42,27 +48,57 @@ namespace DeviceLibrary
return IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH);
}
}
public void LiftUp(MoveInfo moveInfo) {
public void LiftUp(MoveInfo moveInfo)
{
if (moveInfo == null)
moveInfo = new MoveInfo("界面",false);
if (IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH)) {
moveInfo = new MoveInfo("界面", false);
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},已在位置,无需上升");
return;
}
IOManager.IOMove(axisbreak,IO_VALUE.HIGH);
if (!axisBean.IsServeoOn)
axisBean.Open(true, out string msg);
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.HIGH);
Thread.Sleep(200);
}
axisBean.RelMove(StrokeLength, (double)upspeed);
DateTime d = DateTime.Now;
moveInfo.log($"{axisBean.AxisName},LiftUp");
if(moveInfo!=null)
if (moveInfo != null)
moveInfo.WaitList.Add(WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitUp), $"等待顶升[{axisBean.Config.Explain}]机构上升"));
Task.Run(()=> {
while (!IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH)) {
Task.Run(() => {
while (!IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH))
{
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();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
var t = (DateTime.Now - d).TotalSeconds;
moveInfo.log($"{axisBean.AxisName},上升到位,s:{t}");
});
......@@ -72,12 +108,19 @@ namespace DeviceLibrary
if (IOManager.IOValue(up.ToString()).Equals(IO_VALUE.HIGH))
{
axisBean.SuddenStop();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
return true;
}
if (!axisBean.IsBusy) {
axisBean.RelMove(StrokeLength, (double)upspeed);
if (!axisBean.IsBusy)
{
LogUtil.info("恢复继续上升");
LiftUp(null);
}
return false;
}
......@@ -85,13 +128,24 @@ namespace DeviceLibrary
{
if (moveInfo == null)
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))
{
moveInfo.log($"{axisBean.AxisName},已在位置,无需下降");
return;
}
if (!axisBean.IsServeoOn)
axisBean.Open(true, out string msg);
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.HIGH);
Thread.Sleep(200);
}
axisBean.RelMove(-StrokeLength, (double)downspeed);
DateTime d = DateTime.Now;
moveInfo.log($"{axisBean.AxisName},LiftDown");
......@@ -102,9 +156,24 @@ namespace DeviceLibrary
while (!IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH))
{
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();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
var t = (DateTime.Now - d).TotalSeconds;
moveInfo.log($"{axisBean.AxisName},下降到位,s:{t}");
});
......@@ -114,25 +183,38 @@ namespace DeviceLibrary
if (IOManager.IOValue(down.ToString()).Equals(IO_VALUE.HIGH))
{
axisBean.SuddenStop();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
return true;
}
if (!axisBean.IsBusy)
{
axisBean.RelMove(-StrokeLength, (double)downspeed);
LogUtil.info("恢复继续下降");
LiftDown(null);
}
return false;
}
public void Pause()
{
paused = true;
axisBean.SuddenStop();
if (!string.IsNullOrEmpty(axisbreak))
{
IOManager.IOMove(axisbreak, IO_VALUE.LOW);
axisBean.ServoOff();
}
}
public void Resume()
{
// throw new NotImplementedException();
//throw new NotImplementedException();
}
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!