1. Help on converting to EUPHORIA

To : Robert Craig (RDS) or any more expirienced euphorian interested in
conversions

Problem :
Converting Unicomal programs to Euphoria 2.0 I'm running into a small
problem.Unicomal is a OOP language,but I'm surprised how elegant it is
to circumvent the OOP stuff.
Only the concatination of printout X1 with X2 in EU (like XA,XB in Comal)=

   printf(1," %-1s %5.2f",{m[z][con]),f[4]/1000})  (concat X1 and X2)
is not possible,both return values are always zero,seperate values are OK=
=2E
Am I making false reasoning ??,may the EU version be improved ??.
It's a tiny test program,so please don't cut it in pieces.

I would appreciate any tip,could be "positive critism".

TIA Karlheinz
-----------------------------------------------------------------------
//  save "asymot"
// Unicomal Version 19.01.90
PAGE
USE system

STRUC motor

  DIM p2, u, i, pf, nn, fn, con$ OF 1

  FUNC q
    RETURN SQR(3)*u*i*SIN(ACS(pf/100))       // reactive power
  ENDFUNC q

  FUNC m
    RETURN (p2*1000)/(0.1045*nn)             // nominal torque
  ENDFUNC m

  FUNC s
    RETURN SQR(3)*u*i                        // apparent power
  ENDFUNC s

  FUNC p1
    RETURN SQR(3)*u*i*pf                     // active power
  ENDFUNC p1

  FUNC eff
    RETURN (p2/p1)                           // efficiency
  ENDFUNC eff

ENDSTRUC motor

quantity:=3D6

DIM ac_motor(6). OF motor
FOR no:=3D1 TO quantity DO READ ac_motor(no).
// Nameplate data
// P2(kW),U(Volt),I(A),pf(%),n(RPM),f(Hz),connection type (delta/wye)
DATA 3,380,6.9,84,960,50,"w"
DATA 4,380,8.8,84,960,50,"w"
DATA 5.5,380,11.5,85,960,50,"w"
DATA 7.5,380,15.6,85,960,50,"w"
DATA 11,380,22.5,86,960,50,"w"
DATA 15,380,30,86,960,50,"w"
PRINT AT 2,2: "3-phase Induction motors"
PRINT AT 4,2: " P2       nn      Un     fn     pf     I   con  Q    Tn   =
 =

S     eff"
PRINT AT 5,2: " kW       RPM      V     Hz      %     A       kvar  MN   =
 =

kVA     %"
PRINT AT 6,2:
FOR no:=3D1 TO quantity DO
  PRINT USING "##.##  ####.## ": ac_motor(no).p2,ac_motor(no).nn;
  PRINT USING "###.## ## Hz ": ac_motor(no).u,ac_motor(no).fn;
  PRINT USING "##.## ##.## ": ac_motor(no).pf,ac_motor(no).i;
  PRINT USING ">> ##.## ": ac_motor(no).con$,ac_motor(no).q/1000;    <-- =
XA
  PRINT USING "####.## ##.##": ac_motor(no).m,ac_motor(no).s/1000;   <-- =
XB
  PRINT USING "##.## ": ac_motor(no).eff*100000
ENDFOR no
-- asymot.ex 21.6.98      Unicomal 3.11 ---> Euphoria 2.0
-------------------------------------------------------------------------=
-
sequence f,m
integer quantity
constant P2 =3D 1,U =3D 2,I =3D 3,pf =3D 4,n =3D 5,fn =3D 6,con =3D 7
-------------------------------------------------------------------------=
--
clear_screen()
-------------------------------------------------------------------------=
--
function acs(atom c)   -- arccosinus in radians
  return  1.5708 - 2 * arctan(c/(1 + sqrt(1 - c * c)))
end function
-------------------------------------------------------------------------=
--
m=3D{   -- nameplate data
   {3  ,380,6.9 ,0.84,960,50,"w"},
   {4  ,380,8.8 ,0.84,960,50,"w"},
   {5.5,380,11.5,0.85,960,50,"w"},
   {7.5,380,15.6,0.85,960,50,"w"},
   {11 ,380,22.5,0.86,960,50,"w"},
   {15 ,380,30  ,0.86,960,50,"w"}
  }
puts(1,"  3-phase Induction motors \n")
puts(1,"  P2   nn    Un  fn  pf    I     con  Q      T      S     eff\n")=

puts(1,"  kW   RPM   V   Hz   %    A          kvar   Nm     kVA    %\n\n"=
)

quantity =3D 6

for z =3D 1 to quantity do
f=3D{      -- formulas
   {sqrt(3) * m[z][U] * m[z][I] * m[z][pf]},             -- P1
   {sqrt(3) * m[z][U] * m[z][I]},                        -- apparent powe=
r
   {m[z][P2] /(sqrt(3) * m[z][U] * m[z][I] * m[z][pf])}, -- efficiency
   {sqrt(3) * m[z][U] * m[z][I] * sin(acs(m[z][pf]))},   -- reactive powe=
r
   {(m[z][P2] * 1000) / (0.1045 * m[z][n])}              -- nominal torqu=
e
  }
   printf(1," %5.2f %-4.0f ",{m[z][P2],m[z][n]})         -- P2 , nn
   printf(1," %-3.0f %2.0f ",{m[z][U],m[z][fn]})         -- Un , fn
   printf(1," %-2.2f %6.2f ",{m[z][pf],m[z][I]})         -- pf , I
   printf(1," %-1s ",m[z][con])                          -- con   <-- X1
   printf(1," %5.2f ",f[4]/1000)                         -- Q     <-- X2
   printf(1," %6.2f ",f[5])                              -- mn    <-- X3
   printf(1," %5.2f ",f[2]/1000)                         -- S     <-- X4
   printf(1," %-3.2f\n",f[3] * 100000)                   -- eff
end for
-------------------------------------------------------------------------=
--

 =

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu