Sic.Framework/MECF.Framework.RT.Equipment.../PmDevices/IoSHArH2Switch.cs

150 lines
5.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Devices;
using Aitex.Core.RT.Device.Unit;
using Aitex.Core.RT.Log;
using Aitex.Core.RT.OperationCenter;
using Aitex.Core.Util;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using static Aitex.Core.RT.Device.PmDevices.DicMode;
namespace Aitex.Core.RT.Device.PmDevices
{
public class IoSHArH2Switch : BaseDevice, IDevice
{
private IValve _valve1;
private IValve _valve2;
private IValve _valve3;
private IValve _valve4;
//private IValve _valve5;
//private IValve _valve6;
private int _openValveInfo = 1;
private DeviceTimer _timer = new DeviceTimer();
public IoSHArH2Switch(string module, XmlElement node, string ioModule = "")
{
var attrModule = node.GetAttribute("module");
base.Module = string.IsNullOrEmpty(attrModule) ? module : attrModule;
base.Name = node.GetAttribute("id");
base.Display = node.GetAttribute("display");
base.DeviceID = node.GetAttribute("schematicId");
_valve1 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve1")}") as IValve;
_valve2 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve2")}") as IValve;
_valve3 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve3")}") as IValve;
_valve4 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve4")}") as IValve;
//_valve5 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve5")}") as IValve;
//_valve6 = DEVICE.GetDevice($"{Module}.{node.GetAttribute("valve6")}") as IValve;
Debug.Assert(_valve1 != null, $"Valve setting not valid");
Debug.Assert(_valve2 != null, $"Valve setting not valid");
Debug.Assert(_valve3 != null, $"Valve setting not valid");
Debug.Assert(_valve4 != null, $"Valve setting not valid");
//Debug.Assert(_valve5 != null, $"Valve setting not valid");
//Debug.Assert(_valve6 != null, $"Valve setting not valid");
}
public bool Initialize()
{
OP.Subscribe($"{Module}.{Name}.SetValve", SetValve);
return true;
}
private bool SetValve(out string reason, int time, object[] param)
{
return SetValve(out reason, param[0].ToString());
}
public bool SetValve(out string reason, string arH2Switch)
{
reason = string.Empty;
ArH2Switch gas = (ArH2Switch)Enum.Parse(typeof(ArH2Switch), arH2Switch, true);
switch (gas)
{
case ArH2Switch.Ar:
if (!_valve1.TurnValve(false, out reason))
return false;
if (!_valve2.TurnValve(true, out reason))
return false;
if (!_valve3.TurnValve(true, out reason))
return false;
if (!_valve4.TurnValve(true, out reason))
return false;
//if (!_valve5.TurnValve(false, out reason))
// return false;
//if (!_valve6.TurnValve(true, out reason)) //放到定时器延迟处理防止InterLock
// return false;
_openValveInfo = 2;
break;
case ArH2Switch.H2:
if (!_valve1.TurnValve(true, out reason))
return false;
if (!_valve2.TurnValve(false, out reason))
return false;
if (!_valve3.TurnValve(true, out reason))
return false;
if (!_valve4.TurnValve(true, out reason))
return false;
//if (!_valve5.TurnValve(true, out reason))//放到定时器延迟处理防止InterLock
// return false;
//if (!_valve6.TurnValve(false, out reason))
// return false;
_openValveInfo = 1;
break;
default:
break;
}
//_timer.Start(600);
return true;
}
public void Terminate()
{
}
public void Monitor()
{
try
{
//if (_timer.IsTimeout())
//{
// _timer.Stop();
// if (_openValveInfo == 1)
// {
// _valve5.TurnValve(true, out string reason);
// }
// else if (_openValveInfo == 2)
// {
// _valve6.TurnValve(true, out string reason);
// }
//}
}
catch (Exception ex)
{
LOG.Write(ex);
}
}
public void Reset()
{
}
}
}