123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- using Aitex.Core.Common.DeviceData;
- using Aitex.Core.RT.Log;
- using Aitex.Core.Util;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Reflection;
- using System.Threading.Tasks;
- using System.Windows;
- using FurnaceUI.Models;
- namespace FurnaceUI.Views.IOStatus
- {
- public class SensorsViewModel : FurnaceUIViewModelBase
- {
- #region Syste Properties
- [Subscription("SensorASOpenPosition.DeviceData", "System", "System")]
- public AITSensorData SensorASOpenPosition { get; set; }
- [Subscription("SensorASClosePosition.DeviceData", "System", "System")]
- public AITSensorData SensorASClosePosition { get; set; }
- [Subscription("SensorASUpPositionW.DeviceData", "System", "System")]
- public AITSensorData SensorASUpPositionW { get; set; }
- [Subscription("SensorASDownPosition.DeviceData", "System", "System")]
- public AITSensorData SensorASDownPosition { get; set; }
- [Subscription("SensorASOpenStatus.DeviceData", "System", "System")]
- public AITSensorData SensorASOpenStatus { get; set; }
- [Subscription("SensorASTiltStatus.DeviceData", "System", "System")]
- public AITSensorData SensorASTiltStatus { get; set; }
- [Subscription("SensorSideDoorFfuOK.DeviceData", "System", "System")]
- public AITSensorData SensorSideDoorFfuOK { get; set; }
- [Subscription("SensorZAxisUpLimit.DeviceData", "System", "System")]
- public AITSensorData SensorZAxisUpLimit { get; set; }
- [Subscription("SensorZAxisDownLimit.DeviceData", "System", "System")]
- public AITSensorData SensorZAxisDownLimit { get; set; }
- [Subscription("SensorBEHumanInterlock.DeviceData", "System", "System")]
- public AITSensorData SensorBEHumanInterlock { get; set; }
- [Subscription("SensorTAxisHome.DeviceData", "System", "System")]
- public AITSensorData SensorTAxisHome { get; set; }
- [Subscription("SensorCapClose.DeviceData", "System", "System")]
- public AITSensorData SensorCapClose { get; set; }
- [Subscription("SensorZone1.DeviceData", "System", "System")]
- public AITSensorData SensorZone1 { get; set; }
- [Subscription("SensorZone2.DeviceData", "System", "System")]
- public AITSensorData SensorZone2 { get; set; }
- [Subscription("SensorR5ArmNotExtendToBE.DeviceData", "System", "System")]
- public AITSensorData SensorR5ArmNotExtendToBE { get; set; }
- [Subscription("SensorCapILOK.DeviceData", "System", "System")]
- public AITSensorData SensorCapILOK { get; set; }
- [Subscription("SensorPPPosition.DeviceData", "System", "System")]
- public AITSensorData SensorPPPosition { get; set; }
- [Subscription("SensorHomePosition.DeciceData", "System", "System")]
- public AITSensorData SensorHomePosition { get; set; }
- #endregion
- #region EFEM properties
- [Subscription("SensorLightCurtainsStateEFEM.DeviceData", "System", "Efem")]
- public AITSensorData SensorLightCurtainsState { get; set; }
- [Subscription("SensorCDAPressureSensorState.DeviceData", "System", "Efem")]
- public AITSensorData SensorCDAPressureSensorState { get; set; }
- [Subscription("SensorEMOState.DeviceData", "System", "Efem")]
- public AITSensorData SensorEMOState { get; set; }
- [Subscription("SensorSafeDoorState.DeviceData", "System", "Efem")]
- public AITSensorData SensorSafeDoorState { get; set; }
- [Subscription("SensorSystemPowerONState.DeviceData", "System", "Efem")]
- public AITSensorData SensorSystemPowerONState { get; set; }
- [Subscription("SensorCSFfuOK.DeviceData", "System", "Efem")]
- public AITSensorData SensorCSFfuOK { get; set; }
- [Subscription("SensorIOPortFfuOKSensorIOPortFfuOK.DeviceData", "System", "Efem")]
- public AITSensorData SensorIOPortFfuOK { get; set; }
- [Subscription("SensorIOBtmExhFanOK.DeviceData", "System", "Efem")]
- public AITSensorData SensorIOBtmExhFanOK { get; set; }
- [Subscription("SensorFncExhFanOK.DeviceData", "System", "Efem")]
- public AITSensorData SensorFncExhFanOK { get; set; }
- #endregion
- #region Stocker Sensors
- [Subscription("SensorStation1Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation1Presence { get; set; }
- [Subscription("SensorStation2Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation2Presence { get; set; }
- [Subscription("SensorStation3Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation3Presence { get; set; }
- [Subscription("SensorStation4Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation4Presence { get; set; }
- [Subscription("SensorStation5Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation5Presence { get; set; }
- [Subscription("SensorStation6Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation6Presence { get; set; }
- [Subscription("SensorStation7Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation7Presence { get; set; }
- [Subscription("SensorStation8Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation8Presence { get; set; }
- [Subscription("SensorStation9Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation9Presence { get; set; }
- [Subscription("SensorStation10Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation10Presence { get; set; }
- [Subscription("SensorStation11Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation11Presence { get; set; }
- [Subscription("SensorStation12Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation12Presence { get; set; }
- [Subscription("SensorStation13Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation13Presence { get; set; }
- [Subscription("SensorStation14Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation14Presence { get; set; }
- [Subscription("SensorStation15Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation15Presence { get; set; }
- [Subscription("SensorStation16Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation16Presence { get; set; }
- [Subscription("SensorStation17Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation17Presence { get; set; }
- [Subscription("SensorStation18Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation18Presence { get; set; }
- [Subscription("SensorStation19Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation19Presence { get; set; }
- [Subscription("SensorStation20Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation20Presence { get; set; }
- [Subscription("SensorStation21Presence.DeviceData", "System", "Stocker")]
- public AITSensorData SensorStation21Presence { get; set; }
- #endregion
- #region CassetteProtrusion Sensor
- [Subscription("SensorCassetteProtrusion1.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion1 { get; set; }
- [Subscription("SensorCassetteProtrusion2.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion2 { get; set; }
- [Subscription("SensorCassetteProtrusion3.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion3 { get; set; }
- [Subscription("SensorCassetteProtrusion4.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion4 { get; set; }
- [Subscription("SensorCassetteProtrusion5.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion5 { get; set; }
- [Subscription("SensorCassetteProtrusion6.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion6 { get; set; }
- [Subscription("SensorCassetteProtrusion7.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion7 { get; set; }
- [Subscription("SensorCassetteProtrusion8.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion8 { get; set; }
- [Subscription("SensorCassetteProtrusion9.DeviceData", "System", "CassetteProtrusion")]
- public AITSensorData SensorCassetteProtrusion9 { get; set; }
- #endregion
- #region Stage Sensors
- [Subscription("SensorStage1LockPosition.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage1LockPosition { get; set; }
- [Subscription("SensorStage1UnlockPosition.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage1UnlockPosition { get; set; }
- [Subscription("SensorStage1LockValveFB.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage1LockValveFB { get; set; }
- [Subscription("SensorStage1UnlockValveFB.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage1UnlockValveFB { get; set; }
- [Subscription("SensorStage2LockPosition.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage2LockPosition { get; set; }
- [Subscription("SensorStage2UnlockPosition.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage2UnlockPosition { get; set; }
- [Subscription("SensorStage2LockValveFB.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage2LockValveFB { get; set; }
- [Subscription("SensorStage2UnlockValveFB.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage2UnlockValveFB { get; set; }
- [Subscription("SensorStage1CASSPresence.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage1CASSPresence { get; set; }
- [Subscription("SensorStage2CASSPresence.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorStage2CASSPresence { get; set; }
- [Subscription("SensorR3NotExtendToStage1.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorR3NotExtendToStage1 { get; set; }
- [Subscription("SensorR3NotExtendToStage2.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorR3NotExtendToStage2 { get; set; }
- [Subscription("SensorR5NotExtendToStage1.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorR5NotExtendToStage1 { get; set; }
- [Subscription("SensorR5NotExtendToStage2.DeviceData", "System", "TransferStage")]
- public AITSensorData SensorR5NotExtendToStage2 { get; set; }
- #endregion
- #region SmifA sensors
- [Subscription("SensorSmif1PodLockPosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1PodLockPosition { get; set; }
- [Subscription("SensorSmif1PodUnlockPosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1PodUnlockPosition { get; set; }
- [Subscription("SensorSmif1PodOpenPosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1PodOpenPosition { get; set; }
- [Subscription("SensorSmif1PodClosePosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1PodClosePosition { get; set; }
- [Subscription("SensorSmif1PodPresence.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1PodPresence { get; set; }
- [Subscription("SensorSmif1ZAxisUnloadPosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1ZAxisUnloadPosition { get; set; }
- [Subscription("SensorSmif1ZAxisLoadPosition.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1ZAxisLoadPosition { get; set; }
- [Subscription("SensorSmif1ZAxisPosition1.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1ZAxisPosition1 { get; set; }
- [Subscription("SensorSmif1ZAxisPosition2.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1ZAxisPosition2 { get; set; }
- [Subscription("SensorSmif1RotateAxisCheck1.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1RotateAxisCheck1 { get; set; }
- [Subscription("SensorSmif1RotateAxisCheck2.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1RotateAxisCheck2 { get; set; }
- [Subscription("SensorSmif1SlideAxisExtend.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1SlideAxisExtend { get; set; }
- [Subscription("SensorSmif1SlideAxisRetract.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1SlideAxisRetract { get; set; }
- [Subscription("SensorSmif1ProtrudedWafer.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1ProtrudedWafer { get; set; }
- [Subscription("SensorSmif1Mapping.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1Mapping { get; set; }
- [Subscription("SensorSmif1Ready.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1Ready { get; set; }
- [Subscription("SensorSmif1Homed.DeviceData", "System", "SmifA")]
- public AITSensorData SensorSmif1Homed { get; set; }
- #endregion
- #region SmifB sensors
- [Subscription("SensorSmif2PodLockPosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2PodLockPosition { get; set; }
- [Subscription("SensorSmif2PodUnlockPosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2PodUnlockPosition { get; set; }
- [Subscription("SensorSmif2PodOpenPosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2PodOpenPosition { get; set; }
- [Subscription("SensorSmif2PodClosePosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2PodClosePosition { get; set; }
- [Subscription("SensorSmif2PodPresence.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2PodPresence { get; set; }
- [Subscription("SensorSmif2ZAxisUnloadPosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2ZAxisUnloadPosition { get; set; }
- [Subscription("SensorSmif2ZAxisLoadPosition.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2ZAxisLoadPosition { get; set; }
- [Subscription("SensorSmif2ZAxisPosition1.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2ZAxisPosition1 { get; set; }
- [Subscription("SensorSmif2ZAxisPosition2.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2ZAxisPosition2 { get; set; }
- [Subscription("SensorSmif2RotateAxisCheck1.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2RotateAxisCheck1 { get; set; }
- [Subscription("SensorSmif2RotateAxisCheck2.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2RotateAxisCheck2 { get; set; }
- [Subscription("SensorSmif2SlideAxisExtend.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2SlideAxisExtend { get; set; }
- [Subscription("SensorSmif2SlideAxisRetract.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2SlideAxisRetract { get; set; }
- [Subscription("SensorSmif2ProtrudedWafer.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2ProtrudedWafer { get; set; }
- [Subscription("SensorSmif2Mapping.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2Mapping { get; set; }
- [Subscription("SensorSmif2Ready.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2Ready { get; set; }
- [Subscription("SensorSmif2Homed.DeviceData", "System", "SmifB")]
- public AITSensorData SensorSmif2Homed { get; set; }
- #endregion
- public ObservableCollection<AITSensorData> SensorsSystem{ get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsEfem { get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsStocker { get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsCassetteProtrusion { get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsTransferStage { get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsSMIFA { get; set; } = new ObservableCollection<AITSensorData>();
- public ObservableCollection<AITSensorData> SensorsSMIFB { get; set; } = new ObservableCollection<AITSensorData>();
- public void Add(ObservableCollection<AITSensorData> Sensors,object obj)
- {
- AITSensorData data = obj as AITSensorData;
- int iIndex = -1;
- for (int i = 0; i < Sensors.Count; i++)
- {
- if (Sensors[i] == null) break;
- if (Sensors[i].DeviceName == data.DeviceName)
- {
- iIndex = i;
- break;
- }
-
- }
- if (iIndex >= 0)
- {
- Sensors[iIndex] = data;
- }else
- {
- Sensors.Add(data);
- }
- }
- protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
- {
- base.InvokeAfterUpdateProperty(data);
- }
- public override void UpdateSubscribe(Dictionary<string, object> data, object target, string module = null)
- {
- Parallel.ForEach(target.GetType().GetProperties().Where(_hasSubscriptionAttribute),
- property =>
- {
- PropertyInfo pi = (PropertyInfo)property;
- SubscriptionAttribute subscription = property.GetCustomAttributes(false).First(_isSubscriptionAttribute) as SubscriptionAttribute;
- string key = subscription.ModuleKey;
- key = module == null ? key : string.Format("{0}.{1}", module, key);
- if (_subscribedKeys.Contains(key) && data.ContainsKey(key))
- {
- try
- {
- var convertedValue = Convert.ChangeType(data[key], pi.PropertyType);
- var originValue = Convert.ChangeType(pi.GetValue(target, null), pi.PropertyType);
- if (originValue != convertedValue)
- {
- pi.SetValue(target, convertedValue, null);
- switch (subscription.Params[0].ToString())
- {
- case "System":
- Add(SensorsSystem,convertedValue as AITSensorData);
- break;
- case "Efem":
- Add(SensorsEfem, convertedValue as AITSensorData);
- break;
- case "Stocker":
- Add(SensorsStocker, convertedValue as AITSensorData);
- break;
- case "CassetteProtrusion":
- Add(SensorsCassetteProtrusion, convertedValue as AITSensorData);
- break;
- case "TransferStage":
- Add(SensorsTransferStage, convertedValue as AITSensorData);
- break;
- case "SmifA":
- Add(SensorsSMIFA, convertedValue as AITSensorData);
- break;
- case "SmifB":
- Add(SensorsSMIFB, convertedValue as AITSensorData);
- break;
- }
- }
- }
- catch (Exception ex)
- {
- LOG.Error("由RT返回的数据更新失败" + key, ex);
- }
- }
- });
- }
- public void CloseCmd()
- {
- ((Window)GetView()).Close();
- }
- }
- }
|