tangxu
2023-04-10 dfdb157df49c99d5599688fa6209ec2dc9f1afbc
原水调度
已修改3个文件
211 ■■■■ 文件已修改
Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/dispatch/DispatchAna_ShysController.cs
@@ -8,6 +8,7 @@
using System.ComponentModel.DataAnnotations;
using Mapster;
using Microsoft.AspNetCore.Authorization;
using SqlSugar;
namespace IStation.Application
{
@@ -297,6 +298,39 @@
                    null,
                    machine_run_status);
            #region 实时量
            double real_total_flow_pipe1 = 0;
            var pipe1_val_flow_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002001");
            if (pipe1_val_flow_real != null && pipe1_val_flow_real.value > 100)
            {//实时量,  stationCX_2#_flow" 三高给的目标量
                real_total_flow_pipe1 = pipe1_val_flow_real.value;
            }
            double real_oulet_press_pipe1 = 0;
            var pipe1_val_press_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002005");
            if (pipe1_val_press_real != null && pipe1_val_press_real.value > 100)
            {//实时量,  stationCX_2#_flow" 三高给的目标量
                real_oulet_press_pipe1 = pipe1_val_press_real.value;
            }
            double real_total_flow_pipe2 = 0;
            var pipe2_val_flow_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002002");
            if (pipe2_val_flow_real != null && pipe2_val_flow_real.value > 100)
            {
                real_total_flow_pipe2 = pipe2_val_flow_real.value;
            }
            double real_oulet_press_pipe2 = 0;
            var pipe2_val_press_real = result_sg.scada.Find(t => t.tagname == "_0402010403030002006");
            if (pipe2_val_press_real != null && pipe2_val_press_real.value > 100)
            {//实时量,  stationCX_2#_flow" 三高给的目标量
                real_oulet_press_pipe2 = pipe2_val_press_real.value;
            }
            #endregion
            //出方案 
            var scheme = calulator.Calc(out error_info);
            if (scheme == null)
@@ -309,6 +343,48 @@
            result.P = scheme.TotalWrkP;
            result.WP = scheme.WP;
            result.UWP = scheme.UWP;
            result.Scheme = new DispatchAnaCurrentOutput();
            result.Scheme.MiddleValveStatus = middleValveStatus;
            result.Scheme.Pipes = new List<DispatchAnaCurrentOutput.PipeParaOutput>();
            result.Scheme.Pipes.Add(
                new DispatchAnaCurrentOutput.PipeParaOutput()
                {
                    Name = "1#管",
                    TargetFlow = pipe1.TargetFlow,
                    TargetPressure = pipe1.TargetPress,
                    CurrentFlow = real_total_flow_pipe1,
                    CurrentPressure = real_oulet_press_pipe1
                }
                );
            result.Scheme.Pipes.Add(
                new DispatchAnaCurrentOutput.PipeParaOutput()
                {
                    Name = "2#管",
                    TargetFlow = pipe2.TargetFlow,
                    TargetPressure = pipe2.TargetPress,
                    CurrentFlow = real_total_flow_pipe2,
                    CurrentPressure = real_oulet_press_pipe2
                }
            );
            List<string> machine_frq_hz_target_name = new List<string> {
                        "_0402010403010112007",
                        "_0402010403010212019",
                        "_0402010403010312007",
                        "_0402010403010412019" };
            List<string> machine_speed_target_name = new List<string> {
                        "_0402010403010112008",
                        "_0402010403010212020",
                        "_0402010403010312008",
                        "_0402010403010412020" };
            List<string> machine_names = new List<string> {
                        "长兴泵房1号机泵",
                        "长兴泵房2号机泵",
                        "长兴泵房3号机泵",
                        "长兴泵房4号机泵" };
            result.Pumps = new List<IStation.Application.DispatchAnaSchemeItemOutput>();
            foreach (IStation.Calculation.DispatchAna.Model.AnaSchemeItem item in scheme.Items)
            {
@@ -324,16 +400,34 @@
                pump_item.P = item.WorkPointP;
                pump_item.Frequency = item.Frequence;
                pump_item.Speed = item.Speed;
                result.Pumps.Add(pump_item);
                if (pump_item.Index == 0)
                    pump_item.Name = "长兴泵房1号机泵";
                else if (pump_item.Index == 1)
                    pump_item.Name = "长兴泵房2号机泵";
                else if (pump_item.Index == 2)
                    pump_item.Name = "长兴泵房3号机泵";
                else if (pump_item.Index == 3)
                    pump_item.Name = "长兴泵房4号机泵";
                if (pump_item.Index >= 0 && pump_item.Index < 4)
                {
                    //获取实时频率
                    var fr_hz_tag_name = machine_frq_hz_target_name[pump_item.Index];
                    var current_val_fr_hz = result_sg.scada.Find(t => t.tagname == fr_hz_tag_name);
                    if (current_val_fr_hz != null && current_val_fr_hz.value > 10)
                    {
                        pump_item.CurrentFrequency = current_val_fr_hz.value;
                    }
                    //获取实时转速
                    var speed_tag_name = machine_speed_target_name[pump_item.Index];
                    var current_val_speed = result_sg.scada.Find(t => t.tagname == speed_tag_name);
                    if (current_val_speed != null && current_val_speed.value > 10)
                    {
                        pump_item.CurrentSpeed = current_val_speed.value;
                    }
                    //机泵名称
                    pump_item.Name = machine_names[pump_item.Index];
                }
                result.Pumps.Add(pump_item);
            }
