LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Translate Visual Basic to Lab View

Hello Community,

 

I was wondering if you could help me translate some visual basic syntax to labview's formula node. I got most of it done just need a couple of lines to do the rest.


 

This is the original:

 

'{This procedure, called Prop, calculates the pressure, specific entropy, }
'{and internal energy given the temperature and specific volume. }
Public Sub PROP(T As Double, V As Double)
'{Variables are defined for this procedure. }
Dim S As Double, P As Double, U As Double
'{Additional variables are defined for this procedure. }
S = 0#
Dim RHO As Double, TERM1 As Double, TERM2 As Double, TERM3 As Double, TERM4 As Double
Dim TERM5 As Double, TERM6 As Double, TAU As Double, PSI As Double, DPSIDT As Double
Dim Q As Double, DQDRHO As Double, DQDTAU As Double
Dim I As Integer, J As Integer
'{ After values are initiated, the sumation terms in the property }
'{ equations are calculated using a DO loop. The first DO loop is }
'{ used to calculate terms for PSI and DPSIDT. The following DO }
'{ loops are used to calculate Q, DQDRHO, and DQDTAU. }

TAU = 1000 / T
RHO = 1 / V
TERM1 = 0#
TERM2 = 0#
For I = 1 To 6

TERM1 = C(I) / (Exp((I - 1#) * Log(TAU))) + TERM1
TERM2 = (I - 1#) * C(I) / (1000 * Exp((I - 2#) * Log(TAU))) + TERM2
Next I
PSI = (TERM1 + C(7) * Log(T) + C(8) * Log(T) / TAU)
DPSIDT = (TERM2 + C(7) / T + C(8) / 1000 + C(8) * Log(T) / 1000)
TERM3 = 0#
TERM5 = 0#
TERM6 = 0#
For J = 1 To 7
TERM1 = 0#
TERM2 = 0#
For I = 1 To 8
TERM1 = A(I, J) * (I - 1#) * (RHO - RHOA(J)) ^ (I - 2) + TERM1
TERM2 = A(I, J) * (RHO - RHOA(J)) ^ (I - 1) + TERM2
Next I '{FOR I}
TERM3 = (TAU - TAUA(J)) ^ (J - 2) * (TERM1 + Exp(-EC * RHO) * (-EC * (A(9, J) + A(10, J) * RHO) + A(10, J))) + TERM3
TERM4 = TERM2 + Exp(-EC * RHO) * (A(9, J) + A(10, J) * RHO)
TERM5 = (TAU - TAUA(J)) ^ (J - 2) * TERM4 + TERM5
If (J <> 2) Then TERM6 = (J - 2#) * (TAU - TAUA(J)) ^ (J - 3) * TERM4 + TERM6
Next J '{FOR J}
DQDRHO = (TAU - TAUC) * TERM3
DQDTAU = TERM5 + (TAU - TAUC) * TERM6
Q = (TAU - TAUC) * TERM5

P = RHO * R * T * (1 + RHO * Q + RHO ^ 2 * DQDRHO) * 1000

If (RHO > 0#) Then S = -DPSIDT - R * (Log(RHO) + RHO * Q - RHO * TAU * DQDTAU) + 3.1872

U = PSI - T * DPSIDT + R * T * RHO * TAU * DQDTAU - 0.47
G1 = S
G2 = P
G3 = U

End Sub


This is what I have:

 

S=0;
TAU = 1000 / T;
RHO = 1 / V;
TERM1 = 0;
TERM2 = 0;
int32 I;
for (I = 1 ; I<=6; I+=1)
{
TERM1 = C[I] / (exp((I - 1) * ln(TAU))) + TERM1;
TERM2 = (I - 1) * C[I] / (1000 * exp((I - 2) * ln(TAU))) + TERM2;
}

PSI = (TERM1 + C[7] * ln(T) + C[8] * ln(T) / TAU);
DPSIDT = (TERM2 + C[7] / T + C[8] / 1000 + C[8] * ln(T) / 1000);
TERM3 = 0;
TERM5 = 0;
TERM6 = 0;
int32 J;
for (J =1; J<=7; J+=1)
{
TERM1 = 0;
TERM2 = 0;
for (I = 1; I<=8; I+=1)
{
TERM1 = A[I][J] * (I - 1) * (RHO - RHOA[J]) **(I - 2) + TERM1;
TERM2 = A[I][J] * (RHO - RHOA[J]) **(I - 1) + TERM2;
}
TERM3 = (TAU - TAUA[J])**(J - 2) * (TERM1 + exp(-EC * RHO) * (-EC * (A[9][J] + A[10][J] * RHO) + A[10][J])) + TERM3;
TERM4 = TERM2 + exp(-EC * RHO) * (A[9][J] + A[10][J] * RHO);
TERM5 = (TAU - TAUA[J])**(J - 2) * TERM4 + TERM5;
}
if (J != 2)
{
TERM6 = (J - 2) * (TAU - TAUA[J]) **(J - 3) * TERM4 + TERM6;
}
DQDRHO = (TAU - TAUC) * TERM3;
DQDTAU = TERM5 + (TAU - TAUC) * TERM6;
Q = (TAU - TAUC) * TERM5;

P = RHO * R * T * (1 + RHO * Q + RHO ** 2 * DQDRHO) * 1000;
if (RHO > 0)
{
S = -DPSIDT - R * (ln(RHO) + RHO * Q - RHO * TAU * DQDTAU) + 3.1872;
}
U = PSI - T * DPSIDT + R * T * RHO * TAU * DQDTAU - 0.47;
G1 = S;
G2 = P;
G3 = U;


Some values are undefined but I have them in a serparate .vi file. Something is wrong because I get differnt values when comparing the values. Any help will be appreciated

 

0 Kudos
Message 1 of 4
(2,096 Views)

Can you post the LabVIEW code that you currently have? If yes, identify which version of LabVIEW you are using.

Putnam
Certified LabVIEW Developer

Senior Test Engineer North Shore Technology, Inc.
Currently using LV 2012-LabVIEW 2018, RT8.5


LabVIEW Champion



Message 2 of 4
(2,052 Views)

The second part is the lab view code that I currently have. 

 

S=0;
TAU = 1000 / T;
RHO = 1 / V;
TERM1 = 0;
TERM2 = 0;
int32 I;
for (I = 1 ; I<=6; I+=1)
{
TERM1 = C[I] / (exp((I - 1) * ln(TAU))) + TERM1;
TERM2 = (I - 1) * C[I] / (1000 * exp((I - 2) * ln(TAU))) + TERM2;
}

PSI = (TERM1 + C[7] * ln(T) + C[8] * ln(T) / TAU);
DPSIDT = (TERM2 + C[7] / T + C[8] / 1000 + C[8] * ln(T) / 1000);
TERM3 = 0;
TERM5 = 0;
TERM6 = 0;
int32 J;
for (J =1; J<=7; J+=1)
{
TERM1 = 0;
TERM2 = 0;
for (I = 1; I<=8; I+=1)
{
TERM1 = A[I][J] * (I - 1) * (RHO - RHOA[J]) **(I - 2) + TERM1;
TERM2 = A[I][J] * (RHO - RHOA[J]) **(I - 1) + TERM2;
}
TERM3 = (TAU - TAUA[J])**(J - 2) * (TERM1 + exp(-EC * RHO) * (-EC * (A[9][J] + A[10][J] * RHO) + A[10][J])) + TERM3;
TERM4 = TERM2 + exp(-EC * RHO) * (A[9][J] + A[10][J] * RHO);
TERM5 = (TAU - TAUA[J])**(J - 2) * TERM4 + TERM5;
}
if (J != 2)
{
TERM6 = (J - 2) * (TAU - TAUA[J]) **(J - 3) * TERM4 + TERM6;
}
DQDRHO = (TAU - TAUC) * TERM3;
DQDTAU = TERM5 + (TAU - TAUC) * TERM6;
Q = (TAU - TAUC) * TERM5;

P = RHO * R * T * (1 + RHO * Q + RHO ** 2 * DQDRHO) * 1000;
if (RHO > 0)
{
S = -DPSIDT - R * (ln(RHO) + RHO * Q - RHO * TAU * DQDTAU) + 3.1872;
}
U = PSI - T * DPSIDT + R * T * RHO * TAU * DQDTAU - 0.47;
G1 = S;
G2 = P;
G3 = U;

Download All
0 Kudos
Message 3 of 4
(2,023 Views)

Using 2011 32 bit

0 Kudos
Message 4 of 4
(2,011 Views)