Wie kann man als static definieren

fish78
2007-10-01
2008-08-22
  • fish78 - 2007-10-01

    HI

    vielleicht weißt jemand ,wie kann man einige Variable als static definieren bei ST?

    mit static ist nicht korrekte

     
  • foenig - 2007-10-01

    Programme (PRG) und Funktions Blöcke (FB) haben von Haus aus einen lokalen statischen Variablen Bereich. Zwischen VAR und END_VAR.

    Ansonsten einfach mal in der Hilfe unter VAR lesen es gibt da ja noch RETAIN und PERSISTENT Variablen.

     
  • mwatermann - 2007-10-01

    wenn du's nicht von hand machen willst:

    variable im programm markieren, SHIFT+F2 drücken, auswahl machen und CONSTANT anhaken.

     
  • foenig - 2007-10-01

    CONSTANT ist aber etwas mehr als nur statisch es ist eine Konstante (wie der Name schon sagt).

     
  • fish78 - 2007-10-01

    Hi mwatermann

    Hi foenig

    werde ich nicht als Konstant definieren.

    Ich werde nur einmal am anfangs als eine festgestellte Zahl benutzen z.B als 0,

    aber spät kann ich den Wert immer ändern.

     
  • mwatermann - 2007-10-01

    sorry... mein fehler.

    einfach zwischen VAR .. END_VAR deklarieren und instanzieren.

    so wie du beschreibst, willst du ja einfach nur eine variable mit einem bestimmten anfangswert belegen, z.B.:

    VAR
      zahl : INT := 0;
    END_VAR
    
     
  • Ralph Holz - 2007-10-01

    Da habt ihr aber ein schlechtes Beispiel gewählt. Alle Variablen vom Typ VAR werden automatisch bei einem Reset mit 0 initialisiert. Also nur von 0 abweichende Initalwerte sind sinvoll.

    Grüße

    Ralph

     
  • Anonymous - 2007-10-02

    Originally created by: Bernhard Werner

    Hallo,

    wirkliche static-Variablen gibt es erst in der Generation 3x:

    VAR_STAT

    END_VAR

    (statisch hiesse beispielsweise in Funktionsblöcken: die Variable teilen sich alle Instanzen des Funktionsblocks, in Funktionen: die Variable behält den Wert beim nächsten Aufruf bei.)

    Solche Variablen kann man in Funktionsblöcken und Funktionen deklarieren.

    In der Generation 2.x muss man dafür Globale Variablen oder Programmvariablen verwenden. Diese sind per Definition immer statisch.

    Bernhard Werner

     
  • foenig - 2007-10-02

    Hallo Bernhard,

    das was hier als "wirkliche static-Variablen" bezeichnet wird ist im Bezug auf C usw. sicher richtig. Jetzt kommt das "aber" ich finde es eine unglückliche Wortwahl da der STAT Bereich z.B. bei Siemens den lokalen Statischen variablen der jeweiligen Instanz eines FBs entsprechen. Daher finde ich VAR_STAT irreführend und hätte noch zwei Buchstaben spendiert und VAR_STATIC in Anlehnung an C genannt.

     
  • Anonymous - 2007-10-04

    Originally created by: Bernhard Werner

    Ah so,

    schau her, da kenn ich mich mit Siemens mal wieder viel zu wenig aus.

    Die ursprüngliche Frage nach statischen Variablen schien mir aber auf C abzuzielen, schon wegen des Schlüsselworts static.

    VAR_STAT ist tatsächlich auch nicht aus der IEC, sondern von uns eingeführt. Wir haben den Namen entsprechend VAR_TEMP gebildet, und das ist in der Version 2 der Norm eingeführt worden (wird von uns auch ab Version 3 von CoDeSys unterstützt, und wir haben uns gedacht, wenn schon, denn schon).

    Bernhard

     
  • Anonymous - 2008-08-22

    Originally created by: PM

    Hallo,

    nach einiger Zeit mal wieder ein Beitrag zu diesem Thema.

    Was hat es mit VAR_TEMP genau auf sich? Ihr schreibt, dass das Schlüsselwort ab V3 verfügbar ist, in V2.3 kann man aber auch schon VAR_TEMP deklarieren. Welche Funktion hat VAR_TEMP in V2.3? Entspricht das IEC61131?

    Grüße

     

Log in to post a comment.