|
@@ -11,82 +11,76 @@ using Aitex.Core.RT.SCCore;
|
|
|
using Aitex.Core.RT.Tolerance;
|
|
|
using Aitex.Core.Util;
|
|
|
using MECF.Framework.Common.Equipment;
|
|
|
+//using Venus_Core;
|
|
|
|
|
|
namespace Venus_RT.Devices
|
|
|
{
|
|
|
- public interface IoHeaterController
|
|
|
- {
|
|
|
- bool SetPowerOnOff(bool isOn);
|
|
|
- bool Ramp(float temp);
|
|
|
+ //public interface IoHeaterController
|
|
|
+ //{
|
|
|
+ // bool SetPowerOnOff(bool isOn);
|
|
|
+ // bool Ramp(float temp);
|
|
|
|
|
|
- float GetFeedback();
|
|
|
- float GetSetPoint();
|
|
|
- bool GetIsOn();
|
|
|
- }
|
|
|
+ // float GetFeedback();
|
|
|
+ // float GetSetPoint();
|
|
|
+ // bool GetIsOn();
|
|
|
+ //}
|
|
|
|
|
|
public class IoHeater : BaseDevice, IDevice
|
|
|
{
|
|
|
- public IoHeaterController Controller { get; set; }
|
|
|
+ //public IoHeaterController Controller { get; set; }
|
|
|
|
|
|
public double SetPointLimit
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
if (_aoSetPointLimit != null)
|
|
|
- //return _aoSetPointLimit.Value;
|
|
|
return _GetRealFloat(_aoSetPointLimit);
|
|
|
|
|
|
return 100;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //[Subscription(AITHeaterPropertyName.CoolantInletTempFeedback)]
|
|
|
- public float CoolantInletTcFeedback
|
|
|
- {
|
|
|
- get
|
|
|
- {
|
|
|
- if (_aiCoolantInletTempFeedback == null) return -1;
|
|
|
- //return _aiMonitorTcFeedback.Value;
|
|
|
- return _GetRealFloat(_aiCoolantInletTempFeedback);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ //public float CoolantInletTcFeedback
|
|
|
+ //{
|
|
|
+ // get
|
|
|
+ // {
|
|
|
+ // if (_aiCoolantInletTempFeedback == null) return -1;
|
|
|
+ // return _GetRealFloat(_aiCoolantInletTempFeedback);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
|
|
|
- //[Subscription(AITHeaterPropertyName.CoolantOutletTempFeedback)]
|
|
|
- public float CoolantOutletTcFeedback
|
|
|
- {
|
|
|
- get
|
|
|
- {
|
|
|
- if (_aiCoolantOutletTempFeedback == null) return -1;
|
|
|
- //return _aiMonitorTcFeedback.Value;
|
|
|
- return _GetRealFloat(_aiCoolantOutletTempFeedback);
|
|
|
- }
|
|
|
- }
|
|
|
+ //public float CoolantOutletTcFeedback
|
|
|
+ //{
|
|
|
+ // get
|
|
|
+ // {
|
|
|
+ // if (_aiCoolantOutletTempFeedback == null) return -1;
|
|
|
+ // return _GetRealFloat(_aiCoolantOutletTempFeedback);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
|
|
|
- //[Subscription(AITHeaterPropertyName.MonitorTcFeedback)]
|
|
|
- public float MonitorTcFeedback
|
|
|
- {
|
|
|
- get
|
|
|
- {
|
|
|
- if (_aiMonitorTcFeedback == null) return -1;
|
|
|
- //return _aiMonitorTcFeedback.Value;
|
|
|
- return _GetRealFloat(_aiMonitorTcFeedback);
|
|
|
- }
|
|
|
- }
|
|
|
+ //public float MonitorTcFeedback
|
|
|
+ //{
|
|
|
+ // get
|
|
|
+ // {
|
|
|
+ // if (_aiMonitorTcFeedback == null) return -1;
|
|
|
+ // return _GetRealFloat(_aiMonitorTcFeedback);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
|
|
|
- [Subscription(AITHeaterPropertyName.ControlTcFeedback)]
|
|
|
+ //[Subscription(AITHeaterPropertyName.ControlTcFeedback)]
|
|
|
public float ControlTcFeedback
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- if (Name == "ForelineHeater")
|
|
|
- {
|
|
|
- if (_aiControlTcFeedback == null) return -1;
|
|
|
- return _GetRealFloat(_aiControlTcFeedback);
|
|
|
- }
|
|
|
+ //if (Name == "ForelineHeater")
|
|
|
+ //{
|
|
|
+ // if (_aiControlTcFeedback == null) return -1;
|
|
|
+ // return _GetRealFloat(_aiControlTcFeedback);
|
|
|
+ //}
|
|
|
if (_aiControlTcFeedback == null) return -1;
|
|
|
float real = _GetRealFloat(_aiControlTcFeedback);
|
|
|
- return real - GetHeaterOffsetSetting(real - _offset);
|
|
|
+ return real;
|
|
|
+ //return real - GetHeaterOffsetSetting(real - _offset);
|
|
|
//return ((real - GetHeaterOffsetSetting(real - _offset)) >= ControlTcSetPoint - _offset) ? (real - _offset) : (real - GetHeaterOffsetSetting(real - _offset));
|
|
|
}
|
|
|
}
|
|
@@ -100,8 +94,8 @@ namespace Venus_RT.Devices
|
|
|
//return _aoSetPoint.Value;
|
|
|
return _GetRealFloat(_aoSetPoint);
|
|
|
|
|
|
- if (Controller != null)
|
|
|
- return Controller.GetSetPoint();
|
|
|
+ //if (Controller != null)
|
|
|
+ // return Controller.GetSetPoint();
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -109,7 +103,6 @@ namespace Venus_RT.Devices
|
|
|
{
|
|
|
if (_aoSetPoint != null)
|
|
|
{
|
|
|
- //_aoSetPoint.Value = (short)setpoint;
|
|
|
_SetRealFloat(_aoSetPoint, value);
|
|
|
}
|
|
|
}
|
|
@@ -156,10 +149,10 @@ namespace Venus_RT.Devices
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- if (Controller!=null)
|
|
|
- {
|
|
|
- return Controller.GetIsOn();
|
|
|
- }
|
|
|
+ //if (Controller != null)
|
|
|
+ //{
|
|
|
+ // return Controller.GetIsOn();
|
|
|
+ //}
|
|
|
|
|
|
if (_diPowerOnFeedback != null)
|
|
|
return _diPowerOnFeedback.Value;
|
|
@@ -190,6 +183,13 @@ namespace Venus_RT.Devices
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
+ set
|
|
|
+ {
|
|
|
+ if (_doPowerOn != null)
|
|
|
+ {
|
|
|
+ _doPowerOn.Value = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public string Unit { get; set; }
|
|
@@ -199,23 +199,23 @@ namespace Venus_RT.Devices
|
|
|
//private int _stageSet = 0;
|
|
|
private float _offset = 0f;
|
|
|
//private float _offsetSet = 0f;
|
|
|
- private readonly DIAccessor _diPowerOnFeedback;
|
|
|
- private readonly DIAccessor _diControlTcBroken;
|
|
|
- private readonly DIAccessor _diMonitorTcBroken;
|
|
|
- private readonly DIAccessor _diDeviation;
|
|
|
- private readonly DOAccessor _doPowerOn;
|
|
|
- private readonly AIAccessor _aiControlTcFeedback;
|
|
|
- private readonly AIAccessor _aiMonitorTcFeedback;
|
|
|
- private readonly AIAccessor _aiCoolantInletTempFeedback;
|
|
|
- private readonly AIAccessor _aiCoolantOutletTempFeedback;
|
|
|
- private readonly AOAccessor _aoSetPoint;
|
|
|
- private AOAccessor _aoSetPointLimit;
|
|
|
+ private readonly DIAccessor _diPowerOnFeedback;
|
|
|
+ private readonly DIAccessor _diControlTcBroken;
|
|
|
+ private readonly DIAccessor _diMonitorTcBroken;
|
|
|
+ private readonly DIAccessor _diDeviation;
|
|
|
+ private readonly DOAccessor _doPowerOn;
|
|
|
+ private readonly AIAccessor _aiControlTcFeedback;
|
|
|
+ //private readonly AIAccessor _aiMonitorTcFeedback;
|
|
|
+ //private readonly AIAccessor _aiCoolantInletTempFeedback;
|
|
|
+ //private readonly AIAccessor _aiCoolantOutletTempFeedback;
|
|
|
+ private readonly AOAccessor _aoSetPoint;
|
|
|
+ private AOAccessor _aoSetPointLimit;
|
|
|
private readonly SCConfigItem _scSetPointLimit;
|
|
|
|
|
|
private readonly R_TRIG _trigMonitorTcBroken = new R_TRIG();
|
|
|
private readonly R_TRIG _trigControlTcBroken = new R_TRIG();
|
|
|
private readonly R_TRIG _trigDeviation = new R_TRIG();
|
|
|
- private readonly R_TRIG _trigCHBWallOTSW = new R_TRIG();
|
|
|
+ //private readonly R_TRIG _trigCHBWallOTSW = new R_TRIG();
|
|
|
|
|
|
private SCConfigItem _scEnableToleranceCheck;
|
|
|
private SCConfigItem _scDeviationAlarmRange;
|
|
@@ -223,10 +223,10 @@ namespace Venus_RT.Devices
|
|
|
private SCConfigItem _scDeviationWarningRange;
|
|
|
private SCConfigItem _scDeviationWarningTime;
|
|
|
|
|
|
- private DeviceTimer _timerAlarm = new DeviceTimer();
|
|
|
- private DeviceTimer _timerWarning = new DeviceTimer();
|
|
|
- private readonly R_TRIG _trigWarning = new R_TRIG();
|
|
|
- private readonly R_TRIG _trigAlarm = new R_TRIG();
|
|
|
+ //private DeviceTimer _timerAlarm = new DeviceTimer();
|
|
|
+ //private DeviceTimer _timerWarning = new DeviceTimer();
|
|
|
+ //private readonly R_TRIG _trigWarning = new R_TRIG();
|
|
|
+ //private readonly R_TRIG _trigAlarm = new R_TRIG();
|
|
|
|
|
|
private ToleranceChecker _checkerWarning = new ToleranceChecker();
|
|
|
private ToleranceChecker _checkerAlarm = new ToleranceChecker();
|
|
@@ -234,6 +234,28 @@ namespace Venus_RT.Devices
|
|
|
private string HeaterDeviationAlarm = "HeaterDeviationAlarm";
|
|
|
private bool isinit;
|
|
|
|
|
|
+ private bool _isOn;
|
|
|
+
|
|
|
+ public bool IsOn
|
|
|
+ {
|
|
|
+ set
|
|
|
+ {
|
|
|
+ _isOn = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private float _TemperatureSetPoint;
|
|
|
+ public float TemperatureSetPoint
|
|
|
+ {
|
|
|
+ set
|
|
|
+ {
|
|
|
+ if (value != _TemperatureSetPoint)
|
|
|
+ {
|
|
|
+ RampTemp(value);
|
|
|
+ _TemperatureSetPoint = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public IoHeater(string module, XmlElement node, string ioModule = "")
|
|
|
{
|
|
@@ -244,18 +266,18 @@ namespace Venus_RT.Devices
|
|
|
|
|
|
Unit = node.GetAttribute("unit");
|
|
|
|
|
|
- _diPowerOnFeedback = ParseDiNode("diPowerOnFeedback", node, ioModule);
|
|
|
- _diControlTcBroken = ParseDiNode("diControlTcBroken", node, ioModule);
|
|
|
- _diMonitorTcBroken = ParseDiNode("diMonitorTcBroken", node, ioModule);
|
|
|
- _doPowerOn = ParseDoNode("doPowerOn", node, ioModule);
|
|
|
- _diDeviation = ParseDiNode("diDeviation", node, ioModule);
|
|
|
+ _diPowerOnFeedback = ParseDiNode("diPowerOnFeedback", node, ioModule);
|
|
|
+ _diControlTcBroken = ParseDiNode("diControlTcBroken", node, ioModule);
|
|
|
+ _diMonitorTcBroken = ParseDiNode("diMonitorTcBroken", node, ioModule);
|
|
|
+ _doPowerOn = ParseDoNode("doPowerOn", node, ioModule);
|
|
|
+ _diDeviation = ParseDiNode("diDeviation", node, ioModule);
|
|
|
_aiControlTcFeedback = ParseAiNode("aiFeedback", node, ioModule);
|
|
|
- _aiMonitorTcFeedback = ParseAiNode("aiMonitor", node, ioModule);
|
|
|
- _aiCoolantInletTempFeedback = ParseAiNode("aiCoolantInletTemp", node, ioModule);
|
|
|
- _aiCoolantOutletTempFeedback = ParseAiNode("aiCoolantOutletTemp", node, ioModule);
|
|
|
- _aoSetPoint = ParseAoNode("aoSetPoint", node, ioModule);
|
|
|
- _aoSetPointLimit = ParseAoNode("aoSetPointLimit", node, ioModule);
|
|
|
- _scSetPointLimit = ParseScNodeEx("scSetPointLimit", node, ioModule);
|
|
|
+ //_aiMonitorTcFeedback = ParseAiNode("aiMonitor", node, ioModule);
|
|
|
+ //_aiCoolantInletTempFeedback = ParseAiNode("aiCoolantInletTemp", node, ioModule);
|
|
|
+ //_aiCoolantOutletTempFeedback = ParseAiNode("aiCoolantOutletTemp", node, ioModule);
|
|
|
+ _aoSetPoint = ParseAoNode("aoSetPoint", node, ioModule);
|
|
|
+ _aoSetPointLimit = ParseAoNode("aoSetPointLimit", node, ioModule);
|
|
|
+ _scSetPointLimit = ParseScNodeEx("scSetPointLimit", node, ioModule);
|
|
|
}
|
|
|
|
|
|
//public void UpdateConfig(double setPointLimit)
|
|
@@ -270,22 +292,22 @@ namespace Venus_RT.Devices
|
|
|
{
|
|
|
AITHeaterData data = new AITHeaterData()
|
|
|
{
|
|
|
- Module = Module,
|
|
|
- DeviceName = Name,
|
|
|
+ Module = Module,
|
|
|
+ DeviceName = Name,
|
|
|
DeviceSchematicId = DeviceID,
|
|
|
- DisplayName = Display,
|
|
|
- FeedBack = ControlTcFeedback,
|
|
|
- MonitorTcFeedBack = MonitorTcFeedback,
|
|
|
- CoolantInletTcFeedback = CoolantInletTcFeedback,
|
|
|
- CoolantOutletTcFeedback = CoolantOutletTcFeedback,
|
|
|
- Scale = SetPointLimit,
|
|
|
- SetPoint = ControlTcSetPointView,
|
|
|
- IsPowerOn = IsPowerOnFeedback,
|
|
|
+ DisplayName = Display,
|
|
|
+ FeedBack = ControlTcFeedback,
|
|
|
+ //MonitorTcFeedBack = MonitorTcFeedback,
|
|
|
+ //CoolantInletTcFeedback = CoolantInletTcFeedback,
|
|
|
+ //CoolantOutletTcFeedback = CoolantOutletTcFeedback,
|
|
|
+ Scale = SetPointLimit,
|
|
|
+ SetPoint = ControlTcSetPoint,
|
|
|
+ IsPowerOn = IsPowerOnFeedback,
|
|
|
IsPowerOnSetPoint = IsPowerOnSetPoint,
|
|
|
IsControlTcBroken = IsControlTcBroken,
|
|
|
IsMonitorTcBroken = IsMonitorTcBroken,
|
|
|
- Unit = Unit,
|
|
|
- IsTcDeviation = IsTcDeviation,
|
|
|
+ Unit = Unit,
|
|
|
+ IsTcDeviation = IsTcDeviation,
|
|
|
};
|
|
|
|
|
|
return data;
|
|
@@ -301,7 +323,7 @@ namespace Venus_RT.Devices
|
|
|
|
|
|
OP.Subscribe($"{Module}.{Name}.{AITHeaterOperation.Ramp}", (functionName, param) =>
|
|
|
{
|
|
|
- float setpoint;
|
|
|
+ float setpoint;
|
|
|
float.TryParse((string)param[0], out setpoint);
|
|
|
if (!RampTemp(setpoint)) return false;
|
|
|
_controlTcSetPointView = setpoint;
|
|
@@ -323,19 +345,18 @@ namespace Venus_RT.Devices
|
|
|
|
|
|
public bool TurnOnOff(bool on)
|
|
|
{
|
|
|
- if (Controller!=null)
|
|
|
- {
|
|
|
- Controller.SetPowerOnOff(on);
|
|
|
+ //if (Controller != null)
|
|
|
+ //{
|
|
|
+ // Controller.SetPowerOnOff(on);
|
|
|
+ // return true;
|
|
|
+ //}
|
|
|
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
if (!_doPowerOn.SetValue(on, out string reason))
|
|
|
{
|
|
|
LOG.Write(eEvent.WARN_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), reason);
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
+ SC.SetItemValue($"{Module}.{Name}.IsOn", on);
|
|
|
LOG.Write(eEvent.INFO_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"Set Heater {Name} Power {(on ? "ON" : "OFF")}");
|
|
|
return true;
|
|
|
}
|
|
@@ -354,13 +375,15 @@ namespace Venus_RT.Devices
|
|
|
LOG.Write(eEvent.INFO_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"{Name} setpoint = {setpoint}, ignore temperature control");
|
|
|
return true;
|
|
|
}
|
|
|
+ SC.SetItemValue($"{Module}.{Name}.TemperatureSetPoint", setpoint);
|
|
|
|
|
|
- if (Controller != null)
|
|
|
- {
|
|
|
- return Controller.Ramp(setpoint);
|
|
|
- }
|
|
|
+ //if (Controller != null)
|
|
|
+ //{
|
|
|
+ // SC.SetItemValue($"{Module}.{Name}.TemperatureSetPoint", setpoint);
|
|
|
+ // return Controller.Ramp(setpoint);
|
|
|
+ //}
|
|
|
|
|
|
- _offset = GetHeaterOffsetSetting(setpoint);
|
|
|
+ //_offset = GetHeaterOffsetSetting(setpoint);
|
|
|
// offset 处理后的设定值
|
|
|
_controlTcSetPointView = setpoint;
|
|
|
if (Name == "ForelineHeater")
|
|
@@ -413,6 +436,9 @@ namespace Venus_RT.Devices
|
|
|
this.SetBySC(_aoSetPointLimit, _scSetPointLimit);
|
|
|
|
|
|
CheckDeviation();
|
|
|
+
|
|
|
+ TemperatureSetPoint = (float)SC.GetValue<double>($"{Module}.{Name}.TemperatureSetPoint");
|
|
|
+ IsPowerOnSetPoint = SC.GetValue<bool>($"{Module}.{Name}.IsOn");
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -425,22 +451,22 @@ namespace Venus_RT.Devices
|
|
|
if (!_scEnableToleranceCheck.BoolValue)
|
|
|
return;
|
|
|
|
|
|
- if (Controller != null && !Controller.GetIsOn())
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ //if (Controller != null && !Controller.GetIsOn())
|
|
|
+ //{
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
|
|
|
if (!IsPowerOnFeedback)
|
|
|
return;
|
|
|
|
|
|
- _checkerWarning.Monitor(ControlTcFeedback, ControlTcSetPointView - Math.Abs(_scDeviationWarningRange.IntValue)
|
|
|
- , ControlTcSetPoint + Math.Abs(_scDeviationWarningRange.IntValue),_scDeviationWarningTime.IntValue);
|
|
|
+ _checkerWarning.Monitor(ControlTcFeedback, ControlTcSetPoint - Math.Abs(_scDeviationWarningRange.IntValue)
|
|
|
+ , ControlTcSetPoint + Math.Abs(_scDeviationWarningRange.IntValue), _scDeviationWarningTime.IntValue);
|
|
|
if (_checkerWarning.Trig)
|
|
|
{
|
|
|
LOG.Write(eEvent.WARN_DEVICE_IO_HEATER, ModuleHelper.Converter(Module), $"{Name} temperature feedback deviation than {Math.Abs(_scDeviationWarningRange.IntValue)} from setpoint for {_scDeviationWarningTime.IntValue} seconds");
|
|
|
}
|
|
|
|
|
|
- _checkerAlarm.Monitor(ControlTcFeedback, ControlTcSetPointView - Math.Abs(_scDeviationAlarmRange.IntValue)
|
|
|
+ _checkerAlarm.Monitor(ControlTcFeedback, ControlTcSetPoint - Math.Abs(_scDeviationAlarmRange.IntValue)
|
|
|
, ControlTcSetPoint + Math.Abs(_scDeviationAlarmRange.IntValue), _scDeviationAlarmTime.IntValue);
|
|
|
if (_checkerAlarm.Trig)
|
|
|
{
|
|
@@ -469,30 +495,30 @@ namespace Venus_RT.Devices
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private float GetHeaterOffsetSetting(double val)
|
|
|
- {
|
|
|
- //if (SC.GetValue<bool>($"{Module}.BiasRf.EnableBiasRF")) return 0;
|
|
|
- //if (SC.GetValue<bool>($"{Module}.Chiller.EnableChiller")) return 0;
|
|
|
-
|
|
|
- int[] iTempPoint = new int[10];
|
|
|
- float[] fOffsetValue = new float[10];
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- for (int i = 1; i < 10; i++)
|
|
|
- {
|
|
|
- iTempPoint[i] = SC.GetValue<int>($"{Module}.{Name}.TempOffsetPoint_{i}");
|
|
|
- fOffsetValue[i] = (float)SC.GetValue<double>($"{Module}.{Name}.OffsetValue_{i}");
|
|
|
- if (val < iTempPoint[i])
|
|
|
- {
|
|
|
- return (fOffsetValue[i] - fOffsetValue[i - 1]) / (iTempPoint[i] - iTempPoint[i - 1]) * ((float)val - iTempPoint[i - 1]) + fOffsetValue[i - 1];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch
|
|
|
- { }
|
|
|
-
|
|
|
- return 0;
|
|
|
- }
|
|
|
+ //private float GetHeaterOffsetSetting(double val)
|
|
|
+ //{
|
|
|
+ // //if (SC.GetValue<bool>($"{Module}.BiasRf.EnableBiasRF")) return 0;
|
|
|
+ // //if (SC.GetValue<bool>($"{Module}.Chiller.EnableChiller")) return 0;
|
|
|
+
|
|
|
+ // int[] iTempPoint = new int[10];
|
|
|
+ // float[] fOffsetValue = new float[10];
|
|
|
+
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // for (int i = 1; i < 10; i++)
|
|
|
+ // {
|
|
|
+ // iTempPoint[i] = SC.GetValue<int>($"{Module}.{Name}.TempOffsetPoint_{i}");
|
|
|
+ // fOffsetValue[i] = (float)SC.GetValue<double>($"{Module}.{Name}.OffsetValue_{i}");
|
|
|
+ // if (val < iTempPoint[i])
|
|
|
+ // {
|
|
|
+ // return (fOffsetValue[i] - fOffsetValue[i - 1]) / (iTempPoint[i] - iTempPoint[i - 1]) * ((float)val - iTempPoint[i - 1]) + fOffsetValue[i - 1];
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // catch
|
|
|
+ // { }
|
|
|
+
|
|
|
+ // return 0;
|
|
|
+ //}
|
|
|
}
|
|
|
}
|