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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 38

Thema: Fehlermeldung bei SCL-Programm

  1. #11
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Versuche mal:

    FUNCTION FC1 : INT

  2. #12
    Tuggi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.01.2011
    Beiträge
    14
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Deltal Beitrag anzeigen
    Versuche mal:

    FUNCTION FC1 : INT
    habe ich versucht. Jedoch hat sich dabei die Fehlermeldung nicht geändert.

    Aber als ich diese Änderung wieder rückgängig machen wollte und die Bausteine mit ihren Aufrufen erneut beschrieben habe, stand dort folgendes unter der Anweisung:

    Im FC und OB :
    CALL "SelectionSort"
    RET_VAL :=

    als Fehler:
    Compiler Information: Leerer Operand.

    Ich denke Larry, dass du danach gefragt hattest. Weiss aber nicht was´für ein Wert ich dort eintragen muss.

  3. #13
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Dort kannst du irgend ein freies MW oder DB?.DW?? dran schreiben.
    Es steht in dem Word ein Fehlercode in HEX
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  4. #14
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    Das ist halt der Return Wert der Funktion. In deinem Fall ein Integer Wert.

    Aber der Fehler kommt doch, wenn du die SCL Quelle übersetzen willst?

    Der Compiler sagt dir, dass er keinen Baustein kompilieren kann weil er den FC (Zielbaustein) nicht öffnen kann.

    Der Aufruf ist nochmal ne andere Geschichte.

    Lösche mal den Fc1 in deinem Projektordner (symbol NICHT löschen).

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von Tuggi Beitrag anzeigen
    Compiler Information: Leerer Operand.

    Ich denke Larry, dass du danach gefragt hattest. Weiss aber nicht was´für ein Wert ich dort eintragen muss.
    Ja ... das meinte ich.
    Das ist der Rückgabewert deines Bausteins, der dann ja irgendwo landen muß. Wenn du keinen Rückgabewert gebraucht hättest, dann hättest du ja beim Aufruf nicht
    Code:
    FUNCTION SelectionSort : INT
    
    sondern
     
    FUNCTION SelectionSort : void
    ... geschrieben.
    Der Rückgabewert vom Typ INT kann z.B. in einem Merkerwort (also z.B. MW100) landen.

    Gruß
    Larry

  6. #16
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    ev. weil da das BEGIN statement nach der VAR-deklaration fehlt?

  7. #17
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    Code:
    // SCL-Programmbeispiel-SelectionSort
    FUNCTION SelectionSort : INT
    
    VAR_IN_OUT // Variablendeklaration
    arrValues : ARRAY[20,43,10,6,18] OF INT;
    END_VAR
    VAR_TEMP
    Idx1, Idx2, MaxIdx, MaxVal, MAXSIZE : INT;
    END_VAR
    
    MAXSIZE := LEN(arrValues); // Bestimmung der Länge des Feldes
    
    FOR Idx1 := MAXSIZE TO 1 BY -1 DO // Werte des Feldes erfassen
    MaxVal := arrValues[Idx1];
    MaxIdx := Idx1;
    hier liegt meiner Meinung nach der Fehler, ist LEN ein selbst geschriebener Baustein um die Feldlänge zu ermitteln?

    Oder willst Du den in SCL integrierten LEN benutzen? Der ist allerdings nur für Strings und das kann so nicht funktionieren.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  8. #18
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Die Array-Deklaration
    Code:
    arrValues : ARRAY[20,43,10,6,18] OF INT;
    erscheint etwas sonderbar, bist du sicher dass du ein 5-dimensionales Array willst?
    C-Syntax kannste nicht 1:1 übernehmen, besonders bei den Array funktioniert das so nicht.

    Ebenfalls das LEN glaube ich nicht, dass er dir die Arraygrösse ausliest.

    Array deklaration mit Initialwerten:
    Code:
    arrValues: array[1..5] of INT := 20, 43, 10, 6, 18;
    weitere Details --> siehe in der Hilfe vom SCL-Editor nach

  9. #19
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Zitat Zitat von Chefmech Beitrag anzeigen
    Code:
    arrValues: array[1..5] of INT := 20, 43, 10, 6, 18;
    weitere Details --> siehe in der Hilfe vom SCL-Editor nach
    Stimmt, so macht das mehr Sinn.
    Aber in einem FC können keine Werte "Anfangswerte" zugewiesen werden.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  10. #20
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    PS:
    Vorsicht, in SCL beginnen die Array's nicht generell mit Index 0, wie etwa in C.

    Code:
    arrValues: array[1..5] of INT
    hat die Indexe 1..5, wenn du auf 0 zugreiffst geht die CPU in die Eisen.

    Code:
    arrValues: array[0..4] of INT
    hat Indexe 0..4

Ähnliche Themen

  1. S5 Programm überschreiben zu S7 Programm
    Von Tabler im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 29.03.2011, 22:37
  2. Antworten: 8
    Letzter Beitrag: 09.12.2010, 18:08
  3. Fehlermeldung PS4 201 MM1
    Von Mike Macho im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 18.11.2008, 14:49
  4. Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:56
  5. S5 Programm in ein S7 Programm umwandeln
    Von 1schilcher im Forum HMI
    Antworten: 3
    Letzter Beitrag: 15.01.2006, 11:53

Stichworte

Lesezeichen

Berechtigungen

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