344 lines
9.4 KiB
C#
344 lines
9.4 KiB
C#
using MECF.Framework.Common.Communications;
|
|
|
|
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TurboPumps.PfeifferHipace
|
|
{
|
|
public abstract class HipaceHandler : HandlerBase
|
|
{
|
|
protected const string QueryDataText = "=?";
|
|
|
|
public HipaceTurboPump PumpDevice { get; }
|
|
|
|
protected HipaceHandler(HipaceTurboPump pump, string deviceAddress, bool isQuery, string parameter, string data)
|
|
: base(BuildMessage(deviceAddress, isQuery, parameter, data))
|
|
{
|
|
PumpDevice = pump;
|
|
}
|
|
|
|
private static string BuildMessage(string deviceAddress, bool isQuery, string parameter, string data)
|
|
{
|
|
string msg = deviceAddress + (isQuery ? "00" : "10") + parameter + data.Length.ToString("D2") + data;
|
|
|
|
return msg + CalcSum(msg).ToString("D3") + "\r";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
return true;
|
|
}
|
|
|
|
private static int CalcSum(string value)
|
|
{
|
|
int sum = 0;
|
|
foreach (var item in value)
|
|
{
|
|
sum += (int)item;
|
|
}
|
|
|
|
return sum % 256;
|
|
}
|
|
}
|
|
|
|
//010
|
|
public class HipacePumpStationHandler : HipaceHandler
|
|
{
|
|
public HipacePumpStationHandler(HipaceTurboPump pump, string deviceAddress, bool isOn, bool isQuery)
|
|
: base(pump, deviceAddress, isQuery, "010", isQuery ? QueryDataText : (isOn ? "111111" : "000000"))
|
|
{
|
|
Name = "Pump " + (isOn ? "On" : "Off");
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (result.Data == "111111")
|
|
{
|
|
PumpDevice.NoteOnOff(true);
|
|
}
|
|
else if (result.Data == "000000")
|
|
{
|
|
PumpDevice.NoteOnOff(false);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + " format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//023
|
|
public class HipaceMotorPumpHandler : HipaceHandler
|
|
{
|
|
public HipaceMotorPumpHandler(HipaceTurboPump pump, string deviceAddress, bool isOn)
|
|
: base(pump, deviceAddress, false, "023", isOn ? "111111" : "000000")
|
|
{
|
|
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (result.Data == "111111")
|
|
{
|
|
PumpDevice.NoteOnOff(true);
|
|
}
|
|
else if (result.Data == "000000")
|
|
{
|
|
PumpDevice.NoteOnOff(false);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//303
|
|
public class HipaceQueryErrorHandler : HipaceHandler
|
|
{
|
|
public HipaceQueryErrorHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "303", QueryDataText)
|
|
{
|
|
Name = "Query Error";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (int.TryParse(result.Data, out int code))
|
|
{
|
|
PumpDevice.SetErrorCode(code);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//398
|
|
public class HipaceQuerySpeedHandler : HipaceHandler
|
|
{
|
|
public HipaceQuerySpeedHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "398", QueryDataText)
|
|
{
|
|
Name = "Query Speed";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (int.TryParse(result.Data, out int value))
|
|
{
|
|
PumpDevice.SetSpeed(value);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//346
|
|
public class HipaceQueryTemperatureHandler : HipaceHandler
|
|
{
|
|
public HipaceQueryTemperatureHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "346", QueryDataText)
|
|
{
|
|
Name = "Query Temperature";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (int.TryParse(result.Data, out int value))
|
|
{
|
|
PumpDevice.SetTemperature(value);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
//307
|
|
public class HipaceAccelerateHandler : HipaceHandler
|
|
{
|
|
public HipaceAccelerateHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "307", QueryDataText)
|
|
{
|
|
Name = "Query Accelerate";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (result.Data == "111111")
|
|
{
|
|
PumpDevice.SetIsAccelerate(true);
|
|
}
|
|
else if (result.Data == "000000")
|
|
{
|
|
PumpDevice.SetIsAccelerate(false);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//306
|
|
public class HipaceAtSpeedHandler : HipaceHandler
|
|
{
|
|
public HipaceAtSpeedHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "306", QueryDataText)
|
|
{
|
|
Name = "Query At Speed";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (result.Data == "111111")
|
|
{
|
|
PumpDevice.SetAtSpeed(true);
|
|
}
|
|
else if (result.Data == "000000")
|
|
{
|
|
PumpDevice.SetAtSpeed(false);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//305
|
|
public class HipaceOverTempHandler : HipaceHandler
|
|
{
|
|
public HipaceOverTempHandler(HipaceTurboPump pump, string deviceAddress)
|
|
: base(pump, deviceAddress, true, "305", QueryDataText)
|
|
{
|
|
Name = "Query over temp";
|
|
}
|
|
|
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|
{
|
|
var result = msg as HipaceMessage;
|
|
if (result.IsError)
|
|
{
|
|
PumpDevice.SetError(result.Data);
|
|
}
|
|
else
|
|
{
|
|
if (result.Data == "111111")
|
|
{
|
|
PumpDevice.SetOverTemp(true);
|
|
}
|
|
else if (result.Data == "000000")
|
|
{
|
|
PumpDevice.SetOverTemp(false);
|
|
}
|
|
else
|
|
{
|
|
PumpDevice.SetError(result.Data + "format error");
|
|
}
|
|
}
|
|
|
|
ResponseMessage = msg;
|
|
handled = true;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|