Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Iteraciones en Labview para calcular el valor de una variable a partir de la misma en el tiempo anterior

Buenos días, debo hacer mi proyecto de fin de carrera de ingeniería con el programa LabView, jamás he trabajado con este programa y me siento muy perdida y agobiada, si pudiérais ayudarme lo agradecería en el alma.

Uno de mis numerosos problemas es que tengo que calcular la temperatura del agua dentro de un tubo y en la pared de ese tubo. Tengo que discretizar la longitud del tubo y calcular la temperatura en cada punto de discretizacion de la longitud en cada instante de tiempo para un tiempo de utilización determinado. No se como hacer los bucles para que calcule para cada tiempo la temperatura en todos los puntos de la longitud del tubo. El codigo utilizado en matlab sería:

Delta_t_utilisateur = 1;
M = 0.004;
Dint = 0.005;
Dext = 0.006;
q = 40000;
Tinf = 288;
L = 0.2;


n=10;
g=9.81;
rho_Cu=8900;
Cp_Cu=389;
K_Cu=(372+385)/2;
perimetre_int=pi*Dint;
perimetre_ext=pi*Dext;
S=pi/4*Dint^2;
Ax=L/n;

a_Cu=K_Cu/(rho_Cu*Cp_Cu);

At_fourier_1=(Ax*rho_Cu*pi*Dint^2/4)/(0.004*10);

m_1=(Delta_t_utilisateur/At_fourier_1)+1;
m=fix(m_1)+1;

At_fourier=Delta_t_utilisateur/(m-1);

for j=1:m
    for l=1:n
        Tf(1,l)=Tinf;
        Tp(1,l)=293;
        Tf(j,1)=Tinf;
        Tp(j,1)=293;
        
    end
end



