using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Runtime.Serialization; using System.Text; using System.Windows.Input; using Aitex.Core.UI.MVVM; using MECF.Framework.Common.CommonData; namespace Aitex.Core.Common.DeviceData { [DataContract] [Serializable] public class AITHeaterData : NotifiableItem, IDeviceData { [DataMember] public string UniqueName { get; set; } [DataMember] public string Module { get; set; } [DataMember] public string DeviceName { get; set; } [DataMember] public string DisplayName { get; set; } [DataMember] public string DeviceSchematicId { get; set; } [DataMember] public string Unit { get; set; } [DataMember] public string Description { get; set; } [DataMember] public double Scale { get; set; } [DataMember] public double SetPoint { get; set; } [DataMember] public double RawFeedBack { get; set; } [DataMember] public double OverTemp { get; set; } [DataMember] public double OverTempScale { get; set; } [DataMember] public bool IsTempLmtError { get; set; } [DataMember] public bool IsOverTempError { get; set; } [DataMember] public double CascadePV { get; set; }//经过Profile table和offset table校正之后的值 [DataMember] public double HeaterPV { get; set; }//经过Profile table和offset table校正之后的值 [DataMember] public double FeedBack { get; set; }//经过Profile table和offset table校正之后的值 [DataMember] public double SetPointFb { get; set; }//设置值对应的反馈值 [DataMember] public double DefaultValue { get; set; } [DataMember] public double DefaultSetPoint { get; set; } [DataMember] public double UpRateSetPoint { get; set; } [DataMember] public double DownRateSetPoint { get; set; } [DataMember] public bool IsWarning { get; set; } [DataMember] public bool IsAlarm { get; set; } [DataMember] public string ErroMessage { get; set; } [DataMember] public string Type { get; set; } [DataMember] public double Factor { get; set; } [DataMember] public bool IsRemoteMode { get; set; }//Local Remote模式设定。 [DataMember] public int ControlMode { get; set; }//Paddle模式控温。 [DataMember] public double Ramping { get; set; } [DataMember] public double CascadePID_P { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double CascadePID_I { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double CascadePID_D { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double HeaterPID_P { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double HeaterPID_I { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double HeaterPID_D { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double ProportioningSetPoint { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double ProportioningFeedBack { get; set; }//PID--P(Proportioning),比例动作 [DataMember] public double IntegralSetPoint { get; set; }//PID--I(Integral),积分动作或复位动作 [DataMember] public double IntegralFeedBack { get; set; }//PID--I(Integral),积分动作或复位动作 [DataMember] public double DerivativeSetPoint { get; set; }//PID--D(Derivative),微分动作或比率动作 [DataMember] public double DerivativeFeedBack { get; set; }//PID--D(Derivative),微分动作或比率动作 [DataMember] public double ProcessVariable { get; set; }//PV Process Variable(过程值),热电偶、热电阻、线性输入等的测量值。 [DataMember] public double LocalSetPoint { get; set; }//LSP Local Set Point(本地设定点),存储在调节器中的设定值 [DataMember] public double ManipulatedVariable { get; set; }//MV Manipulated Variable(操作变量),是执行控制的仪表的输出,表示PID的运算结果 [DataMember] public double LspIncreaseRampRateSetPoint { get; set; }//LSP用SP斜坡上升斜率 [DataMember] public double LspIncreaseRampRateFeedBack { get; set; }//LSP用SP斜坡上升斜率 [DataMember] public double LspDecreaseRampRateSetPoint { get; set; }//LSP用SP斜坡下降斜率 [DataMember] public double LspDecreaseRampRateFeedBack { get; set; }//LSP用SP斜坡下降斜率 [DataMember] public double RspIncreaseRampRateSetPoint { get; set; }//RSP用SP斜坡上升斜率 [DataMember] public double RspIncreaseRampRateFeedBack { get; set; }//RSP用SP斜坡上升斜率 [DataMember] public double RspDecreaseRampRateSetPoint { get; set; }//RSP用SP斜坡下降斜率 [DataMember] public double RspDecreaseRampRateFeedBack { get; set; }//RSP用SP斜坡下降斜率 [DataMember] public bool IsAutoTuningSetPoint { get; set; }//自动调整PID的最佳参数。 [DataMember] public bool IsAutoTuningFeedBack { get; set; }//自动调整PID的最佳参数。 [DataMember] public bool IsLspModeSetPoint { get; set; }//LSP RSP模式设定。 [DataMember] public bool IsLspModeFeedBack { get; set; }//LSP RSP模式设定。 [DataMember] public bool IsAutoMode { get; set; }//和manual对应,把PID的运算结果作为操作量的自动运行状态。 manual-把操作者的手动操作所设定的值作为操作量的手动运行状态。 [DataMember] public bool IsRun { get; set; }//和Ready对应,执行控制运算的状态。ready--控制运算处于停止的待机状态 [DataMember] public double TempFeedback { get; set; } [DataMember] public double RampSetPoint { get; set; } [DataMember] public string ProfileTable { get; set; } [DataMember] public string CorrectTable { get; set; } [DataMember] public string PIDTable { get; set; } [DataMember] public string ControlModeSetpoint { get; set; } [DataMember] public string AlarmWatchTable { get; set; } public RampUnit RampUnit { get; set; } [DataMember] public double ProfileTotalTime { get; set; } [DataMember] public double ProfilePreheatTime { get; set; } [DataMember] public double ProfileCheckTime { get; set; } [DataMember] public double ProfileCheckLimit { get; set; } [DataMember] public double ProfileAlarmLimit { get; set; } [DataMember] public double ProfileResult { get; set; } [DataMember] public bool IsProfiling { get; set; } public string ControlModeDisplay { get { if (ControlMode == 1) return "Heater control"; if (ControlMode == 2) return "Furnace Diect control"; return "Furnace control"; } } [DataMember] public string ProfileStatus { get; set; } [DataMember] public bool IsCascadePVBreak { get; set; } [DataMember] public bool IsHeaterPVBreak { get; set; } [DataMember] public bool IsPowerOn { get; set; } [DataMember] public bool IsPowerOnSetPoint { get; set; } [DataMember] public bool IsControlTcBroken { get; set; } [DataMember] public bool IsMonitorTcBroken { get; set; } [DataMember] public double MonitorTcFeedBack { get; set; } //for the PID control type [DataMember] public Dictionary AttrValue { get; set; } public string Display { get { string value = FeedBack.ToString(FormatString); return DisplayWithUnit ? value + " " + Unit : value; } } [DataMember] public string FormatString { get; set; } [DataMember] public bool DisplayWithUnit { get; set; } [DataMember] public bool EnableOutput { get; set; } public AITHeaterData() { DisplayName = "Undefined"; Factor = 1.0; Unit = "℃"; Type = "Heater"; FormatString = "F2"; AttrValue = new Dictionary(); } public void Update(IDeviceData data) { throw new NotImplementedException(); } } public class AITHeaterOperation { public const string Ramp = "Ramp"; public const string SetPowerOnOff = "SetPowerOnOff"; } public class AITHeaterPropertyName { public const string ControlTcFeedback = "ControlTcFeedback"; public const string MonitorTcFeedback = "MonitorTcFeedback"; public const string ControlTcSetPoint = "ControlTcSetPoint"; public const string IsControlTcBroken = "IsControlTcBroken"; public const string IsMonitorTcBroken = "IsMonitorTcBroken"; public const string IsPowerOnFeedback = "IsPowerOnFeedback"; public const string IsPowerOnSetPoint = "IsPowerOnSetPoint"; public const string IsTemperatureAlarm = "IsTemperatureAlarm"; } public enum RampUnit { degreePerSec = 1, degreePerMin, degreePerHour, } }