///// <summary> ///// Преобразование входных для расчета значений в структуры, пригодные для производства расчетов ///// </summary> ///// <param name="pAlg">Объект - словарь структур для расчета</param> ///// <param name="tablePar">Таблица с параметрами</param> ///// <param name="tableVal">Таблица со значениями</param> //protected int initValues(P_ALG pAlg, DataTable tablePar, DataTable tableVal) //{ // int iRes = 0; //Предположение, что ошибки нет // DataRow[] rVal = null; // int idPut = -1 // , idComponent = -1; // string strNAlg = string.Empty; // pAlg.Clear(); // // цикл по всем параметрам расчета // foreach (DataRow rPar in tablePar.Rows) // { // // найти соответствие параметра в алгоритме расчета и значения для него // idPut = (int)rPar[@"ID"]; // // идентификатор параметра в алгоритме расчета - ключ для словаря с его характеристиками // strNAlg = ((string)rPar[@"N_ALG"]).Trim(); // rVal = tableVal.Select(@"ID_PUT=" + idPut); // // проверить успешность нахождения соответствия // if (rVal.Length == 1) // { // if (pAlg.ContainsKey(strNAlg) == false) // {// добавить параметр в алгоритме расчета // pAlg.Add(strNAlg, new P_ALG.P_PUT()); // pAlg[strNAlg].m_avg = (AGREGATE_ACTION)(Int16)rPar[@"AVG"]; // pAlg[strNAlg].m_bDeny = false; // } // else // ; // // идентификатор компонента станции - ключ для словаря со значением и характеристиками для него // idComponent = (int)rPar[@"ID_COMP"]; // if (pAlg[strNAlg].ContainsKey(idComponent) == false) // pAlg[strNAlg].Add(idComponent, new P_ALG.P_PUT.P_VAL() // // добавить параметр компонента в алгоритме расчета // { // m_iId = idPut // //, m_iIdComponent = idComponent // , m_bDeny = false // , value = (float)(double)rVal[0][@"VALUE"] // , m_sQuality = ID_QUALITY_VALUE.DEFAULT // не рассчитывался // , m_idRatio = (int)rPar[@"ID_RATIO"] // , m_fMinValue = (rPar[@"MINVALUE"] is DBNull) ? 0 : (float)rPar[@"MINVALUE"] //??? - ошибка д.б. float // , m_fMaxValue = (rPar[@"MAXVALUE"] is DBNull) ? 0 : (float)rPar[@"MAXVALUE"] //??? - ошибка д.б. float // }); // else // ; // } else {// ошибка - не найдено соответствие параметр-значение // iRes = -1; // Logging.Logg().Error(@"TaskCalculate::initValues (ID_PUT=" + idPut + @") - не найдено соответствие параметра и значения...", Logging.INDEX_MESSAGE.NOT_SET); // } // } // return iRes; //} protected void validateKeyPValue(P_ALG.P_PUT pPut, P_ALG.KEY_P_VALUE keyGroupPValue) { P_ALG.P_PUT.P_VALUE emptyPValue , templatePValue; P_ALG.KEY_P_VALUE keyEmptyPValue; keyEmptyPValue.Stamp = DateTime.MinValue; // сформировать ключ с датой "по умолчанию" keyEmptyPValue.Id = keyGroupPValue.Id; // попробовать найти элемент с датой "по умолчанию" if (pPut.ContainsKey(keyEmptyPValue) == true) { // сохранить значение перед удалением элемента с датой "по умолчанию" emptyPValue = pPut[keyEmptyPValue]; // удалить элемент с датой "по умолчанию" pPut.Remove(keyEmptyPValue); // добавить элемент с новым ключом и старым значением pPut.Add(keyGroupPValue, emptyPValue); } else if (pPut.ContainsKey(keyGroupPValue) == false) { templatePValue = pPut.FirstOrDefault(put => { return(put.Key.Id == keyGroupPValue.Id); }).Value; if (templatePValue.m_iId > 0) { pPut.Add( keyGroupPValue , new P_ALG.P_PUT.P_VALUE() { m_iId = templatePValue.m_iId , m_bDeny = templatePValue.m_bDeny , m_idRatio = templatePValue.m_idRatio , m_sQuality = ID_QUALITY_VALUE.NOT_REC , value = 0F , m_fMinValue = templatePValue.m_fMinValue , m_fMaxValue = templatePValue.m_fMaxValue } ); } else { ; } } else { ; } }
private float calculateOut(string nAlg, DateTime stamp) { float fRes = 0F, fTmp = -1F;//промежуточная велечина float sum = 0, sum1 = 0; P_ALG.KEY_P_VALUE keyStationPValue , keyPValue; int i = -1; keyStationPValue = new P_ALG.KEY_P_VALUE() { Id = ST, Stamp = stamp }; switch (nAlg) { #region 1.1 case @"1.1": //Удельный объем for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue = new P_ALG.KEY_P_VALUE() { Id = ID_COMP[i], Stamp = stamp }; double temp = 9.771 * Math.Pow(10, -4) + 1.774 * Math.Pow(10, -5) * In["1.2"][keyPValue].value / 100 + 2.52 * Math.Pow(10, -5) * Math.Pow((In["1.2"][keyPValue].value / 100), 2) + 2.96 * Math.Pow(10, -6) * Math.Pow((In["1.2"][keyPValue].value / 100 - 1.5), 3) * In["1.2"][keyPValue].value / 100 + (3.225 * Math.Pow(10, -6) + 1.3436 * Math.Pow(10, -6) * In["1.2"][keyPValue].value / 100 + 1.684 * Math.Pow(10, -8) * Math.Pow((In["1.2"][keyPValue].value / 100), 6) + 1.432 * Math.Pow(10, -7) * Math.Pow((1 / (In["1.2"][keyPValue].value / 100 + 0.5)), 3)) * ((50 - In["1.4"][keyPValue].value * 0.0980665) / 10) + (3.7 * Math.Pow(10, -8) + 3.588 * Math.Pow(10, -8) * Math.Pow((In["1.2"][keyPValue].value / 100), 3) - 4.05 * Math.Pow(10, -13) * Math.Pow((In["1.2"][keyPValue].value / 100), 9)) * Math.Pow(((50 - In["1.4"][keyPValue].value * 0.0980665) / 10), 2) + +1.1766 * Math.Pow(10, -13) * Math.Pow((In["1.2"][keyPValue].value / 100), 12) * Math.Pow(((50 - In["1.4"][keyPValue].value * 0.0980665) / 10), 4); Out[nAlg][keyPValue].value = (float)temp /* 10000*/; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); } break; #endregion #region 1.2 case @"1.2": //Расход сетевой воды с поправкой for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue = new P_ALG.KEY_P_VALUE() { Id = ID_COMP[i], Stamp = stamp }; double temp = In["1.1"][keyPValue].value; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } break; #endregion #region 1.3 case @"1.3": //Энтальпия пр for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue = new P_ALG.KEY_P_VALUE() { Id = ID_COMP[i], Stamp = stamp }; double p = In["1.4"][keyPValue].value; double t = In["1.2"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); } break; #endregion #region 1.4 case @"1.4": //Энтальпия обр for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["1.4"][keyPValue].value; //Индекс обратного давления double t = In["1.2"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = 0 /*(float)str*/; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); } break; #endregion #region 1.5 case @"1.5": //Тепло по блокам for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = (In["1.1"][keyPValue].value * (Out["1.3"][keyPValue].value - In["5.2"][keyStationPValue].value)) / 1000; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } break; #endregion #region 2.1 case @"2.1": //Энтальпия пр вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["2.5"][keyPValue].value; double t = In["2.3"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); } break; #endregion #region 2.2 case @"2.2": //Энтальпия обр вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["2.6"][keyPValue].value; double t = In["2.4"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); } break; #endregion #region 2.3 case @"2.3": //Q БД вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = In["7.1"][keyPValue].value; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } break; #endregion #region 2.4 case @"2.4": //Q расч вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = (In["2.1"][keyPValue].value * (Out["2.1"][keyPValue].value - In["5.2"][keyStationPValue].value)) / 1000; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } break; #endregion #region 3.1 case @"3.1": //Тепло с подпиткой сумма суммы тепла по блокам и тепла с подпиткой теплосети for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double temp = 0; if (Out["3.2"][keyPValue].value == 0) { calculateOut("3.2", stamp); } Out[nAlg][keyPValue].value = (In["3.1"][keyPValue].value * (Out["3.2"][keyPValue].value - In["5.2"][keyStationPValue].value)) / 1000; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 3.2 case @"3.2": //Энтальпия тепла for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["2.6"][keyPValue].value; double t = In["2.4"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 3.3 case @"3.3": //Тепло по блокам с подпиткой for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double temp = 0; Out[nAlg][keyPValue].value = Out["1.5"][keyStationPValue].value + Out["3.1"][keyPValue].value; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 4.1 case @"4.1": //Q БД тс for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = Out["2.3"][keyStationPValue].value; fRes += Out[nAlg][keyPValue].value; } nAlg = "4.3"; fRes = 0; goto entalp; //???? break; #endregion #region 4.2 case @"4.2": //Q расч тс for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double temp = 0; Out[nAlg][keyPValue].value = (In["4.1"][keyPValue].value * (Out["4.3"][keyPValue].value - In["5.2"][keyStationPValue].value)) / 1000; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 4.3 case @"4.3": //Энтальпия тс entalp: //???? for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["4.4"][keyPValue].value; double t = In["4.2"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 5.1 case @"5.1": //Тепло вывода F1 for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = Out["2.4"][keyStationPValue].value; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 5.2 case @"5.2": //Тепло вывода F2 for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; fRes += In["2.1"][keyPValue].value * Out["2.1"][keyPValue].value - In["2.2"][keyPValue].value * Out["2.2"][keyPValue].value; } Out[nAlg][keyStationPValue].value = fRes / 1000; break; #endregion #region 5.3 case @"5.3": //Небаланс for (i = (int)INDX_COMP.iST; i < (int)INDX_COMP.COUNT; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double temp = 0; Out[nAlg][keyPValue].value = (In["2.1"][keyStationPValue].value - In["2.2"][keyStationPValue].value - In["4.1"][keyStationPValue].value) / In["2.1"][keyStationPValue].value * 100; fRes += Out[nAlg][keyPValue].value; } break; #endregion #region 6.1 case @"6.1": //Q бд for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double temp = 0; Out[nAlg][keyPValue].value = In["7.1"][keyPValue].value; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } nAlg = "6.3"; fRes = 0; goto entpr; break; #endregion #region 6.2 case @"6.2": //Q расч for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; Out[nAlg][keyPValue].value = (In["6.1"][keyPValue].value * (Out["6.3"][keyPValue].value - In["5.2"][keyStationPValue].value)) / 1000; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes; } break; #endregion #region 6.3 case @"6.3": //Энтальпия пр entpr: for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["6.5"][keyPValue].value; double t = In["6.3"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iST - (int)INDX_COMP.iPP2); } nAlg = "6.4"; fRes = 0; goto entob; break; #endregion #region 6.4 case @"6.4": //Энтальпия обр entob: for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; double p = In["6.6"][keyPValue].value; //Индекс обратного давления double t = In["6.4"][keyPValue].value; double temp = (49.4 + 402.5 * t / 100 + 4.767 * Math.Pow((t / 100), 2) + 0.0333 * Math.Pow((t / 100), 6) + (-9.25 + 1.67 * t / 100 + 7.36 * Math.Pow(10, -3) * Math.Pow((t / 100), 6) - 0.008 * Math.Pow((1 / (t / 100 + 0.5)), 5)) * ((50 - p * 0.0980665) / 10) + (-0.073 + 0.079 * t / 100 + 6.8 * Math.Pow(10, -4) * Math.Pow((t / 100), 6)) * Math.Pow(((50 - p * 0.0980665) / 10), 2) + 3.39 * Math.Pow(10, -8) * Math.Pow((1 / 100), 12) * Math.Pow(((50 - p * 0.0980665) / 10), 4)) / 4.1868; Out[nAlg][keyPValue].value = (float)temp; fRes += Out[nAlg][keyPValue].value; Out[nAlg][keyStationPValue].value = fRes / ((int)INDX_COMP.iST - (int)INDX_COMP.iPP2); } break; #endregion default: Logging.Logg().Error(@"TaskTepCalculate::calculateMaket (N_ALG=" + nAlg + @") - неизвестный параметр...", Logging.INDEX_MESSAGE.NOT_SET); break; } return(fRes); }
private float calculateIn(string nAlg, DateTime stamp) { float fRes = 0F, fTmp = -1F;//промежуточная велечина float sum = 0, sum1 = 0; int i = -1; P_ALG.KEY_P_VALUE keyStationPValue , keyPValue; double temp = 0; keyStationPValue = new P_ALG.KEY_P_VALUE() { Id = ST, Stamp = stamp }; switch (nAlg) { #region 1.1 case @"1.1": //Удельный объем for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["1.1"][keyPValue].value; } In[nAlg][keyStationPValue].value = (float)temp; keyPValue.Id = ID_COMP[i - 1]; keyPValue.Stamp = stamp; fRes += In["1.1"][keyPValue].value; break; #endregion #region 1.2 case @"1.2": //Расход сетевой воды с поправкой for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["1.2"][keyPValue].value; } temp = temp / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In["1.2"][keyStationPValue].value; break; #endregion #region 1.3 case @"1.3": //Энтальпия пр for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["1.3"][keyPValue].value; } temp = temp / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In["1.3"][keyStationPValue].value; break; #endregion #region 1.4 case @"1.4": //Энтальпия обр for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; In["1.4"][keyPValue].value = In["1.4"][keyPValue].value /* * (float)10.197*/; temp = temp + In["1.4"][keyPValue].value; } temp = temp / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In["1.4"][keyStationPValue].value; break; #endregion #region 1.5 case @"1.5": //Тепло по блокам for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["1.5"][keyPValue].value; } temp = temp / ((int)INDX_COMP.iOP1 - (int)INDX_COMP.iBL1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In["1.5"][keyStationPValue].value; break; #endregion #region 2.1 case @"2.1": //Энтальпия пр вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 2.2 case @"2.2": //Энтальпия обр вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; break; #endregion #region 2.3 case @"2.3": //Q БД вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 2.4 case @"2.4": //Q расч вывод for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 2.5 case @"2.5": for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; In[nAlg][keyPValue].value = In[nAlg][keyPValue].value * (float)10.197; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 2.6 case @"2.6": for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; In[nAlg][keyPValue].value = In[nAlg][keyPValue].value * (float)10.197; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 3.3 case @"3.3": //T циркулир. воды ТС по блокам int col = 0; for (i = (int)INDX_COMP.iBL1; i < (int)INDX_COMP.iOP1; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["1.3"][keyPValue].value; col++; } In[nAlg][keyStationPValue].value = (float)(temp / col); fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 3.4 case @"3.4": In[nAlg][keyStationPValue].value = In[nAlg][keyStationPValue].value /** (float)10.197*/; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 4.3 case @"4.3": //T обратной воды ТС по выводам double temp_vzves = 0; for (i = (int)INDX_COMP.iOP1; i < (int)INDX_COMP.iPP2; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In["2.2"][keyPValue].value; temp_vzves = temp_vzves + (In["2.2"][keyPValue].value * In["2.4"][keyPValue].value); } In[nAlg][keyStationPValue].value = (float)(temp_vzves / temp); fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 4.4 case @"4.4": In[nAlg][keyStationPValue].value = In[nAlg][keyStationPValue].value * (float)10.197; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 5.1 //case @"5.1": // In[nAlg][keyStationPValue].value = In[nAlg][keyStationPValue].value * (float)10.197; // fRes += In[nAlg][keyStationPValue].value; // break; #endregion #region 6.1 case @"6.1": //Энтальпия пр вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 6.2 case @"6.2": //Энтальпия обр вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; break; #endregion #region 6.3 case @"6.3": //Q БД вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 6.4 case @"6.4": //Q расч вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 6.5 case @"6.5": //Q расч вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; In[nAlg][keyPValue].value = In[nAlg][keyPValue].value * (float)10.197; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion #region 6.6 case @"6.6": //Q расч вывод for (i = (int)INDX_COMP.iPP2; i < (int)INDX_COMP.iST; i++) { keyPValue.Id = ID_COMP[i]; keyPValue.Stamp = stamp; In[nAlg][keyPValue].value = In[nAlg][keyPValue].value * (float)10.197; temp = temp + In[nAlg][keyPValue].value; } temp = temp / ((int)INDX_COMP.iPP2 - (int)INDX_COMP.iOP1); In[nAlg][keyStationPValue].value = (float)temp; fRes += In[nAlg][keyStationPValue].value; break; #endregion default: break; } return(fRes); }
protected int initValues(P_ALG pAlg , IEnumerable <HandlerDbTaskCalculate.NALG_PARAMETER> listNAlg , IEnumerable <HandlerDbTaskCalculate.PUT_PARAMETER> listPutPar , IEnumerable <VALUE> values) { int iRes = 0; NALG_PARAMETER nAlg; IEnumerable <VALUE> putValues; //VALUE value; P_ALG.KEY_P_VALUE keyPValue; foreach (PUT_PARAMETER putPar in listPutPar) { if (putPar.IsNaN == false) { nAlg = listNAlg.FirstOrDefault(item => { return(item.m_Id == putPar.m_idNAlg); }); putValues = values.Where(item => { return(item.m_IdPut == putPar.m_Id); }); if (!(nAlg == null)) { if (!(nAlg.m_Id < 0)) { foreach (VALUE value in putValues) { if ((value.m_IdPut > 0) /*&& (((value.stamp_value.Equals(DateTime.MinValue) == false)))*/) { if (pAlg.ContainsKey(nAlg.m_nAlg) == false) { pAlg.Add(nAlg.m_nAlg, new P_ALG.P_PUT(nAlg.m_Id, !nAlg.m_bEnabled, nAlg.m_sAverage)); } else { ; } keyPValue = new P_ALG.KEY_P_VALUE() { Id = putPar.IdComponent, Stamp = value.stamp_value }; if (pAlg[nAlg.m_nAlg].ContainsKey(keyPValue) == false) { pAlg[nAlg.m_nAlg].Add(keyPValue , new P_ALG.P_PUT.P_VALUE() { m_iId = putPar.m_Id , m_bDeny = !putPar.IsEnabled , m_idRatio = putPar.m_prjRatio , m_sQuality = (value.stamp_value.Equals(DateTime.MinValue) == false) ? value.m_iQuality : ID_QUALITY_VALUE.NOT_REC , value = (value.stamp_value.Equals(DateTime.MinValue) == false) ? value.value : 0F , m_fMinValue = putPar.m_fltMinValue , m_fMaxValue = putPar.m_fltMaxValue }); } else { // для параметра 1-го порядка уже содержится значение параметра 2-го порядка ; } } else { // некорректный параметр расчета 2-го порядка ; } } } else { // не найден либо параметр 1-го порядка, либо значение для параметра 2-го порядка ; } } else { // не найден параметр 1-го порядка (не ошибка - возможно putPar для другого типа расчета) ; } } else { // параметр 2-го порядка не достоверен ; } } return(iRes); }