Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Struct und Variablen

gravieren
2006-07-19
2006-07-20
  • gravieren - 2006-07-19

    Hi

    Ich habe meherere Varablen.

    z.b. als OUTOUT definiert.

    Name out_val : REAL

           ebenso habe ich einen struct mit dem Name "verbund"
    
    
    
         verbund.p_wert   : REAL
    
         verbund.i_wert    : REAL
    
         verbund.d_wert   : REAL
    
         verbund.out_val  : REAL
    

    Für den Compiler sind beide Variablen Indentisch gemäß Fehlermeldung

    ( out_val <--> verbund.outval )

    Mache ich etwas falsch ?

    Karl

     
  • radiator - 2006-07-19

    Hallo!

    du hast zwei variablen mit dem selben namen. "verbund.out_val" ist NICHT der variablenname, sondern out_val.

    SYNTAX:

    <strukturname>.<variablenname></variablenname></strukturname>

    somit hast du tatsächlich zweimal dieselbe variable. ob sie in eine struktur eingebunden ist oder nicht ist dabei egal. irgendwo im speicher liegen zwei exakt gleiche variablen, nämlich mit dem namen out_val und vom typ REAL.

    nenn doch einfach eine der variablen out_value oder so.

    btw. was meinst du mit OUTOUT - deklaration?

    gruß

    björn

     
  • gravieren - 2006-07-19

    Hi

    btw. was meinst du mit OUTOUT - deklaration?

    Äh, da hat wohl jemand das "P" geklaut

    Sollte OUTPUT bedeuten (VAR_OUTPUT)

    Karl

     
  • gravieren - 2006-07-19

    Äh

    Nachfrage, solldas bedeuten, das es z.b. bei 3 Tasks die unter umständen gleich namen haben, KEINE Dastenkapselung gibt ?

    Bibliotheken, die "meinen" Variablennamen benutzen

    können durch "Zufall" verändert werden ?

    (Gemäß murphys Gesetz )

    Karl

     
  • radiator - 2006-07-20

    hallo karl!

    kann man überhaupt drei tasks mit dem gleichen namen anlegen? ich glaube auch das geht nicht durch den kompiler. das wird er bestimmt auch anmeckern.

    du verwendest doch die variablen out_val und verbund.out_val in demselben programm, oder? dann ist das auf jeden fall so, dass der compiler meckert.

    wenn du eine bibliothek verwendest, erzeugst du von den funktionen und funktionsblöcken eine instanz von denen wieder jede einen anderen namen hat und die ist wieder als gesondertes kleines programm anzusehen. deshalb kommt es da nicht zu überschneidungen.

    gruß

    björn

     
  • gravieren - 2006-07-20

    Hi Radiator

    kann man überhaupt drei tasks mit dem gleichen namen anlegen?

    Tasknamen natürlich unterschiedlich.

    Jeder hat so "varoriten", wie "a" oder "loop" für Schleifenvariablen.

    Das habe ich gemeint.

    Karl

     

Log in to post a comment.