@@ -341,28 +435,15 @@
            
            if (machine_run_status.Count == 1)
            {//保证开一台泵时, 流量大 频率也大, 流量小 , 频率也小
                double current_total_flow = 0;
                var pipe1_val_flow_current = result_sg.scada.Find(t => t.tagname == "_0402010403030002001");
                if (pipe1_val_flow_current != null && pipe1_val_flow_current.value>100)
                if(pipe1.TargetFlow + pipe2.TargetFlow > 100)
                {
                    current_total_flow = pipe1_val_flow_current.value;
                }
                else
                {
                    var pipe2_val_flow_current = result_sg.scada.Find(t => t.tagname == "_0402010403030002002");
                    if (pipe2_val_flow_current != null && pipe2_val_flow_current.value > 100)
                    {
                        current_total_flow = pipe2_val_flow_current.value;
                    }
                }
                    double current_total_flow = 0;
                    if (pipe1.TargetFlow > 100)
                        current_total_flow = pipe1.TargetFlow;
                    else
                        current_total_flow = pipe2.TargetFlow;
                if(current_total_flow > 100)
                {
                    List<string > machine_frq_hz_target_name = new List<string> {
                        "_0402010403010112007",
                        "_0402010403010212019",
                        "_0402010403010312007",
                        "_0402010403010412019" };
                    var open_pump = result.Pumps.First();
                    var fr_hz_tag_name = machine_frq_hz_target_name[open_pump.Index];
                    var current_val_fr_hz = result_sg.scada.Find(t => t.tagname == fr_hz_tag_name);
Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeItemOutput.cs
@@ -65,6 +65,18 @@
        /// 转速 r/min
        /// </summary>
        public double Speed { get; set; }
        /// <summary>
        /// 频率 hz
        /// </summary>
        public double CurrentFrequency { get; set; }
        /// <summary>
        /// 转速 r/min
        /// </summary>
        public double CurrentSpeed { get; set; }
    }
Application/IStation.Application.OpenApi/shys/dispatch/dto/DispatchAnaSchemeOutput.cs
@@ -1,4 +1,6 @@
using System;
using Microsoft.AspNetCore.Components.Forms;
using Org.BouncyCastle.Bcpg.OpenPgp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -51,5 +53,61 @@
        /// </summary>
        public List<DispatchAnaSchemeItemOutput> Pumps { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DispatchAnaCurrentOutput Scheme { get; set; }
    }
    /// <summary>
    ///
    /// </summary>
    public class DispatchAnaCurrentOutput
    {
        /// <summary>
        ///
        /// </summary>
        public List<PipeParaOutput> Pipes { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int  MiddleValveStatus { get; set; }
        /// <summary>
        ///
        /// </summary>
        public class PipeParaOutput
        {
            /// <summary>
            ///
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 流量 m³/h (三高给的数据)
            /// </summary>
            public double TargetFlow { get; set; }
            /// <summary>
            /// 压力 MPa (三高给的数据)
            /// </summary>
            public double TargetPressure { get; set; }
            /// <summary>
            /// 流量 m³/h (实时)
            /// </summary>
            public double CurrentFlow { get; set; }
            /// <summary>
            /// 压力 MPa(实时)
            /// </summary>
            public double CurrentPressure { get; set; }
        }
    }
}