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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: SCL Stringvergleich indirekt aus DB

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... ich habe das gerade mal gegen-gecheckt ...

    Wenn ich die Datenstruktur als UDT anlege und den Eingangsparameter vom Typ her als diese UDT angebe und die UDT im DB anlege, dann geht es ...
    Code:
    VAR_INPUT
       Quell_DB1 : UDT14 ;
       Quell_DB2 : UDT14 ;
       Quell_DB3 : UDT14 ;
    end_VAR
     
    und im Code dann :
     
    Test_Var := QuellDB1.Datensatz[11] ;
    der Datenbaustein sieht dann so aus :
    Code:
    Adresse 0.0 :
    Daten : UDT14
    der Aufruf für den FB sieht dann so aus :
    Code:
    call FB500 , DB500
       Quell_DB1 := DB11.Daten
       Quell_DB2 := DB21.Daten
       Quell_DB3 := DB31.Daten
    Vielleicht hilft es ja weiter ...

  2. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Ralle (07.11.2008)

  3. #12
    MFreiberger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.11.2008
    Beiträge
    100
    Danke
    9
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Moin zusammen,

    Ich habe mir folgendes überlegt:
    Da ich nur 2 DB´s habe und die DBNr feststeht, mache ich einfach zwei Schleifen, adressiere den jeweiligen DB absolut und ändere dynamisch die Zugriffsadresse.

    Vielleicht hat ja jemand noch eine andere Idee...

    Auf jeden Fall vielen Dank für die Hilfe, jetzt weiß ich wenigstens was geht und was nicht.
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  4. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... ich habe das gerade mal gegen-gecheckt ...

    Wenn ich die Datenstruktur als UDT anlege und den Eingangsparameter vom Typ her als diese UDT angebe und die UDT im DB anlege, dann geht es ...
    Code:
    VAR_INPUT
       Quell_DB1 : UDT14 ;
       Quell_DB2 : UDT14 ;
       Quell_DB3 : UDT14 ;
    end_VAR
     
    und im Code dann :
     
    Test_Var := QuellDB1.Datensatz[11] ;
    der Datenbaustein sieht dann so aus :
    Code:
    Adresse 0.0 :
    Daten : UDT14
    der Aufruf für den FB sieht dann so aus :
    Code:
    call FB500 , DB500
       Quell_DB1 := DB11.Daten
       Quell_DB2 := DB21.Daten
       Quell_DB3 := DB31.Daten
    Vielleicht hilft es ja weiter ...
    Wenn das so geht, dann ist das wirklich gut !!!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #14
    MFreiberger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.11.2008
    Beiträge
    100
    Danke
    9
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Tschuldigung, aber ich komme da nicht mehr ganz mit. Was genau hat Larry da gemacht?
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

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

    Standard

    ... ich dachte, dass hätte ich (? ganz gut ?) beschrieben ...

    Was genau verstehst du daran nicht ?

  7. #16
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Er hat die Variablen-Deklarationen, die im DB stehen in eine UDT reingeschrieben. Im DB wird nur noch die UDT deklariert, als "Daten". Im SCl-Baustein hat er nun diese UDT als Input deklariert. Nun kannst du beim Aufruf an den FB die UDT ranschreiben, die sich ja jeweils in einem anderen DB befindet. Im SCL-Baustein kannst du mit diesen UDT-Daten intern weiterarbeiten.

    @Larry

    Hast du mal versucht, eine dieser UDT-Variable an eine weitere Funktion (Stringcompare) weiterzureichen, geht das? Wenn nicht müßte man diesen String dann doch vorher nochmal umkopieren.
    Geändert von Ralle (07.11.2008 um 16:19 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #17
    MFreiberger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.11.2008
    Beiträge
    100
    Danke
    9
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Danke !
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  9. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    @Larry
    Hast du mal versucht, eine dieser UDT-Variable an eine weitere Funktion (Stringcompare) weiterzureichen, geht das? Wenn nicht müßte man diesen String dann doch vorher nochmal umkopieren.
    Nein ... das habe ich nicht versucht ...
    Aus dem Bauch heraus würde ich aber sagen : "Lieber umkopieren ..." Die String-FC's von Siemens sind ja schließlich nicht so ganz ohne ...

    Gruß
    LL

  10. #19
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Nach ein bisschen versuchen scheint dies zu funktionieren. Am mindestens kompiliert es ohne Fehler.

    Keine UDTs wird verwendet. Nur ein ARRAY[0..99] of STRING.
    Es scheint das man die STRING's nicht auf z.b. STRING[20] begrenzen kann. Dann fängt EQ_STRNG an zu meckern.

    Code:
    FUNCTION FC1 : VOID
    VAR_INPUT
      strSearch : STRING ;
    END_VAR
    VAR_OUTPUT
      biMatchFound: BOOL ;
      iMatchIndex: INT ;
    END_VAR
    VAR_TEMP
      i: INT;
      strCompare1 : STRING ;
    END_VAR
     
        biMatchFound := FALSE ;
        iMatchIndex := 0 ;
        i := 0 ;
        strCompare1 := strSearch  ; // zuerst zum TEMP Variabel übertragen. Sonnst gibt es fehler mit EQ_STRNG. Warum eigentlich ?
        WHILE biMatchFound = FALSE AND i < 100  DO
            biMatchFound := EQ_STRNG(S1 := strCompare1 , S2 := "Recipe1".StringArray[i] );
            i := i + 1 ;
        END_WHILE;
        IF biMatchFound = TRUE THEN iMatchIndex := i ; END_IF ;
     
    END_FUNCTION
    Jesper M. Pedersen

  11. #20
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von JesperMP Beitrag anzeigen

    S2 := "Recipe1".StringArray[i];
    Das ist ein direkter symbolischer DB-Aufruf. Das ist das Problem, wenn noch einen 2. DB nutzen willst, geht das nicht mehr mit diesem FC, du mußt dann extra einen FC für jeden DB schreiben. Deswegen der Vorschlag mit den UDT.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. SCL: Stringvergleich funktioniert nicht
    Von Scanda im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 07.08.2011, 11:12
  2. Stringvergleich FC10
    Von rr_zx im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 17.07.2011, 18:34
  3. SCL indirekt Adressieren
    Von Nafura im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.05.2011, 21:42
  4. ComboBox indirekt?
    Von SPSKILLER im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 01.09.2008, 15:25
  5. Problem beim Stringvergleich EQ_STRNG
    Von BohneM im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 28.11.2007, 23:23

Lesezeichen

Berechtigungen

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