Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: ST:mehrere Arrays bei Deklaration initialisieren

  1. #1
    Registriert seit
    24.02.2012
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe vor in ST einen Baustein zur linearen Interpolation von Kennlinien zu bauen (EntwicklungsumgebungTwinCAT 2.11).
    Die Deklaration sieht so aus:

    Code:
    FUNCTION_BLOCK FB_Kennlinie
    VAR_INPUT
           IN               : REAL;
           y                : ARRAY[1..10] OF REAL; (*:= 0, 1000, 8(1000);*)
           x                : ARRAY[1..10] OF REAL; (*:= 0, 1000, 8(1000);*)
           Stuetzstellen    : INT:=2; 
    END_VAR
    Im Hauptprogramm sollen nun diverse Instanzen von Kennlinien deklariert werden und dabei auch gleich die Kennlinie angegeben werden.
    Das Problem: ich bekomme nur eines der beiden Arrays initialisiert.
    Folgendes klappt:

    Code:
    PROGRAM MAIN
    VAR
        kennlinie1 : FB_Kennlinie:=(
            Stuetzstellen:=5,
            y:=1000,2000,3000,4000,5000,6,7,8,9,10
        );
    
    Die Werte sind im Baustein im Array y auch wirklich enthalten und ersetzen die Defaultwerte im Baustein.
    Aber wenn ich X auch noch initialisieren will, meckert der Compiler "Fehler 3760: Fehlerhafter Initialwert".
    Folgendes führt zu dem Fehler:

    Code:
    PROGRAM MAIN
    VAR
      kennlinie2 : FB_Kennlinie:=(
         Stuetzstellen:=5,
         y:=1,2,3,4,5,6,7,8,9,10,
         x:=1,2,3,4,5,6,7,8,9,10
      );
    
    Der Compiler kapiert wohl das Ende der Array-Initialisierung in der y:= Zeile nicht.
    Ich habe schon probiert die Werte in der y:=... Zeile irgendwie zu klammern, bekomme aber immer die gleiche Fehlermeldung.
    Auch Einzelwertzuweisung in das Array (also y[1]:=1 ) klappte nicht.

    Weiß jemand wie man dem Compiler da auf die Sprünge helfen kann?
    Geändert von zabex (21.02.2013 um 10:44 Uhr)
    Zitieren Zitieren ST:mehrere Arrays bei Deklaration initialisieren  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Problem umschiffen:
    Code:
    kennlinie2 : FB_Kennlinie:=(
         y:=1,2,3,4,5,6,7,8,9,10,
         Stuetzstellen:=5,
         x:=1,2,3,4,5,6,7,8,9,10
      );
    Der Parser kommt wohl mit den Kommas nicht ganz klar.

  3. #3
    zabex ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.02.2012
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das hatte ich schon (erfolglos) probiert. Und auch diverse Klammerungsversuche.

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Was hast du denn für eine Programmierumgebung. Codesys? Welche Version?

  5. #5
    zabex ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.02.2012
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Entwicklungsumgebung TwinCAT 2.11 Build2230 (neuste verfügbare Version)

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Hm, seltsam.
    Ich habe es mit TwinCat 2 probiert. Beim ersten Mal als ich den Code von dir eingefügt habe gab es auch einen Fehler.
    Dann habe ich die Reihenfolge wie ich das geschrieben habe geändert. Dann konnte ich übersetzen.
    Und jetzt kann ich sogar in deiner Reihenfolge die Initialisierung übersetzen, ohne Fehler.

  7. #7
    zabex ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.02.2012
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sehr merkwürdig: Habe ein neues Projekt nur mit dem Code aufgesetzt - klappt!
    Und nun kann ich plötzlich auch das ursprüngliche Projekt übersetzen. Keine Ahnung was jetzt anders ist (und ich hatte das wirklich in allen Variationen probiert). Jetzt geht sogar folgendes:
    Code:
      
    
    kennlinie3 : FB_Kennlinie:=(
          Stuetzstellen:=4,
          y:=1,2,3,4,  6(0),
          x:=1,2,3,4,  6(0)
       );

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ebent, bei mir auch. Bekomme die Fehlermeldung nichtmal mehr erzeugt.
    Ich habe auch die 2.11 aber ein etwas älteres Build als du.

Ähnliche Themen

  1. Probleme bei der deklaration in Codesys
    Von Lockemotive im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 29.07.2014, 21:43
  2. Antworten: 1
    Letzter Beitrag: 14.10.2012, 09:38
  3. keine Offsetanzeige bei Arrays mit UDTs
    Von Bertl im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.08.2012, 14:45
  4. array bei deklaration initialisieren
    Von alb im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 01.12.2011, 15:50
  5. Antworten: 5
    Letzter Beitrag: 03.07.2008, 23:10

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •