Skip to content

Exaple #2 [ water pump] [водяной насос]

Alex Ponomariov edited this page Mar 22, 2017 · 2 revisions

Моделирование работы насосного агрегата.

Задание Условия: имеются два танка с водой, находящиеся на разном уровне друг относительно друга. Из танка 1 ( колодец) выкачивается вода центробежным насосом в танк 2 (резервуар). На нагнетании насоса имеется клапан, регулирующий подачу воды ( 0 – 100% ). Объемы колодца и резервуара, а также характеристики насоса выбрать самостоятельно. Учесть, что минимальное давление всасывания насоса –0.3 бар. В начальный момент времени насос выключен Задача: Управлять клапаном подачи и включением насоса, показывать давления на всасывании и нагнетании насоса, расход и уровни в танках в режиме реального времени (с интервалом 1 с). Simulation of the pump unit.

Setting Terms and conditions: there are two tanks with water at different levels relative to each other. From the tank 1 (well) water is pumped by a centrifugal pump into the tank 2 (tank). At the discharge of the pump there is a valve that regulates the flow of water (0 - 100%). well and tank volumes, as well as the characteristics of the pump to choose their own. Take into account that the minimum pump suction pressure -0.3 bar. Initially, the pump is switched off Objective: Manage the supply valve and switching on the pump, showing the pressure at the pump suction and discharge, the real-time flow and the levels in the tanks (with an interval of 1 second). Автор Алексей Пономарев

Задача решается через решение уравнения Бернули The problem is solved by solving Bernoulli equation

Объект с целевой функцией 👍
`namespace WindowsFormsApp6 { using System.Windows.Forms;

public class Big_pump
{
    //описание полей 
    public double Q_nasosa_naminal { set; get; } // расход насоса по паспарту
    public double Zadviska { set; get; } // положение задвижки
    public double Q_nasosa_raschetnoe { set; get; } 
    public double P_min { set; get; }
    public double D_Tr { set; get; }
    public double lambda { set; get; } // кинетическая вязкость
    public double Plotnost_vody { set; get; }
    public double H1 { set; get; }
    public double H2 { set; get; } // высота размещения второго над насосом
    public double A{ set; get; } //ширина
    public double B { set; get; } // высота
    public double C { set; get; } // глубина
    public double V_balona { set; get; }  // объем балона
    public double V_balona_ost { set; get; }
    public double V_balona_pol { set; get; }
    public double skorost_vody_v_trube { set; get; }  // V2 рассчитываем из расходка
    public double P_atmosfernoe { set; get; } // давление атмосферное
    public double G { set; get; } // ускорение свободного падения
    public double P_vsasivania { get; set; }
    public double P_nagnetania { get; set; }
    public double H3{ set; get; } // высота размещения второго над насосом


    public Big_pump()   // конструктор
    {
        /*
        Q_nasosa_naminal = 0.240;
        Zadviska = 0;
        Q_nasosa_raschetnoe =(1-Zadviska)*Q_nasosa_naminal;
        P_min = 30000;               ;
        D_Tr = 0.71;
        Plotnost_vody = 1000;
        V_balona = 50;
        H1 =0;
        H2 = 5;
       
        V_balona = 50;
        skorost_vody_v_trube = 4 * Q_nasosa_raschetnoe/ (3.14*D_Tr*D_Tr);
        P_atmosfernoe = 1.1; //в паскалях
        G = 9.81;
        P_vsasivania =P_atmosfernoe-H1 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2;
        P_nagnetania =P_atmosfernoe+ H2 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2;
        V_balona_ost = V_balona - Q_nasosa_raschetnoe;
        V_balona_pol = V_balona - V_balona_ost;
        H3 = 5-H1;
          */
        
    }
    public void set_to_zero()
    {
        Q_nasosa_naminal = 0;
        Zadviska = 0;
        Q_nasosa_raschetnoe = (1 - Zadviska) * Q_nasosa_naminal;
        P_min =-0.3;
        D_Tr = 0.12;
        G = 9.81;
        Plotnost_vody = 1000;
        V_balona_ost = 50; // остаток воды в первом баке
        H1 = 5 - V_balona_ost / 10; // высота для первого бака
        H2 = 5; // возвышение насоса - жидкость вылевается в атмосферу !!!
        H3 = 5 - H1;  // высота воды во втором баке
        V_balona = 50; // объем балона

        // skorost_vody_v_trube = 4 * Q_nasosa_raschetnoe / (3.14 * D_Tr * D_Tr);
        skorost_vody_v_trube = 0;
        P_atmosfernoe =101325 ; 
        G = 9.81;
        P_vsasivania = (P_atmosfernoe - H1 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2)/100000;
        //P_nagnetania = (P_atmosfernoe +H2 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2) /100000;
        P_nagnetania = 0; // !!! из условия , что в начальный момент в трубе нет воды , если в трубе есть вода, то считаем по формуле которая содержится в коменте выше

         
    }
    public void Iteracia(double ZZ)

    {            
        Zadviska = ZZ;
        Q_nasosa_raschetnoe = (1 - Zadviska) * Q_nasosa_naminal; // реализация клапана 
        double D_Tr_1 =  D_Tr; 
        skorost_vody_v_trube = (4 * Q_nasosa_raschetnoe) / (3.14 * D_Tr_1 * D_Tr_1);
        H1 = 5 - V_balona_ost / 10;
        H2 = 5;
        H3 = 5 - H1;
        P_vsasivania = (P_atmosfernoe - H1 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2) / 100000;
        P_nagnetania = (P_atmosfernoe +H2 * Plotnost_vody * G - Plotnost_vody * skorost_vody_v_trube * skorost_vody_v_trube / 2) / 100000;
        V_balona_ost = V_balona_ost - Q_nasosa_raschetnoe;
        V_balona_pol = V_balona - V_balona_ost;
          



    }

}
}

`