for j=2:m

    for l=2:n
        Tm(j-1,l)=(Tf(j-1,l)+Tp(j-1,l))/2;
        rho(j-1,l)=-0.0000001122*(Tm(j-1,l)-273)^4+0.0000372467*(Tm(j-1,l)-273)^3-0.0071796133*(Tm(j-1,l)-273)^2+0.0413053150*(Tm(j-1,l)-273)+999.9643281348;
        Cp(j-1,l)=-0.000000026906*(Tm(j-1,l)-273)^5+0.000009300200*(Tm(j-1,l)-273)^4-0.001243459106*(Tm(j-1,l)-273)^3+0.088330365059*(Tm(j-1,l)-273)^2-3.032738610723*(Tm(j-1,l)-273)+4217.921302035310;
        kw(j-1,l)=0.0000000006*(Tm(j-1,l)-273)^4-0.0000001165*(Tm(j-1,l)-273)^3-0.0000019248*(Tm(j-1,l)-273)^2+0.0019759690*(Tm(j-1,l)-273)+0.5606108063;
        mu(j-1,l)=-0.0000000021*(Tm(j-1,l)-273)^3+0.0000004843*(Tm(j-1,l)-273)^2-0.0000418378*(Tm(j-1,l)-273)+0.0016769992;
        rhoa(j-1,l)=-0.0000000355*(((Tp(j-1,l)-273)+(Tinf-273))/2)^3+0.0000158130*(((Tp(j-1,l)-273)+(Tinf-273))/2)^2-0.0046557937*(((Tp(j-1,l)-273)+(Tinf-273))/2)+1.2756013125;
        Cpa(j-1,l)=-0.0000000048*(((Tp(j-1,l)-273)+(Tinf-273))/2)^4+0.0000008159*(((Tp(j-1,l)-273)+(Tinf-273))/2)^3+0.0003691428*(((Tp(j-1,l)-273)+(Tinf-273))/2)^2+0.0148648025*(((Tp(j-1,l)-273)+(Tinf-273))/2)+1005.9224578201;
        ka(j-1,l)=0.0000717582*(((Tp(j-1,l)-273)+(Tinf-273))/2)+0.0240588239;
        mua(j-1,l)=0.0000000472*(((Tp(j-1,l)-273)+(Tinf-273))/2)+0.0000177345;
             
        x(l-1)=(l-1)*Ax;
    
        Re(j-1,l)=M*Dint/(S*mu(j-1,l));
        Pr(j-1,l)=Cp(j-1,l)*mu(j-1,l)/kw(j-1,l);
        Lt(j-1,l)=0.05*Dint*Re(j-1,l)*Pr(j-1,l);
        Gz(j-1,l)=Pr(j-1,l)*Re(j-1,l)*(Dint/2)/x(l-1);
        Gr(j-1,l)=((rhoa(j-1,l))^2*g*2*(Tp(j-1,l)-Tinf)*x(l-1)^3)/((mua(j-1,l))^2*(Tp(j-1,l)+Tinf));
        Pra(j-1,l)=Cpa(j-1,l)*mua(j-1,l)/rhoa(j-1,l);
        Ra(j-1,l)=Gr(j-1,l)*Pra(j-1,l);

            if Re(j-1,l)<2300
                if x(l-1)>Lt(j-1,l)
                    Nu(j-1,l)=4.36;
                else
                    Nu(j-1,l)=1.637*(Gz(j-1,l))^(1/3);
                end
            else
                 if x(l-1)/Dint>=60
                    Nu(j-1,l)=0.023*(Re(j-1,l))^0.8*(Pr(j-1,l))^(1/3);
                   elseif x(l-1)/Dint>=20 & x(l-1)/Dint<60
                          Nu(j-1,l)=(0.023*(Re(j-1,l))^0.8*(Pr(j-1,l))^(1/3))*(1+6*Dint/x(l));
                    elseif x(l-1)/Dint>0 & x(l-1)/Dint<20
                        Nu(j-1,l)=(0.023*(Re(j-1,l))^0.8*(Pr(j-1,l))^(1/3))*(1+(Dint/x(l)))^(0.7);
                    end

            end

            
            hint(j-1,l)=kw(j-1,l)*Nu(j-1,l)/Dint;
        

            if Ra(j-1,l)<1000000000
                Nue(j-1,l)=(Gr(j-1,l)/4)^(1/4)*g*Pra(j-1,l);
            else
                Nue(j-1,l)=0.0293*(Pra(j-1,l))^(7/15)*(1+0.444*(Pra(j-1,l))^(2/3))^(-2/5)*(Gr(j-1,l))^(2/5);
            end

            hext(j-1,l)=ka(j-1,l)*Nue(j-1,l)/Dext;

            f1(j-1,l)=M*At_fourier/(rho(j-1,l)*S*Ax);
            f2(j-1,l)=hint(j-1,l)*perimetre_int*At_fourier/(rho(j-1,l)*S*Cp(j-1,l));
            E1=K_Cu*At_fourier/(Ax^2*rho_Cu*Cp_Cu);
            E2(j-1,l)=hext(j-1,l)*perimetre_ext*At_fourier/(pi/4*(Dext^2-Dint^2)*rho_Cu*Cp_Cu);
            E3(j-1,l)=hint(j-1,l)*perimetre_int*At_fourier/(pi/4*(Dext^2-Dint^2)*rho_Cu*Cp_Cu);
            E4=q*perimetre_ext*At_fourier/(pi/4*(Dext^2-Dint^2)*rho_Cu*Cp_Cu);
        
        
        
            Tf(j,l)=f1(j-1,l)*(Tf(j-1,l-1)-Tf(j-1,l))+f2(j-1,l)*(Tp(j-1,l)-Tf(j-1,l))+Tf(j-1,l);
     
        
        
        
        if l==n
            Tp(j,l)=E1*(Tp(j-1,l)-Tp(j-1,l-1))+E2(j-1,l)*(Tinf-Tp(j-1,l))-E3(j-1,l)*(Tp(j-1,l)-Tf(j-1,l))+E4+Tp(j-1,l);
        else
            Tp(j,l)=E1*(Tp(j-1,l)-Tp(j-1,l-1))-E1*(Tp(j-1,l)-Tp(j-1,l+1))+E2(j-1,l)*(Tinf-Tp(j-1,l))-E3(j-1,l)*(Tp(j-1,l)-Tf(j-1,l))+E4+Tp(j-1,l);
        end
    end
end


Como se ve al final del código calculo cada temperatura a partir del tiempo anterior. j se refiere al tiempo y l se refiere a la longitud del tubo. En rojo oscuro señalo las ecuaciones a partir de las cuales calculo las temperaturas. Las otras ecuaciuones son para calcular los coeficientes de estas primeras, las variables del fluido dentro y fuera del conducto que son variables con la temperatura.

Por favor, necesito ayuda, muchas gracias de antemano.

0 kudos
Mensaje 1 de 2
3.929 Vistas

Para acceder al valor en el ciclo anterior en Labview se utilizan los shift register, cablea el dato a la salida del ciclo for, das click derecho en la salida y selecciona add shift register.

Rodrigo Cuenca
www.cidesi.com

0 kudos
Mensaje 2 de 2
3.921 Vistas