CommonData.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.Serialization;
  6. using System.Xml.Serialization;
  7. namespace Aitex.Core.Util
  8. {
  9. //Some common data structure are defined here for data transfer between server and client
  10. //via serialization and deserialization
  11. /// <summary>
  12. /// Analog device data
  13. /// </summary>
  14. [DataContract]
  15. [Serializable]
  16. public class AnalogDeviceData
  17. {
  18. [DataMember]
  19. public string TechnicalName { get; set; }
  20. [DataMember]
  21. public string DeviceName { get; set; }
  22. [DataMember]
  23. public string DeviceId { get; set; }
  24. [DataMember]
  25. public string Unit { get; set; }
  26. [DataMember]
  27. public string Description { get; set; }
  28. /// <summary>
  29. /// 量程
  30. /// </summary>
  31. [DataMember]
  32. public double Scale { get; set; }
  33. /// <summary>
  34. /// 设定值
  35. /// </summary>
  36. [DataMember]
  37. public double SetPoint { get; set; }
  38. /// <summary>
  39. /// 实际反馈值
  40. /// </summary>
  41. [DataMember]
  42. public double FeedBack { get; set; }
  43. /// <summary>
  44. /// 默认值
  45. /// </summary>
  46. [DataMember]
  47. public double DefaultValue { get; set; }
  48. /// <summary>
  49. /// 是否有报警
  50. /// </summary>
  51. [DataMember]
  52. public bool IsWarning { get; set; }
  53. /// <summary>
  54. /// alarm或是erro时显示的信息
  55. /// </summary>
  56. [DataMember]
  57. public string ErroMessage { get; set; }
  58. private double _factor = 1.0;
  59. [DataMember]
  60. public double Factor { get { return _factor; } set { _factor = value; } }
  61. public override string ToString()
  62. {
  63. return FeedBack.ToString();
  64. }
  65. /// <summary>
  66. /// Default constructor.
  67. /// </summary>
  68. public AnalogDeviceData()
  69. {
  70. }
  71. /// <summary>
  72. /// Copy constructor of this object.
  73. /// </summary>
  74. /// <param name="deviceData"></param>
  75. public AnalogDeviceData(AnalogDeviceData deviceData)
  76. {
  77. TechnicalName = deviceData.TechnicalName;
  78. DeviceName = deviceData.DeviceName;
  79. DeviceId = deviceData.DeviceId;
  80. Unit = deviceData.Unit;
  81. Description = deviceData.Description;
  82. Scale = deviceData.Scale;
  83. SetPoint = deviceData.SetPoint;
  84. FeedBack = deviceData.FeedBack;
  85. DefaultValue = deviceData.DefaultValue;
  86. IsWarning = deviceData.IsWarning;
  87. ErroMessage = deviceData.ErroMessage;
  88. }
  89. }
  90. //public interface IAnalogData
  91. //{
  92. // AnalogDeviceData GetData(string deviceId);
  93. //}
  94. /// <summary>
  95. /// Digital device data
  96. /// </summary>
  97. [DataContract]
  98. [Serializable]
  99. public class DigitalDeviceData
  100. {
  101. [DataMember]
  102. public string TechnicalName { get; set; }
  103. [DataMember]
  104. public string DeviceName { get; set; }
  105. [DataMember]
  106. public string DeviceId { get; set; }
  107. /// <summary>
  108. /// 当前设定值
  109. /// </summary>
  110. [DataMember]
  111. public bool SetValue { get; set; }
  112. /// <summary>
  113. /// 默认值
  114. /// </summary>
  115. [DataMember]
  116. public bool DefaultValue { get; set; }
  117. /// <summary>
  118. /// 实际反馈值
  119. /// </summary>
  120. [DataMember]
  121. public bool Feedback { get; set; }
  122. public override string ToString()
  123. {
  124. return Feedback.ToString();
  125. }
  126. }
  127. //public interface IDigitalData
  128. //{
  129. // DigitalDeviceData GetData(string deviceId);
  130. //}
  131. ///// <summary>
  132. ///// Reactor data
  133. ///// </summary>
  134. //[DataContract]
  135. //[Serializable]
  136. //public class ReactorData
  137. //{
  138. // public ReactorData()
  139. // {
  140. // MFC = new SerializableDictionary<string, AnalogDeviceData>();
  141. // PC = new SerializableDictionary<string, AnalogDeviceData>();
  142. // Valve = new SerializableDictionary<string, DigitalDeviceData>();
  143. // ProcessData = new SerializableDictionary<string, string>();
  144. // }
  145. // /// <summary>
  146. // /// Class members
  147. // /// </summary>
  148. // public SerializableDictionary<string, AnalogDeviceData> MFC;
  149. // /// <summary>
  150. // /// Class members
  151. // /// </summary>
  152. // public SerializableDictionary<string, AnalogDeviceData> PC;
  153. // /// <summary>
  154. // /// Class members
  155. // /// </summary>
  156. // public SerializableDictionary<string, DigitalDeviceData> Valve;
  157. // /// <summary>
  158. // /// Class members
  159. // /// </summary>
  160. // public SerializableDictionary<string, string> ProcessData;
  161. //}
  162. ///// <summary>
  163. ///// Heater data
  164. ///// </summary>
  165. //[DataContract]
  166. //[Serializable]
  167. //public class HeaterData
  168. //{
  169. // public bool Enable;
  170. // public bool PsuEnable;
  171. // public HeaterMode Mode;
  172. // public double[] ZoneTempFeedback;
  173. // public double[] ZoneCurrentFeedback;
  174. // public double[] ZonePowerFeedback;
  175. // public double[] ZoneTcFeedback;
  176. // //public double[] PSU_Current_Read;
  177. // public double[] Zone_Voltage_Read;
  178. // public double[] Current_SetPoint;
  179. //}
  180. ///// <summary>
  181. ///// Pressure data
  182. ///// </summary>
  183. //[DataContract]
  184. //[Serializable]
  185. //public class PressureData
  186. //{
  187. // public bool ThrottleValveEnable;
  188. // public bool MainPumpEnable;
  189. // public PressureControlMode Mode;
  190. // /// <summary>
  191. // /// pres real data
  192. // /// </summary>
  193. // public double TVPresFeedback; //throttle valve pressure feedback
  194. // public double TVPresSetPoint;
  195. // public double PT1Feedback;
  196. // public double PT2Feedback;
  197. // public double ThrottleValveOpenRate;
  198. // public int TV_Status;
  199. //}
  200. ///// <summary>
  201. ///// System monitor view data
  202. ///// </summary>
  203. //[DataContract]
  204. //[Serializable]
  205. //public class SystemMonitorViewData
  206. //{
  207. // /// <summary>
  208. // /// Susceptor infors
  209. // /// </summary>
  210. // public SerializableDictionary<ChamberSet, SusceptorInfo> ChamberSusceptorInfos
  211. // {
  212. // get;
  213. // set;
  214. // }
  215. // public SerializableDictionary<ChamberSet, ChamberCommStateEnum> ChamberCommStates;
  216. // /// <summary>
  217. // /// IsServiceModeA
  218. // /// </summary>
  219. // public bool IsServiceModeA
  220. // {
  221. // get;
  222. // set;
  223. // }
  224. // /// <summary>
  225. // /// IsServiceModeB
  226. // /// </summary>
  227. // public bool IsServiceModeB
  228. // {
  229. // get;
  230. // set;
  231. // }
  232. // /// <summary>
  233. // /// IsServiceModeC
  234. // /// </summary>
  235. // public bool IsServiceModeC
  236. // {
  237. // get;
  238. // set;
  239. // }
  240. // /// <summary>
  241. // /// IsServiceModeD
  242. // /// </summary>
  243. // public bool IsServiceModeD
  244. // {
  245. // get;
  246. // set;
  247. // }
  248. // /// <summary>
  249. // /// IsServiceRunningLoadlock
  250. // /// </summary>
  251. // public bool IsServiceRunningLoadlock
  252. // {
  253. // get;
  254. // set;
  255. // }
  256. // /// <summary>
  257. // /// IsServiceRunningTransfer
  258. // /// </summary>
  259. // public bool IsServiceRunningTransfer
  260. // {
  261. // get;
  262. // set;
  263. // }
  264. // /// <summary>
  265. // /// Is reactor processing?
  266. // /// </summary>
  267. // public bool IsProcessingA
  268. // {
  269. // get;
  270. // set;
  271. // }
  272. // /// <summary>
  273. // /// Is reactor processing?
  274. // /// </summary>
  275. // public bool IsProcessingB
  276. // {
  277. // get;
  278. // set;
  279. // }
  280. // /// <summary>
  281. // /// Is reactor processing?
  282. // /// </summary>
  283. // public bool IsProcessingC
  284. // {
  285. // get;
  286. // set;
  287. // }
  288. // /// <summary>
  289. // /// Is reactor processing?
  290. // /// </summary>
  291. // public bool IsProcessingD
  292. // {
  293. // get;
  294. // set;
  295. // }
  296. // /// <summary>
  297. // /// Is reactor susceptor rotation?
  298. // /// </summary>
  299. // public bool IsRotatingA
  300. // {
  301. // get;
  302. // set;
  303. // }
  304. // /// <summary>
  305. // /// Is reactor susceptor rotation?
  306. // /// </summary>
  307. // public bool IsRotatingB
  308. // {
  309. // get;
  310. // set;
  311. // }
  312. // /// <summary>
  313. // /// Is reactor susceptor rotation?
  314. // /// </summary>
  315. // public bool IsRotatingC
  316. // {
  317. // get;
  318. // set;
  319. // }
  320. // /// <summary>
  321. // /// Is reactor susceptor rotation?
  322. // /// </summary>
  323. // public bool IsRotatingD
  324. // {
  325. // get;
  326. // set;
  327. // }
  328. // /// <summary>
  329. // /// Robot data
  330. // /// </summary>
  331. // public double RobotTheta
  332. // {
  333. // get;
  334. // set;
  335. // }
  336. // /// <summary>
  337. // /// Robot data
  338. // /// </summary>
  339. // public double RobotRadius
  340. // {
  341. // get;
  342. // set;
  343. // }
  344. // /// <summary>
  345. // /// Is sequencer running
  346. // /// </summary>
  347. // public bool SequencerRunning
  348. // {
  349. // get;
  350. // set;
  351. // }
  352. // /// <summary>
  353. // /// Chamber information
  354. // /// </summary>
  355. // public string PMA_Info
  356. // {
  357. // get;
  358. // set;
  359. // }
  360. // /// <summary>
  361. // /// Chamber information
  362. // /// </summary>
  363. // public string PMB_Info
  364. // {
  365. // get;
  366. // set;
  367. // }
  368. // /// <summary>
  369. // /// Chamber information
  370. // /// </summary>
  371. // public string PMC_Info
  372. // {
  373. // get;
  374. // set;
  375. // }
  376. // /// <summary>
  377. // /// Chamber information
  378. // /// </summary>
  379. // public string PMD_Info
  380. // {
  381. // get;
  382. // set;
  383. // }
  384. // /// <summary>
  385. // /// chamber door state
  386. // /// </summary>
  387. // public int IsPMADoorOpen
  388. // {
  389. // get;
  390. // set;
  391. // }
  392. // /// <summary>
  393. // /// chamber door state
  394. // /// </summary>
  395. // public int IsPMBDoorOpen
  396. // {
  397. // get;
  398. // set;
  399. // }
  400. // /// <summary>
  401. // /// chamber door state
  402. // /// </summary>
  403. // public int IsPMCDoorOpen
  404. // {
  405. // get;
  406. // set;
  407. // }
  408. // /// <summary>
  409. // /// chamber door state
  410. // /// </summary>
  411. // public int IsPMDDoorOpen
  412. // {
  413. // get;
  414. // set;
  415. // }
  416. // /// <summary>
  417. // /// LL door state
  418. // /// </summary>
  419. // public int IsLLDoorOpen
  420. // {
  421. // get;
  422. // set;
  423. // }
  424. // public bool IsLLDoorEverOpened
  425. // {
  426. // get;
  427. // set;
  428. // }
  429. // /// <summary>
  430. // /// Loadlock door latch state
  431. // /// </summary>
  432. // public int IsLLDoorLatched
  433. // {
  434. // get;
  435. // set;
  436. // }
  437. // /// <summary>
  438. // /// PMA pressure
  439. // /// </summary>
  440. // public double PMA_Pres
  441. // {
  442. // get;
  443. // set;
  444. // }
  445. // /// <summary>
  446. // /// PMB pressure
  447. // /// </summary>
  448. // public double PMB_Pres
  449. // {
  450. // get;
  451. // set;
  452. // }
  453. // /// <summary>
  454. // /// PMC pressure
  455. // /// </summary>
  456. // public double PMC_Pres
  457. // {
  458. // get;
  459. // set;
  460. // }
  461. // /// <summary>
  462. // /// PMD pressure
  463. // /// </summary>
  464. // public double PMD_Pres
  465. // {
  466. // get;
  467. // set;
  468. // }
  469. // /// <summary>
  470. // /// TM pressure
  471. // /// </summary>
  472. // public double TM_Pres
  473. // {
  474. // get;
  475. // set;
  476. // }
  477. // /// <summary>
  478. // /// LL pressure
  479. // /// </summary>
  480. // public double LL_Pres
  481. // {
  482. // get;
  483. // set;
  484. // }
  485. // /// <summary>
  486. // /// PMA temperature
  487. // /// </summary>
  488. // public double PMA_Temp
  489. // {
  490. // get;
  491. // set;
  492. // }
  493. // /// <summary>
  494. // /// PMB temperature
  495. // /// </summary>
  496. // public double PMB_Temp
  497. // {
  498. // get;
  499. // set;
  500. // }
  501. // /// <summary>
  502. // /// PMC temperature
  503. // /// </summary>
  504. // public double PMC_Temp
  505. // {
  506. // get;
  507. // set;
  508. // }
  509. // /// <summary>
  510. // /// PMD temperature
  511. // /// </summary>
  512. // public double PMD_Temp
  513. // {
  514. // get;
  515. // set;
  516. // }
  517. // /// <summary>
  518. // /// Cooldown temperature
  519. // /// </summary>
  520. // public double CoolDown_Temp
  521. // {
  522. // get;
  523. // set;
  524. // }
  525. // /// <summary>
  526. // /// LL temperature
  527. // /// </summary>
  528. // public double LL_Temp
  529. // {
  530. // get;
  531. // set;
  532. // }
  533. // /// <summary>
  534. // /// current cycle
  535. // /// </summary>
  536. // public int TheIthCycle { get; set; }
  537. // public int CycleCount { get; set; }
  538. // public bool IsCycleMode { get; set; }
  539. //}
  540. ///// <summary>
  541. ///// Config data structure
  542. ///// </summary>
  543. //[DataContract]
  544. //[Serializable]
  545. //public class ConfigEntry
  546. //{
  547. // public ChamberSet ChamId { get; set; }
  548. // public string SectionName { get; set; }
  549. // public string EntryName { get; set; }
  550. // public string Description { get; set; }
  551. // public string Type { get; set; }
  552. // public string Unit { get; set; }
  553. // public string Value { get; set; }
  554. // public string Default { get; set; }
  555. // public string RangeLowLimit { get; set; }
  556. // public string RangeUpLimit { get; set; }
  557. // public string XPath { get; set; }
  558. //}
  559. ///// <summary>
  560. ///// 显示数据只包含时间和数值
  561. ///// </summary>
  562. //[DataContract]
  563. //[Serializable]
  564. //public class ChartShowInfo
  565. //{
  566. // public string TimeString { get; set; }
  567. // public DateTime Time { get; set; }
  568. // public double Value { get; set; }
  569. //}
  570. //[DataContract]
  571. //[Serializable]
  572. //public class TransferData
  573. //{
  574. // public bool DorDPressSwitch;
  575. // public bool DorCPressSwitch;
  576. // public bool DorBPressSwitch;
  577. // public bool DorAPressSwitch;
  578. // public bool TubePressSwitch;
  579. // public bool DoubleOringPump;
  580. // public bool TmDryPump;
  581. // public bool? TmPumpRun;
  582. // public bool TmPumpAlarm;
  583. // public bool TransferFastPumpClose;
  584. // public bool TransferSlowPumpClose;
  585. //}
  586. //[DataContract]
  587. //[Serializable]
  588. //public class LoadLockData
  589. //{
  590. // public bool LoadLockFastPumpClose;
  591. // public bool LoadLockSlowPumpClose;
  592. // public bool GateIsOpen;
  593. // public bool DoorClose;
  594. // public double Temperature;
  595. // public double Pressure;
  596. // public bool AtAtm;
  597. // public bool UnderVacuum;
  598. //}
  599. ///// <summary>
  600. ///// Reactor's bubbler data
  601. ///// </summary>
  602. //[DataContract]
  603. //[Serializable]
  604. //public class BubblerData
  605. //{
  606. // /// <summary>
  607. // /// 名称
  608. // /// </summary>
  609. // public string MoName { get; set; }
  610. // /// <summary>
  611. // /// 总量
  612. // /// </summary>
  613. // public double TotalWeight { get; set; }
  614. // /// <summary>
  615. // /// 计算使用量
  616. // /// </summary>
  617. // public double IntegralUsedWeight { get; set; }
  618. // /// <summary>
  619. // /// 计算因子
  620. // /// </summary>
  621. // public double MoCalcFactor { get; set; }
  622. // /// <summary>
  623. // /// 报警阈值
  624. // /// </summary>
  625. // public double MoAlarmLimit { get; set; }
  626. // /// <summary>
  627. // /// 实际使用量
  628. // /// </summary>
  629. // public double MoUsedWeight { get; set; }
  630. // /// <summary>
  631. // /// 实际剩余量
  632. // /// </summary>
  633. // public double MoRemainedWeight { get; set; }
  634. // /// <summary>
  635. // /// MO剩余百分比
  636. // /// </summary>
  637. // public string MoRemainedPercentage { get; set; }
  638. // /// <summary>
  639. // /// Bubble温度
  640. // /// </summary>
  641. // public double BubbleTemp { get; set; }
  642. // /// <summary>
  643. // /// 平均每分钟的MO消耗质量
  644. // /// </summary>
  645. // public double AveragedMoWeightLostPerMin { get; set; }
  646. //}
  647. ///// <summary>
  648. ///// 模块监控单元的状态定义
  649. ///// </summary>
  650. //[DataContract]
  651. //[Serializable]
  652. //public enum ModuleMonitorItemStatus
  653. //{
  654. // Alarm,
  655. // NoAlarm,
  656. // Active,
  657. // NoActive
  658. //}
  659. ///// <summary>
  660. ///// 模块监控单元
  661. ///// </summary>
  662. //[DataContract]
  663. //[Serializable]
  664. //public class ModuleMonitorItem
  665. //{
  666. // public string ModuleName { get; set; }
  667. // public string Description { get; set; }
  668. // public ModuleMonitorItemStatus Status { get; set; }
  669. //}
  670. ///// <summary>
  671. /////
  672. ///// </summary>
  673. //[DataContract]
  674. //[Serializable]
  675. //public class ChartSaveData
  676. //{
  677. // public DateTime RecordTime;
  678. // public double tvPresData;
  679. // public double ZoneA_TC_Read, ZoneB_TC_Read, ZoneC_TC_Read, ZoneD_TC_Read;
  680. // public double ZoneA_Current_Read, ZoneB_Current_Read, ZoneC_Current_Read, ZoneD_Current_Read;
  681. //}
  682. //[DataContract]
  683. //[Serializable]
  684. //public enum ServerRoutineState
  685. //{
  686. // NotRun,
  687. // ZhenKong,
  688. // Vent,
  689. // CyclePurge,
  690. // LeakCheck,
  691. //}
  692. [Serializable]
  693. public class DataItem
  694. {
  695. public string DataName { get; set; }
  696. //public bool IsPreLoaded { get; set; }
  697. public List<DateTime> TimeStamp { get; set; }
  698. public List<float> RawData { get; set; }
  699. }
  700. /// <summary>
  701. /// archived data format
  702. /// </summary>
  703. [Serializable]
  704. public class ArchivedFile
  705. {
  706. public string ChamId { get; set; }
  707. public string Description { get; set; }
  708. public DateTime BeginTime { get; set; }
  709. public DateTime EndTime { get; set; }
  710. public Dictionary<string, DataItem> Datas { get; set; }
  711. public Dictionary<string, List<string>> AliasList { get; set; }
  712. public List<KeyValuePair<DateTime, string>> RecipeSteps { get; set; }
  713. }
  714. #region PM data
  715. /// <summary>
  716. /// 标识不需要数据库记录的数据类型
  717. /// </summary>
  718. [AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field)]
  719. public class DatabaseSaveIgnoreAttribute : Attribute { }
  720. [Serializable]
  721. [DataContract]
  722. public class BathData
  723. {
  724. [XmlAttribute]
  725. public string BathName;
  726. public bool IsCommErr;
  727. public bool IsOutofTempRange;
  728. [DatabaseSaveIgnore]
  729. public bool IsTempSignalAlarm;
  730. [DatabaseSaveIgnore]
  731. public bool IsCutoffAlarm;
  732. [DatabaseSaveIgnore]
  733. public bool IsLevelWarning;
  734. public double TemperatureReading;
  735. }
  736. [Serializable]
  737. [DataContract]
  738. public class MoLine
  739. {
  740. [XmlAttribute]
  741. public string MoName;
  742. [DatabaseSaveIgnore]
  743. public bool IsDummyMo;
  744. //public bool IsBathTempAbnormal;
  745. //public double BathTemperatureReading;
  746. [DatabaseSaveIgnore]
  747. public double MoAlarmLimit;
  748. public double MoTotalWeight;
  749. [DatabaseSaveIgnore]
  750. public double MoWeightCalFactor;
  751. public double IntegralUsedWeight;
  752. public bool IsMoRemainedWeightAlarm;
  753. [DatabaseSaveIgnore]
  754. public double MoRemainedPercentage;
  755. [DatabaseSaveIgnore]
  756. public double MoRemainedWeight;
  757. public double MoUsedWeight;
  758. public double ToChamFlowRate;
  759. [DatabaseSaveIgnore]
  760. public double AveragedMoWeightLostPerMin;/*平均每分钟的MO消耗量计算值*/
  761. [DatabaseSaveIgnore]
  762. public BathData Bath;
  763. public override string ToString()
  764. {
  765. return MoName;
  766. }
  767. }
  768. #endregion
  769. }