AITHeaterData.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Runtime.Serialization;
  7. using System.Text;
  8. using System.Windows.Input;
  9. using Aitex.Core.UI.MVVM;
  10. using MECF.Framework.Common.CommonData;
  11. namespace Aitex.Core.Common.DeviceData
  12. {
  13. [DataContract]
  14. [Serializable]
  15. public class AITHeaterData : NotifiableItem, IDeviceData
  16. {
  17. [DataMember]
  18. public string UniqueName { get; set; }
  19. [DataMember]
  20. public string Module { get; set; }
  21. [DataMember]
  22. public string DeviceName { get; set; }
  23. [DataMember]
  24. public string DisplayName { get; set; }
  25. [DataMember]
  26. public string DeviceSchematicId { get; set; }
  27. [DataMember]
  28. public string Unit { get; set; }
  29. [DataMember]
  30. public string Description { get; set; }
  31. [DataMember]
  32. public double Scale { get; set; }
  33. [DataMember]
  34. public double SetPoint { get; set; }
  35. [DataMember]
  36. public double RawFeedBack { get; set; }
  37. [DataMember]
  38. public double OverTemp { get; set; }
  39. [DataMember]
  40. public double OverTempScale { get; set; }
  41. [DataMember]
  42. public bool IsTempLmtError { get; set; }
  43. [DataMember]
  44. public bool IsOverTempError { get; set; }
  45. [DataMember]
  46. public double CascadePV { get; set; }//经过Profile table和offset table校正之后的值
  47. [DataMember]
  48. public double HeaterPV { get; set; }//经过Profile table和offset table校正之后的值
  49. [DataMember]
  50. public double FeedBack { get; set; }//经过Profile table和offset table校正之后的值
  51. [DataMember]
  52. public double SetPointFb { get; set; }//设置值对应的反馈值
  53. [DataMember]
  54. public double DefaultValue { get; set; }
  55. [DataMember]
  56. public double DefaultSetPoint { get; set; }
  57. [DataMember]
  58. public double UpRateSetPoint { get; set; }
  59. [DataMember]
  60. public double DownRateSetPoint { get; set; }
  61. [DataMember]
  62. public bool IsWarning { get; set; }
  63. [DataMember]
  64. public bool IsAlarm { get; set; }
  65. [DataMember]
  66. public string ErroMessage { get; set; }
  67. [DataMember]
  68. public string Type { get; set; }
  69. [DataMember]
  70. public double Factor { get; set; }
  71. [DataMember]
  72. public bool IsRemoteMode { get; set; }//Local Remote模式设定。
  73. [DataMember]
  74. public int ControlMode { get; set; }//Paddle模式控温。
  75. [DataMember]
  76. public double Ramping { get; set; }
  77. [DataMember]
  78. public double CascadePID_P { get; set; }//PID--P(Proportioning),比例动作
  79. [DataMember]
  80. public double CascadePID_I { get; set; }//PID--P(Proportioning),比例动作
  81. [DataMember]
  82. public double CascadePID_D { get; set; }//PID--P(Proportioning),比例动作
  83. [DataMember]
  84. public double HeaterPID_P { get; set; }//PID--P(Proportioning),比例动作
  85. [DataMember]
  86. public double HeaterPID_I { get; set; }//PID--P(Proportioning),比例动作
  87. [DataMember]
  88. public double HeaterPID_D { get; set; }//PID--P(Proportioning),比例动作
  89. [DataMember]
  90. public double ProportioningSetPoint { get; set; }//PID--P(Proportioning),比例动作
  91. [DataMember]
  92. public double ProportioningFeedBack { get; set; }//PID--P(Proportioning),比例动作
  93. [DataMember]
  94. public double IntegralSetPoint { get; set; }//PID--I(Integral),积分动作或复位动作
  95. [DataMember]
  96. public double IntegralFeedBack { get; set; }//PID--I(Integral),积分动作或复位动作
  97. [DataMember]
  98. public double DerivativeSetPoint { get; set; }//PID--D(Derivative),微分动作或比率动作
  99. [DataMember]
  100. public double DerivativeFeedBack { get; set; }//PID--D(Derivative),微分动作或比率动作
  101. [DataMember]
  102. public double ProcessVariable { get; set; }//PV Process Variable(过程值),热电偶、热电阻、线性输入等的测量值。
  103. [DataMember]
  104. public double LocalSetPoint { get; set; }//LSP Local Set Point(本地设定点),存储在调节器中的设定值
  105. [DataMember]
  106. public double ManipulatedVariable { get; set; }//MV Manipulated Variable(操作变量),是执行控制的仪表的输出,表示PID的运算结果
  107. [DataMember]
  108. public double LspIncreaseRampRateSetPoint { get; set; }//LSP用SP斜坡上升斜率
  109. [DataMember]
  110. public double LspIncreaseRampRateFeedBack { get; set; }//LSP用SP斜坡上升斜率
  111. [DataMember]
  112. public double LspDecreaseRampRateSetPoint { get; set; }//LSP用SP斜坡下降斜率
  113. [DataMember]
  114. public double LspDecreaseRampRateFeedBack { get; set; }//LSP用SP斜坡下降斜率
  115. [DataMember]
  116. public double RspIncreaseRampRateSetPoint { get; set; }//RSP用SP斜坡上升斜率
  117. [DataMember]
  118. public double RspIncreaseRampRateFeedBack { get; set; }//RSP用SP斜坡上升斜率
  119. [DataMember]
  120. public double RspDecreaseRampRateSetPoint { get; set; }//RSP用SP斜坡下降斜率
  121. [DataMember]
  122. public double RspDecreaseRampRateFeedBack { get; set; }//RSP用SP斜坡下降斜率
  123. [DataMember]
  124. public bool IsAutoTuningSetPoint { get; set; }//自动调整PID的最佳参数。
  125. [DataMember]
  126. public bool IsAutoTuningFeedBack { get; set; }//自动调整PID的最佳参数。
  127. [DataMember]
  128. public bool IsLspModeSetPoint { get; set; }//LSP RSP模式设定。
  129. [DataMember]
  130. public bool IsLspModeFeedBack { get; set; }//LSP RSP模式设定。
  131. [DataMember]
  132. public bool IsAutoMode { get; set; }//和manual对应,把PID的运算结果作为操作量的自动运行状态。 manual-把操作者的手动操作所设定的值作为操作量的手动运行状态。
  133. [DataMember]
  134. public bool IsRun { get; set; }//和Ready对应,执行控制运算的状态。ready--控制运算处于停止的待机状态
  135. [DataMember]
  136. public double TempFeedback { get; set; }
  137. [DataMember]
  138. public double RampSetPoint { get; set; }
  139. [DataMember]
  140. public string ProfileTable { get; set; }
  141. [DataMember]
  142. public string CorrectTable { get; set; }
  143. [DataMember]
  144. public string PIDTable { get; set; }
  145. [DataMember]
  146. public string ControlModeSetpoint { get; set; }
  147. [DataMember]
  148. public string AlarmWatchTable { get; set; }
  149. public RampUnit RampUnit { get; set; }
  150. [DataMember]
  151. public double ProfileTotalTime { get; set; }
  152. [DataMember]
  153. public double ProfilePreheatTime { get; set; }
  154. [DataMember]
  155. public double ProfileCheckTime { get; set; }
  156. [DataMember]
  157. public double ProfileCheckLimit { get; set; }
  158. [DataMember]
  159. public double ProfileAlarmLimit { get; set; }
  160. [DataMember]
  161. public double ProfileResult { get; set; }
  162. [DataMember]
  163. public bool IsProfiling { get; set; }
  164. public string ControlModeDisplay
  165. {
  166. get
  167. {
  168. if (ControlMode == 1)
  169. return "Heater control";
  170. if (ControlMode == 2)
  171. return "Furnace Diect control";
  172. return "Furnace control";
  173. }
  174. }
  175. [DataMember]
  176. public string ProfileStatus { get; set; }
  177. [DataMember]
  178. public bool IsCascadePVBreak
  179. {
  180. get;
  181. set;
  182. }
  183. [DataMember]
  184. public bool IsHeaterPVBreak
  185. {
  186. get;
  187. set;
  188. }
  189. [DataMember]
  190. public bool IsPowerOn
  191. {
  192. get;
  193. set;
  194. }
  195. [DataMember]
  196. public bool IsPowerOnSetPoint
  197. {
  198. get;
  199. set;
  200. }
  201. [DataMember]
  202. public bool IsControlTcBroken
  203. {
  204. get;
  205. set;
  206. }
  207. [DataMember]
  208. public bool IsMonitorTcBroken
  209. {
  210. get;
  211. set;
  212. }
  213. [DataMember]
  214. public double MonitorTcFeedBack { get; set; }
  215. //for the PID control type
  216. [DataMember]
  217. public Dictionary<string, object> AttrValue { get; set; }
  218. public string Display
  219. {
  220. get
  221. {
  222. string value = FeedBack.ToString(FormatString);
  223. return DisplayWithUnit ? value + " " + Unit : value;
  224. }
  225. }
  226. [DataMember]
  227. public string FormatString
  228. {
  229. get; set;
  230. }
  231. [DataMember]
  232. public bool DisplayWithUnit
  233. {
  234. get;
  235. set;
  236. }
  237. [DataMember]
  238. public bool EnableOutput
  239. {
  240. get;
  241. set;
  242. }
  243. public AITHeaterData()
  244. {
  245. DisplayName = "Undefined";
  246. Factor = 1.0;
  247. Unit = "℃";
  248. Type = "Heater";
  249. FormatString = "F2";
  250. AttrValue = new Dictionary<string, object>();
  251. }
  252. public void Update(IDeviceData data)
  253. {
  254. throw new NotImplementedException();
  255. }
  256. }
  257. public class AITHeaterOperation
  258. {
  259. public const string Ramp = "Ramp";
  260. public const string SetPowerOnOff = "SetPowerOnOff";
  261. }
  262. public class AITHeaterPropertyName
  263. {
  264. public const string ControlTcFeedback = "ControlTcFeedback";
  265. public const string MonitorTcFeedback = "MonitorTcFeedback";
  266. public const string ControlTcSetPoint = "ControlTcSetPoint";
  267. public const string IsControlTcBroken = "IsControlTcBroken";
  268. public const string IsMonitorTcBroken = "IsMonitorTcBroken";
  269. public const string IsPowerOnFeedback = "IsPowerOnFeedback";
  270. public const string IsPowerOnSetPoint = "IsPowerOnSetPoint";
  271. public const string IsTemperatureAlarm = "IsTemperatureAlarm";
  272. }
  273. public enum RampUnit
  274. {
  275. degreePerSec = 1,
  276. degreePerMin,
  277. degreePerHour,
  278. }
  279. }