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

Ergebnis 1 bis 6 von 6

Thema: Parameterzuweisung in SCL nicht korrekt

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich habe folgende SCL Deklaration:

    Code:
    VAR_INPUT
        Mit_Scanner : BOOL;
        Einlesen : BOOL;
        Weiterleiten : BOOL;
        Scannerstring : STRING[26];
        
    END_VAR
    VAR_IN_OUT
        
        Quelle : UDT8;
        Zwischenspeicher : ARRAY[0..20] OF UDT8;
        Ausgabe : UDT8;
        Loeschquelle : UDT8;
        Hilfsbits : WORD;
        Zaehler : INT;
        Einzelreset : INT;
    und dann folgende Anweisung:

    Code:
    IF Zwischenspeicher[i].Barcode = 'a' THEN
                    ;
     END_IF;
    Ich bekomme an der Stelle der IF Abfrage die Meldung, dass die Parameterzuweisung nicht korrekt sei.
    In dem Array Zwischenspeicher gibt es aber einen String namens Barcode, was ist denn da falsch?
    Zitieren Zitieren Parameterzuweisung in SCL nicht korrekt  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.742
    Danke
    143
    Erhielt 1.688 Danke für 1.226 Beiträge

    Standard

    Das geht bei Siemens in einem FC nicht direkt, weil die Parameter als Zeiger übergeben werden.

    Siehe hier:
    http://support.automation.siemens.co...ew/de/22506481

  3. #3
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Hallo ich habe folgende SCL Deklaration:


    und dann folgende Anweisung:

    Code:
    IF Zwischenspeicher[i].Barcode = 'a' THEN
                    ;
     END_IF;
    Probier mal ob sich das übersetzen lässt:
    Code:
    IF Zwischenspeicher[i].Barcode[2] = 'a' THEN
                    ;
     END_IF;
    Willst du ein "a" im gesamten String suchen oder nur an einer festen Stelle im String vergleichen??
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Zefix Beitrag anzeigen
    Probier mal ob sich das übersetzen lässt:
    Code:
    IF Zwischenspeicher[i].Barcode[2] = 'a' THEN
                    ;
     END_IF;
    Willst du ein "a" im gesamten String suchen oder nur an einer festen Stelle im String vergleichen??
    im FB geht es (habe ich erst probiert und deswegen keinen fehler gefunden...) und wie thomas richtig erwähnt hat, in einem FC nicht.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Intressant, und weiss man warum?

    Aber der Zugriff muss doch auch im FC funzen:
    Code:
    Zwischenspeicher[i].Barcode[2] = 'a'
    Wobei ich auf die Idee ohne den Index an zu geben, gar nicht gekommen wäre.
    Sucht SCl dann in dem String nach dem "a"? (so wie oben beim TE)
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.742
    Danke
    143
    Erhielt 1.688 Danke für 1.226 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Zefix Beitrag anzeigen
    Intressant, und weiss man warum?
    Steht doch im Siemens-Link.
    Weil ein String-Vergleich in SCL in einen Funktionsaufruf umgesetzt wird. Ein '=' zwischen zwei Strings wird somit ein Aufruf des FC 'EQ_STRNG' umgesetzt.
    Ein VAR_INPUT eines FC kannst du nicht mit einem Parameter eines FC versorgen, auch nicht in AWL. Es ist also kein SCL-spezifisches Problem.

    Das einzige was Siemens hier machen könnte wäre, intern selbständig auf einen unsichtbaren Temp-String zu kopieren. Das macht der SCL-Übersetzer an anderer Stelle wo es eigentlich nicht notwendig wäre auch gerne, aber hier wo es notwendig wäre macht er es nicht.

    Und dein Zugriff auf einzelne Zeichen eines Strings mittels Array-Index hat noch nie funktioniert. Das würde nur mit einer AT-Sicht funktionieren, welche aber nicht auf einen Parameter eines FC funktioniert.

  7. Folgende 3 Benutzer sagen Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Dotzi (04.10.2011),FocusCookie (23.05.2013),vierlagig (04.10.2011)

Ähnliche Themen

  1. warum läuft dieser einfach FUP nicht ganz korrekt
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 14
    Letzter Beitrag: 24.08.2010, 11:56
  2. Parameter übergabe nicht Korrekt
    Von Björn im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.03.2010, 10:35
  3. SCL: Datentypspezifikation nicht korrekt
    Von lindnerlars im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 03.09.2008, 18:19
  4. SCL Fehlermeldung: "Baustein nicht korrekt"
    Von dinner4one im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 04.06.2008, 13:23
  5. S5Timer wird nicht korrekt bearbeitet
    Von raffi67 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.12.2006, 19:27

Lesezeichen

Berechtigungen

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