| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338 | using System;using System.Collections.Generic;using System.Linq;using Aitex.Core.Util;using Aitex.Core.Common.DeviceData;using System.Text;using System.Threading.Tasks;using System.Windows;using FurnaceUI.Models;using Caliburn.Micro;using Caliburn.Micro.Core;using System.Windows.Controls;using MECF.Framework.UI.Client.CenterViews.Dialogs;using FurnaceUI.Views.Editors;using OpenSEMI.ClientBase;using MECF.Framework.Common.OperationCenter;using FurnaceUI.Client;using MECF.Framework.Common.DataCenter;namespace FurnaceUI.Views.Operations{    public class DDCModel    {        public DDCModel(string channel)        {            Channel = channel;        }        public string Channel { get; set; }        public string SetValue { get; set; }        public string TargetValue { get; set; }        public string ActValue { get; set; }        public string DevValue { get; set; }        public string UpRate { get; set; }        public string DownRate { get; set; }        public string Power { get; set; }        public string P { get; set; }        public string I { get; set; }        public string D { get; set; }        public bool IsPVBreak { get; set; }        public bool IsTempErr { get; set; }    }    public class TemperatureViewModel : FurnaceUIViewModelBase    {        public bool IsManagerPermission { get; set; } = false;        public bool IsLspMode { get; set; } = false;        private TemperatureView _view;        protected override void OnViewLoaded(object view)        {            base.OnViewLoaded(view);            _view = (TemperatureView)view;        }        public double URange = 9.9;        public double DevU => HeaterUData.FeedBack - HeaterUData.SetPoint;        public double TCDevU => HeaterUData.HeaterPV - HeaterUData.OverTemp;        public double PositiveULength        {            get            {                if (HeaterUData.SetPoint - HeaterUData.FeedBack <= 0)                {                    return 0;                }                else if (HeaterUData.SetPoint - HeaterUData.FeedBack <= URange)                {                    return ((HeaterUData.SetPoint - HeaterUData.FeedBack) / URange) * 150;                }                return 300;            }        }        public double NegativeULength        {            get            {                if (HeaterUData.SetPoint - HeaterUData.FeedBack >= 0)                {                    return 0;                }                else if (HeaterUData.SetPoint - HeaterUData.FeedBack >= -URange)                {                    return ((-(HeaterUData.SetPoint - HeaterUData.FeedBack)) / URange) * 150;                }                return 300;            }        }        public double DevCU => HeaterCUData.FeedBack - HeaterCUData.SetPoint;        public double TCDevCU => HeaterCUData.HeaterPV - HeaterCUData.OverTemp;        public double CURange = 9.9;        public double PositiveCULength        {            get            {                if (HeaterCUData.SetPoint - HeaterCUData.FeedBack <= 0)                {                    return 0;                }                else if (HeaterCUData.SetPoint - HeaterCUData.FeedBack <= CURange)                {                    return ((HeaterCUData.SetPoint - HeaterCUData.FeedBack) / CURange) * 150;                }                return 300;            }        }        public double NegativeCULength        {            get            {                if (HeaterCUData.SetPoint - HeaterCUData.FeedBack >= 0)                {                    return 0;                }                else if (HeaterCUData.SetPoint - HeaterCUData.FeedBack >= -CURange)                {                    return ((-(HeaterCUData.SetPoint - HeaterCUData.FeedBack)) / CURange) * 150;                }                return 300;            }        }        public double DevC => HeaterCData.FeedBack - HeaterCData.SetPoint;        public double TCDevC => HeaterCData.HeaterPV - HeaterCData.OverTemp;        public double CRange = 9.9;        public double PositiveCLength        {            get            {                if (HeaterCData.SetPoint - HeaterCData.FeedBack <= 0)                {                    return 0;                }                else if (HeaterCData.SetPoint - HeaterCData.FeedBack <= CRange)                {                    return ((HeaterCData.SetPoint - HeaterCData.FeedBack) / CRange) * 150;                }                return 300;            }        }        public double NegativeCLength        {            get            {                if (HeaterCData.SetPoint - HeaterCData.FeedBack >= 0)                {                    return 0;                }                else if (HeaterCData.SetPoint - HeaterCData.FeedBack >= -CRange)                {                    return ((-(HeaterCData.SetPoint - HeaterCData.FeedBack)) / CRange) * 150;                }                return 300;            }        }        public double DevCL => HeaterCLData.FeedBack - HeaterCLData.SetPoint;        public double TCDevCL => HeaterCLData.HeaterPV - HeaterCLData.OverTemp;        public double CLRange = 9.9;        public double PositiveCLLength        {            get            {                if (HeaterCLData.SetPoint - HeaterCLData.FeedBack <= 0)                {                    return 0;                }                else if (HeaterCLData.SetPoint - HeaterCLData.FeedBack <= CLRange)                {                    return ((HeaterCLData.SetPoint - HeaterCLData.FeedBack) / CLRange) * 150;                }                return 300;            }        }        public double NegativeCLLength        {            get            {                if (HeaterCLData.SetPoint - HeaterCLData.FeedBack >= 0)                {                    return 0;                }                else if (HeaterCLData.SetPoint - HeaterCLData.FeedBack >= -CLRange)                {                    return ((-(HeaterCLData.SetPoint - HeaterCLData.FeedBack)) / CLRange) * 150;                }                return 300;            }        }        public double DevL => HeaterLData.FeedBack - HeaterLData.SetPoint;        public double TCDevL => HeaterLData.HeaterPV - HeaterLData.OverTemp;        public double LRange = 9.9;        public double PositiveLLength        {            get            {                if (HeaterLData.SetPoint - HeaterLData.FeedBack <= 0)                {                    return 0;                }                else if (HeaterLData.SetPoint - HeaterLData.FeedBack <= LRange)                {                    return ((HeaterLData.SetPoint - HeaterLData.FeedBack) / LRange) * 150;                }                return 300;            }        }        public double NegativeLLength        {            get            {                if (HeaterLData.SetPoint - HeaterLData.FeedBack >= 0)                {                    return 0;                }                else if (HeaterLData.SetPoint - HeaterLData.FeedBack >= -LRange)                {                    return ((-(HeaterLData.SetPoint - HeaterLData.FeedBack)) / LRange) * 150;                }                return 300;            }        }        public double ZoneDevUCU => HeaterUData.FeedBack - HeaterCUData.FeedBack;        public double ZoneDevCUC => HeaterCUData.FeedBack - HeaterCData.FeedBack;        public double ZoneDevCCL => HeaterCData.FeedBack - HeaterCLData.FeedBack;        public double ZoneDevCLL => HeaterCLData.FeedBack - HeaterLData.FeedBack;        [Subscription("System.HeaterU.DeviceData")]        public AITHeaterData HeaterUData { get; set; }        [Subscription("System.HeaterCU.DeviceData")]        public AITHeaterData HeaterCUData { get; set; }        [Subscription("System.HeaterC.DeviceData")]        public AITHeaterData HeaterCData { get; set; }        [Subscription("System.HeaterCL.DeviceData")]        public AITHeaterData HeaterCLData { get; set; }        [Subscription("System.HeaterL.DeviceData")]        public AITHeaterData HeaterLData { get; set; }        public AITHeaterData BottomHeaterData => HeaterLData;        public AITHeaterData CenterBottomHeaterData => HeaterCLData;        public AITHeaterData CenterHeaterData => HeaterCData;        public AITHeaterData TopCenterHeaterData => HeaterCUData;        public AITHeaterData TopHeaterData => HeaterUData;        [Subscription("PM1.Status")]        public string PM1Status { get; set; }        [Subscription("PM1.RecipeHold")]        public bool PM1RecipeHold { get; set; }        public bool IsMannualButtonEnabled        {            get            {                return PM1Status != "Process" || (PM1Status == "Process" && PM1RecipeHold);            }        }        public string ErrStateStr        {            get            {                string _isErrState = "None";                List<string> tempList = new List<string>();                if (TopHeaterData?.IsAlarm == true)                {                    tempList.Add("U");                }                if (TopCenterHeaterData?.IsAlarm == true)                {                    tempList.Add("CU");                }                if (CenterHeaterData?.IsAlarm == true)                {                    tempList.Add("C");                }                if (CenterBottomHeaterData?.IsAlarm == true)                {                    tempList.Add("CL");                }                if (BottomHeaterData?.IsAlarm == true)                {                    tempList.Add("L");                }                if (tempList.Count > 0)                {                    if (tempList.Count == 5)                    {                        _isErrState = "All zone Err ";                    }                    else                    {                        _isErrState = string.Join("/", tempList) + " zone Err";                    }                }                return _isErrState;            }        }        public bool ErrState        {            get            {                bool _isErrState = false;                if (TopHeaterData?.IsAlarm == true || TopCenterHeaterData?.IsAlarm == true || CenterHeaterData.IsAlarm == true || CenterBottomHeaterData.IsAlarm == true || BottomHeaterData.IsAlarm == true)                {                    _isErrState = true;                }                return _isErrState;            }        }        #region AnaLog        [Subscription("PM1.HTCurrent1.DeviceData")]        public AITWaterFlowMeterData HTCurrent1 { get; set; }        [Subscription("PM1.HTCurrent2.DeviceData")]        public AITWaterFlowMeterData HTCurrent2 { get; set; }        [Subscription("PM1.HTCurrent3.DeviceData")]        public AITWaterFlowMeterData HTCurrent3 { get; set; }        [Subscription("PM1.HTCurrent4.DeviceData")]        public AITWaterFlowMeterData HTCurrent4 { get; set; }        [Subscription("PM1.HTCurrent5.DeviceData")]        public AITWaterFlowMeterData HTCurrent5 { get; set; }        [Subscription("PM1.HTVoltage1.DeviceData")]        public AITWaterFlowMeterData HTVoltage1 { get; set; }        [Subscription("PM1.HTVoltage2.DeviceData")]        public AITWaterFlowMeterData HTVoltage2 { get; set; }        [Subscription("PM1.HTVoltage3.DeviceData")]        public AITWaterFlowMeterData HTVoltage3 { get; set; }        [Subscription("PM1.HTVoltage4.DeviceData")]        public AITWaterFlowMeterData HTVoltage4 { get; set; }        [Subscription("PM1.HTVoltage5.DeviceData")]        public AITWaterFlowMeterData HTVoltage5 { get; set; }        public string HTCurrent1Feedback { get; set; }        public string HTCurrent2Feedback { get; set; }        public string HTCurrent3Feedback { get; set; }        public string HTCurrent4Feedback { get; set; }        public string HTCurrent5Feedback { get; set; }        public string HTVoltage1Feedback { get; set; }        public string HTVoltage2Feedback { get; set; }        public string HTVoltage3Feedback { get; set; }        public string HTVoltage4Feedback { get; set; }        public string HTVoltage5Feedback { get; set; }        #endregion        public Dictionary<string, double> _dicTemperatualMaxValue;        private string _topHeaterSetPoint;        public string TopHeaterSetPoint        {            get { return _topHeaterSetPoint; }            set            {                _topHeaterSetPoint = value;                NotifyOfPropertyChange("TopHeaterSetPoint");            }        }        private string _topCenterHeaterSetPoint;        public string TopCenterHeaterSetPoint        {            get { return _topCenterHeaterSetPoint; }            set            {                _topCenterHeaterSetPoint = value;                NotifyOfPropertyChange("TopCenterHeaterSetPoint");            }        }        private string _centerHeaterSetPoint;        public string CenterHeaterSetPoint        {            get { return _centerHeaterSetPoint; }            set            {                _centerHeaterSetPoint = value;                NotifyOfPropertyChange("CenterHeaterSetPoint");            }        }        private string _centerBottomHeaterSetPoint;        public string CenterBottomHeaterSetPoint        {            get { return _centerBottomHeaterSetPoint; }            set            {                _centerBottomHeaterSetPoint = value;                NotifyOfPropertyChange("CenterBottomHeaterSetPoint");            }        }        private string _bottomHeaterSetPoint;        public string BottomHeaterSetPoint        {            get { return _bottomHeaterSetPoint; }            set            {                _bottomHeaterSetPoint = value;                NotifyOfPropertyChange("BottomHeaterSetPoint");            }        }        private string _topHeaterUpRateSetpoint;        public string TopHeaterUpRateSetpoint        {            get { return _topHeaterUpRateSetpoint; }            set            {                _topHeaterUpRateSetpoint = value;                NotifyOfPropertyChange("TopHeaterUpRateSetpoint");            }        }        private string _topCenterHeaterUpRateSetpoint;        public string TopCenterHeaterUpRateSetpoint        {            get { return _topCenterHeaterUpRateSetpoint; }            set            {                _topCenterHeaterUpRateSetpoint = value;                NotifyOfPropertyChange("TopCenterHeaterUpRateSetpoint");            }        }        private string _centerHeaterUpRateSetpoint;        public string CenterHeaterUpRateSetpoint        {            get { return _centerHeaterUpRateSetpoint; }            set            {                _centerHeaterUpRateSetpoint = value;                NotifyOfPropertyChange("CenterHeaterUpRateSetpoint");            }        }        private string _centerLowHeaterUpRateSetpoint;        public string CenterLowHeaterUpRateSetpoint        {            get { return _centerLowHeaterUpRateSetpoint; }            set            {                _centerLowHeaterUpRateSetpoint = value;                NotifyOfPropertyChange("CenterLowHeaterUpRateSetpoint");            }        }        private string _lowHeaterUpRateSetpoint;        public string LowHeaterUpRateSetpoint        {            get { return _lowHeaterUpRateSetpoint; }            set            {                _lowHeaterUpRateSetpoint = value;                NotifyOfPropertyChange("LowHeaterUpRateSetpoint");            }        }        private string _topHeaterDownRateSetpoint;        public string TopHeaterDownRateSetpoint        {            get { return _topHeaterDownRateSetpoint; }            set            {                _topHeaterDownRateSetpoint = value;                NotifyOfPropertyChange("TopHeaterDownRateSetpoint");            }        }        private string _topCenterHeaterDownRateSetpoint;        public string TopCenterHeaterDownRateSetpoint        {            get { return _topCenterHeaterDownRateSetpoint; }            set            {                _topCenterHeaterDownRateSetpoint = value;                NotifyOfPropertyChange("TopCenterHeaterDownRateSetpoint");            }        }        private string _centerHeaterDownRateSetpoint;        public string CenterHeaterDownRateSetpoint        {            get { return _centerHeaterDownRateSetpoint; }            set            {                _centerHeaterDownRateSetpoint = value;                NotifyOfPropertyChange("CenterHeaterDownRateSetpoint");            }        }        private string _centerLowHeaterDownRateSetpoint;        public string CenterLowHeaterDownRateSetpoint        {            get { return _centerLowHeaterDownRateSetpoint; }            set            {                _centerLowHeaterDownRateSetpoint = value;                NotifyOfPropertyChange("CenterLowHeaterDownRateSetpoint");            }        }        private string _lowHeaterDownRateSetpoint;        public string LowHeaterDownRateSetpoint        {            get { return _lowHeaterDownRateSetpoint; }            set            {                _lowHeaterDownRateSetpoint = value;                NotifyOfPropertyChange("LowHeaterDownRateSetpoint");            }        }        private bool _isEnableMannual;        public bool IsEnableMannual        {            get            {                return IsManualButtonChecked;            }            set            {                _isEnableMannual = value;            }        }        public bool IsManualButtonChecked        {            get;            set;        }        private int _mannualSelectCount;        private string _lspModel;        public string LspModel        {            get => _lspModel;            set            {                _lspModel = value;                NotifyOfPropertyChange(nameof(LspModel));            }        }        private string _topHeaterRampSetPoint;        public string TopHeaterRampSetPoint        {            get => _topHeaterRampSetPoint;            set            {                _topHeaterRampSetPoint = value;                NotifyOfPropertyChange(nameof(TopHeaterRampSetPoint));            }        }        private string _topCenterHeaterRampSetPoint;        public string TopCenterHeaterRampSetPoint        {            get => _topCenterHeaterRampSetPoint;            set            {                _topCenterHeaterRampSetPoint = value;                NotifyOfPropertyChange(nameof(TopCenterHeaterRampSetPoint));            }        }        private string _centerHeaterRampSetPoint;        public string CenterHeaterRampSetPoint        {            get => _centerHeaterRampSetPoint;            set            {                _centerHeaterRampSetPoint = value;                NotifyOfPropertyChange(nameof(CenterHeaterRampSetPoint));            }        }        private string _bottomCenterHeaterRampSetPoint;        public string BottomCenterHeaterRampSetPoint        {            get => _bottomCenterHeaterRampSetPoint;            set            {                _bottomCenterHeaterRampSetPoint = value;                NotifyOfPropertyChange(nameof(BottomCenterHeaterRampSetPoint));            }        }        private string _bottomHeaterRampSetPoint;        public string BottomHeaterRampSetPoint        {            get => _bottomHeaterRampSetPoint;            set            {                _bottomHeaterRampSetPoint = value;                NotifyOfPropertyChange(nameof(BottomHeaterRampSetPoint));            }        }        public string ProfileTable        {            get            {                if (!HeaterUData.IsProfiling)                    return "OFF";                if (string.IsNullOrEmpty(HeaterUData.ProfileTable) || HeaterUData.ProfileTable == "None")                    return "OFF";                var array = HeaterUData.ProfileTable.Split(',');                if (array == null || array.Length < 2)                {                    return "OFF";                }                var fileNameAndPath = array[0];                int.TryParse(array[1], out int index);                var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"                if (para == null)                {                    return "OFF";                }                var fileName = string.Join("\\", para.ToArray());                if (array.Length < 3)                {                    return $"{fileName} [{index}]";                }                else                    return $"{fileName} [{index}: {array[2]}]";            }            set            {            }        }        public string ProfileStatusDisplay        {            get            {                if (!HeaterUData.IsProfiling)                    return "None";                return HeaterUData.ProfileStatus;            }        }        public string PIDTable        {            get            {                if (string.IsNullOrEmpty(HeaterUData.PIDTable) || HeaterUData.PIDTable == "None")                    return "None";                var array = HeaterUData.PIDTable.Split(',');                if (array == null || array.Length < 2)                {                    return "None";                }                var fileNameAndPath = array[0];                int.TryParse(array[1], out int index);                var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"                if (para == null)                {                    return "None";                }                var fileName = string.Join("\\", para.ToArray());                if (array.Length < 3)                {                    return $"{fileName} [{index}]";                }                else                    return $"{fileName} [{index}: {array[2]}]";            }            set            {            }        }        public string CorrectTable        {            get            {                if (string.IsNullOrEmpty(HeaterUData.CorrectTable) || HeaterUData.CorrectTable == "None")                    return "None";                var array = HeaterUData.CorrectTable.Split(',');                if (array == null || array.Length < 2)                {                    return "None";                }                var fileNameAndPath = array[0];                int.TryParse(array[1], out int index);                var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"                if (para == null)                {                    return "None";                }                var fileName = string.Join("\\", para.ToArray());                if (array.Length < 3)                {                    return $"{fileName} [{index}]";                }                else                    return $"{fileName} [{index}: {array[2]}]";            }            set            {            }        }        public string CheckLimitUDisplay        {            get            {                if (!HeaterUData.IsProfiling)                    return "0.0";                return HeaterUData.ProfileCheckLimit.ToString("f1");            }        }        public string CheckLimitCUDisplay        {            get            {                if (!HeaterCUData.IsProfiling)                    return "0.0";                return HeaterCUData.ProfileCheckLimit.ToString("f1");            }        }        public string CheckLimitCDisplay        {            get            {                if (!HeaterCData.IsProfiling)                    return "0.0";                return HeaterCData.ProfileCheckLimit.ToString("f1");            }        }        public string CheckLimitCLDisplay        {            get            {                if (!HeaterCLData.IsProfiling)                    return "0.0";                return HeaterCLData.ProfileCheckLimit.ToString("f1");            }        }        public string CheckLimitLDisplay        {            get            {                if (!HeaterLData.IsProfiling)                    return "0.0";                return HeaterLData.ProfileCheckLimit.ToString("f1");            }        }        public string ProfileTotalTimeDisplay        {            get            {                var time = HeaterUData.ProfileTotalTime;                if (!HeaterUData.IsProfiling)                    time = 0;                if (time < 0)                    time = 0;                TimeSpan span = TimeSpan.FromSeconds(time);                return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";            }        }        public string ProfilePreheatTimeDisplay        {            get            {                var time = HeaterUData.ProfilePreheatTime;                if (!HeaterUData.IsProfiling)                    time = 0;                if (time < 0)                    time = 0;                TimeSpan span = TimeSpan.FromSeconds(time);                return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";            }        }        public string ProfileCheckTimeDisplay        {            get            {                var time = HeaterUData.ProfileCheckTime;                if (!HeaterUData.IsProfiling)                    time = 0;                if (time < 0)                    time = 0;                TimeSpan span = TimeSpan.FromSeconds(time);                return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";            }        }        public List<DDCModel> TempList        {            get { return _tempList; }            set            {                _tempList = value;                NotifyOfPropertyChange(() => TempList);            }        }        private List<DDCModel> _tempList = new List<DDCModel>();        [Subscription("System.HeaterU.HeaterControlModeSV")]        public float HeaterUHeaterControlModeSV { get; set; }        [Subscription("System.HeaterU.CascadeControlModeSV")]        public float HeaterUCascadeControlModeSV { get; set; }        [Subscription("System.HeaterCU.HeaterControlModeSV")]        public float HeaterCUHeaterControlModeSV { get; set; }        [Subscription("System.HeaterCU.CascadeControlModeSV")]        public float HeaterCUCascadeControlModeSV { get; set; }        [Subscription("System.HeaterC.HeaterControlModeSV")]        public float HeaterCHeaterControlModeSV { get; set; }        [Subscription("System.HeaterC.CascadeControlModeSV")]        public float HeaterCCascadeControlModeSV { get; set; }        [Subscription("System.HeaterCL.HeaterControlModeSV")]        public float HeaterCLHeaterControlModeSV { get; set; }        [Subscription("System.HeaterCL.CascadeControlModeSV")]        public float HeaterCLCascadeControlModeSV { get; set; }        [Subscription("System.HeaterL.HeaterControlModeSV")]        public float HeaterLHeaterControlModeSV { get; set; }        [Subscription("System.HeaterL.CascadeControlModeSV")]        public float HeaterLCascadeControlModeSV { get; set; }        protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)        {            if (!IsEnableMannual)            {                InitSetPoint();                InitRampRate();                InitUpDownRate();            }            //URange = 9.9;            List<DDCModel> tempList = new List<DDCModel>();            DDCModel HTU = new DDCModel("HT.U")            {                SetValue = HeaterUData.SetPoint.ToString("F1"),                ActValue = HeaterUData.HeaterPV.ToString("F1"),                TargetValue = HeaterUHeaterControlModeSV.ToString("F1"),                Power = HeaterUData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterUData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterUData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterUData.SetPoint - HeaterUData.FeedBack).ToString("F1"),                P = HeaterUData.HeaterPID_P.ToString("F1"),                I= HeaterUData.HeaterPID_I.ToString("F1"),                D= HeaterUData.HeaterPID_D.ToString("F1"),                IsPVBreak = HeaterUData.IsHeaterPVBreak,                IsTempErr = HeaterUData.HeaterPV > HeaterUData.Scale            };            DDCModel HTCU = new DDCModel("HT.CU")            {                SetValue = HeaterCUData.SetPoint.ToString("F1"),                ActValue = HeaterCUData.HeaterPV.ToString("F1"),                TargetValue = HeaterCUHeaterControlModeSV.ToString("F1"),                Power = HeaterCUData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCUData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCUData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCUData.SetPoint - HeaterCUData.FeedBack).ToString("F1"),                P = HeaterCUData.HeaterPID_P.ToString("F1"),                I = HeaterCUData.HeaterPID_I.ToString("F1"),                D = HeaterCUData.HeaterPID_D.ToString("F1"),                IsPVBreak = HeaterCUData.IsHeaterPVBreak,                IsTempErr = HeaterCUData.HeaterPV > HeaterCUData.Scale            };            DDCModel HTC = new DDCModel("HT.C")            {                SetValue = HeaterCData.SetPoint.ToString("F1"),                ActValue = HeaterCData.HeaterPV.ToString("F1"),                TargetValue = HeaterCHeaterControlModeSV.ToString("F1"),                Power = HeaterCData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCData.SetPoint - HeaterCData.FeedBack).ToString("F1"),                P = HeaterCData.HeaterPID_P.ToString("F1"),                I = HeaterCData.HeaterPID_I.ToString("F1"),                D = HeaterCData.HeaterPID_D.ToString("F1"),                IsPVBreak = HeaterCData.IsHeaterPVBreak,                IsTempErr = HeaterCData.HeaterPV > HeaterCData.Scale            };            DDCModel HTCL = new DDCModel("HT.CL")            {                SetValue = HeaterCLData.SetPoint.ToString("F1"),                ActValue = HeaterCLData.HeaterPV.ToString("F1"),                TargetValue = HeaterCLHeaterControlModeSV.ToString("F1"),                Power = HeaterCLData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCLData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCLData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCLData.SetPoint - HeaterCLData.FeedBack).ToString("F1"),                P = HeaterCLData.HeaterPID_P.ToString("F1"),                I = HeaterCLData.HeaterPID_I.ToString("F1"),                D = HeaterCLData.HeaterPID_D.ToString("F1"),                IsPVBreak = HeaterCLData.IsHeaterPVBreak,                IsTempErr = HeaterCLData.HeaterPV > HeaterCLData.Scale            };            DDCModel HTL = new DDCModel("HT.L")            {                SetValue = HeaterLData.SetPoint.ToString("F1"),                ActValue = HeaterLData.HeaterPV.ToString("F1"),                TargetValue = HeaterLHeaterControlModeSV.ToString("F1"),                Power = HeaterLData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterLData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterLData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterLData.SetPoint - HeaterLData.FeedBack).ToString("F1"),                P = HeaterLData.HeaterPID_P.ToString("F1"),                I = HeaterLData.HeaterPID_I.ToString("F1"),                D = HeaterLData.HeaterPID_D.ToString("F1"),                IsPVBreak = HeaterLData.IsHeaterPVBreak,                IsTempErr = HeaterLData.HeaterPV > HeaterLData.Scale            };            DDCModel PRU = new DDCModel("PR.U")            {                SetValue = HeaterUData.SetPoint.ToString("F1"),                ActValue = HeaterUData.CascadePV.ToString("F1"),                TargetValue = HeaterUCascadeControlModeSV.ToString("F1"),                Power = HeaterUData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterUData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterUData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterUData.SetPoint - HeaterUData.FeedBack).ToString("F1"),                P = HeaterUData.CascadePID_P.ToString("F1"),                I = HeaterUData.CascadePID_I.ToString("F1"),                D = HeaterUData.CascadePID_D.ToString("F1"),                IsPVBreak = HeaterUData.IsCascadePVBreak,                IsTempErr = HeaterUData.HeaterPV > HeaterUData.Scale            };            DDCModel PRCU = new DDCModel("PR.CU")            {                SetValue = HeaterCUData.SetPoint.ToString("F1"),                ActValue = HeaterCUData.CascadePV.ToString("F1"),                TargetValue = HeaterCUCascadeControlModeSV.ToString("F1"),                Power = HeaterCUData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCUData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCUData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCUData.SetPoint - HeaterCUData.FeedBack).ToString("F1"),                P = HeaterCUData.CascadePID_P.ToString("F1"),                I = HeaterCUData.CascadePID_I.ToString("F1"),                D = HeaterCUData.CascadePID_D.ToString("F1"),                IsPVBreak = HeaterCUData.IsCascadePVBreak,                IsTempErr = HeaterCUData.CascadePV > HeaterCUData.Scale            };            DDCModel PRC = new DDCModel("PR.C")            {                SetValue = HeaterCData.SetPoint.ToString("F1"),                ActValue = HeaterCData.CascadePV.ToString("F1"),                TargetValue = HeaterCCascadeControlModeSV.ToString("F1"),                Power = HeaterCData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCData.SetPoint - HeaterCData.FeedBack).ToString("F1"),                P = HeaterCData.CascadePID_P.ToString("F1"),                I = HeaterCData.CascadePID_I.ToString("F1"),                D = HeaterCData.CascadePID_D.ToString("F1"),                IsPVBreak = HeaterCData.IsCascadePVBreak,                IsTempErr = HeaterCData.CascadePV > HeaterCData.Scale            };            DDCModel PRCL = new DDCModel("PR.CL")            {                SetValue = HeaterCLData.SetPoint.ToString("F1"),                ActValue = HeaterCLData.CascadePV.ToString("F1"),                TargetValue = HeaterCLCascadeControlModeSV.ToString("F1"),                Power = HeaterCLData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterCLData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterCLData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterCLData.SetPoint - HeaterCLData.FeedBack).ToString("F1"),                P = HeaterCLData.CascadePID_P.ToString("F1"),                I = HeaterCLData.CascadePID_I.ToString("F1"),                D = HeaterCLData.CascadePID_D.ToString("F1"),                IsPVBreak = HeaterCLData.IsCascadePVBreak,                IsTempErr = HeaterCLData.CascadePV > HeaterCLData.Scale            };            DDCModel PRL = new DDCModel("PR.L")            {                SetValue = HeaterLData.SetPoint.ToString("F1"),                ActValue = HeaterLData.CascadePV.ToString("F1"),                TargetValue = HeaterLCascadeControlModeSV.ToString("F1"),                Power = HeaterLData.ManipulatedVariable.ToString("F1"),                UpRate = HeaterLData.UpRateSetPoint.ToString("F1"),                DownRate = HeaterLData.DownRateSetPoint.ToString("F1"),                DevValue = (HeaterLData.SetPoint - HeaterLData.FeedBack).ToString("F1"),                P = HeaterLData.CascadePID_P.ToString("F1"),                I = HeaterLData.CascadePID_I.ToString("F1"),                D = HeaterLData.CascadePID_D.ToString("F1"),                IsPVBreak = HeaterLData.IsCascadePVBreak,                IsTempErr = HeaterLData.CascadePV > HeaterLData.Scale            };            tempList.Add(HTU);            tempList.Add(HTCU);            tempList.Add(HTC);            tempList.Add(HTCL);            tempList.Add(HTL);            tempList.Add(PRU);            tempList.Add(PRCU);            tempList.Add(PRC);            tempList.Add(PRCL);            tempList.Add(PRL);            TempList = tempList;            NotifyOfPropertyChange(nameof(PositiveULength));            NotifyOfPropertyChange(nameof(NegativeULength));            NotifyOfPropertyChange(nameof(PositiveCULength));            NotifyOfPropertyChange(nameof(NegativeCULength));            NotifyOfPropertyChange(nameof(PositiveCLength));            NotifyOfPropertyChange(nameof(NegativeCLength));            NotifyOfPropertyChange(nameof(PositiveCLLength));            NotifyOfPropertyChange(nameof(NegativeCLLength));            NotifyOfPropertyChange(nameof(PositiveLLength));            NotifyOfPropertyChange(nameof(NegativeLLength));            if (_view != null)            {                _view.UpdateLayout();            }        }        public void InitSetPoint()        {            TopHeaterSetPoint = TopHeaterData.SetPoint.ToString("F1");            TopCenterHeaterSetPoint = TopCenterHeaterData.SetPoint.ToString("F1");            CenterHeaterSetPoint = CenterHeaterData.SetPoint.ToString("F1");            CenterBottomHeaterSetPoint = CenterBottomHeaterData.SetPoint.ToString("F1");            BottomHeaterSetPoint = BottomHeaterData.SetPoint.ToString("F1");            //HTCurrent1Feedback = HTCurrent1 == null ? "0.0" : HTCurrent1.FeedBack.ToString("F3");            //HTCurrent2Feedback = HTCurrent2 == null ? "0.0" : HTCurrent2.FeedBack.ToString("F3");            //HTCurrent3Feedback = HTCurrent3 == null ? "0.0" : HTCurrent3.FeedBack.ToString("F3");            //HTCurrent4Feedback = HTCurrent4 == null ? "0.0" : HTCurrent4.FeedBack.ToString("F3");            //HTCurrent5Feedback = HTCurrent5 == null ? "0.0" : HTCurrent5.FeedBack.ToString("F3");            //HTVoltage1Feedback = HTVoltage1 == null ? "0.0" : HTVoltage1.FeedBack.ToString("F3");            //HTVoltage2Feedback = HTVoltage2 == null ? "0.0" : HTVoltage2.FeedBack.ToString("F3");            //HTVoltage3Feedback = HTVoltage3 == null ? "0.0" : HTVoltage3.FeedBack.ToString("F3");            //HTVoltage4Feedback = HTVoltage4 == null ? "0.0" : HTVoltage4.FeedBack.ToString("F3");            //HTVoltage5Feedback = HTVoltage5 == null ? "0.0" : HTVoltage5.FeedBack.ToString("F3");        }        public void InitUpDownRate()        {            TopHeaterUpRateSetpoint = TopHeaterData.UpRateSetPoint.ToString("F1");            TopCenterHeaterUpRateSetpoint = TopCenterHeaterData.UpRateSetPoint.ToString("F1"); ;            CenterHeaterUpRateSetpoint = CenterHeaterData.UpRateSetPoint.ToString("F1"); ;            CenterLowHeaterUpRateSetpoint = CenterBottomHeaterData.UpRateSetPoint.ToString("F1"); ;            LowHeaterUpRateSetpoint = BottomHeaterData.UpRateSetPoint.ToString("F1"); ;            TopHeaterDownRateSetpoint = TopHeaterData.DownRateSetPoint.ToString("F1");            TopCenterHeaterDownRateSetpoint = TopCenterHeaterData.DownRateSetPoint.ToString("F1"); ;            CenterHeaterDownRateSetpoint = CenterHeaterData.DownRateSetPoint.ToString("F1"); ;            CenterLowHeaterDownRateSetpoint = CenterBottomHeaterData.DownRateSetPoint.ToString("F1"); ;            LowHeaterDownRateSetpoint = BottomHeaterData.DownRateSetPoint.ToString("F1"); ;        }        public void InitRampRate()        {            TopHeaterRampSetPoint = CompterRampPoint(TopHeaterData).ToString("F1");            TopCenterHeaterRampSetPoint = CompterRampPoint(TopCenterHeaterData).ToString("F1");            CenterHeaterRampSetPoint = CompterRampPoint(CenterHeaterData).ToString("F1");            BottomCenterHeaterRampSetPoint = CompterRampPoint(CenterBottomHeaterData).ToString("F1");            BottomHeaterRampSetPoint = CompterRampPoint(BottomHeaterData).ToString("F1");        }        protected override void OnInitialize()        {            base.OnInitialize();            string[] strTempsNames = { "Heater1", "Heater2", "Heater3", "Heater4", "Heater5" };            _dicTemperatualMaxValue = new Dictionary<string, double>();            //获取温度限制配置信息            for (int i = 0; i < strTempsNames.Length; i++)            {                object obj = QueryDataClient.Instance.Service.GetConfig($"PM1.Heater.{strTempsNames[i]}.Range");                _dicTemperatualMaxValue.Add(strTempsNames[i], Convert.ToDouble(obj));            }        }        public double CompterRampPoint(AITHeaterData data)        {            if (data.IsLspModeFeedBack)            {                return data.FeedBack >= data.SetPoint ? data.LspDecreaseRampRateFeedBack : data.LspIncreaseRampRateFeedBack;            }            else            {                return data.FeedBack >= data.SetPoint ? data.RspDecreaseRampRateFeedBack : data.RspIncreaseRampRateFeedBack;            }        }        public void ManualCmd()        {            //((Window)GetView()).DialogResult = true;             var wm = IoC.Get<IWindowManager>();            SetTemperatureViewModel setTemperatureViewModel = new SetTemperatureViewModel();            (wm as WindowManager)?.ShowDialogWithTitle(setTemperatureViewModel, null, "Set Temperature");        }        public void SetCmd(object senderName, object sender, object typeName)        {            double temval = 0;            string name = senderName.ToString();            switch (typeName.ToString())            {                case "setpoint":                    double maxvalue = 0;                    string tName = GetTempratualMaxValue(name);                    if (!string.IsNullOrEmpty(tName))                    {                        maxvalue = _dicTemperatualMaxValue[tName];                    }                    string strRetValue = ShowNumberKeyboard(sender as Button, "", true, maxvalue);                    if (strRetValue != "Cancel")                    {                        //if (double.TryParse(strRetValue, out temval))                        {                            SelectPostionSetPoint(name, strRetValue);                        }                    }                    break;                case "ramp":                    strRetValue = ShowNumberKeyboard(sender as Button, "", false, 0);                    if (strRetValue != "Cancel")                    {                        //if (double.TryParse(strRetValue, out temval))                        {                            SelectPositionRamp(name, strRetValue);                        }                    }                    break;            }        }        private string GetTempratualMaxValue(string typeName)        {            string dicName = string.Empty;            bool isLspMode = LspModel != "Outer Control";            switch (typeName)            {                case "TopHeater":                    dicName = isLspMode ? "Heater1" : "Heater2";                    break;                case "TopCenterHeater":                    dicName = isLspMode ? "Heater3" : "Heater4";                    break;                case "CenterHeater":                    dicName = isLspMode ? "Heater5" : "Heater6";                    break;                case "CenterBottomHeater":                    dicName = isLspMode ? "Heater7" : "Heater8";                    break;                case "BottomHeater":                    dicName = isLspMode ? "Heater9" : "Heater10";                    break;            }            return dicName;        }        private void SelectPostionSetPoint(string name, string value)        {            switch (name)            {                case "TopHeater":                    TopHeaterSetPoint = value;                    break;                case "TopCenterHeater":                    TopCenterHeaterSetPoint = value;                    break;                case "CenterHeater":                    CenterHeaterSetPoint = value;                    break;                case "CenterBottomHeater":                    CenterBottomHeaterSetPoint = value;                    break;                case "BottomHeater":                    BottomHeaterSetPoint = value;                    break;            }        }        private void SelectPositionRamp(string name, string value)        {            switch (name)            {                case "TopHeater":                    TopHeaterRampSetPoint = value;                    break;                case "TopCenterHeater":                    TopCenterHeaterRampSetPoint = value;                    break;                case "CenterHeater":                    CenterHeaterRampSetPoint = value;                    break;                case "CenterBottomHeater":                    BottomCenterHeaterRampSetPoint = value;                    break;                case "BottomHeater":                    BottomHeaterRampSetPoint = value;                    break;            }        }        private string ShowNumberKeyboard(Control control, string defaultValue, bool isValidate, double maxValue = double.MaxValue)        {            NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);            var point = control.PointFromScreen(new Point(0, 0));            double wx = SystemParameters.WorkArea.Width;            double hy = SystemParameters.WorkArea.Height;            if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)            {                numberKeyboard.Top = -point.Y + control.ActualHeight + 5;            }            else            {                numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;            }            if (-point.X + numberKeyboard.Width < wx)            {                numberKeyboard.Left = -point.X;            }            else            {                numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);            }            if ((bool)numberKeyboard.ShowDialog())                return numberKeyboard.ValueString;            else                return "Cancel";        }        public void AllZone(string obj)        {            var windowManager = IoC.Get<IWindowManager>();            TemperatureDetailAllZoneViewModel temperatureDetailAllZoneViewModel = new TemperatureDetailAllZoneViewModel();            switch (obj)            {                case "Set":                    if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(temperatureDetailAllZoneViewModel, null, "Temperature Value Set"))                    {                        TopHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        TopCenterHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        CenterHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        CenterBottomHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        BottomHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                    }                    break;                case "Ramp":                    if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(temperatureDetailAllZoneViewModel, null, "Temperature Ramp Set"))                    {                        TopHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        TopCenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        CenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        BottomCenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                        BottomHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;                    }                    break;                default:                    break;            }        }        public void CloseCmd()        {            ClientApp.Instance.SwitchPage("status", "main", null);        }    }}
 |