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

Ergebnis 1 bis 9 von 9

Thema: String indirekt adressieren

  1. #1
    Registriert seit
    01.11.2010
    Beiträge
    31
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo habe mal ne Frage,
    ich habe in einen DB eine String-Adresse hinterlegt. Nun da ich Zwischen zwei Programmen mit unterschiedlichem Namen wählen möchte, muss ich irgendwie den Namen/ String variabel gestalten. Dachte da an eine indirekte Adressierung. Gibt es die Möglichkeit dies so zu machen oder gibt es da auch andere Möglichkkeiten. Prog.-Name wird von einem FB aufgerufen und das Programm steht in einem FM-Modul.
    Danke
    Zitieren Zitieren String indirekt adressieren  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Du könntest mit Hilfe des SCF20 BLKMOV in Abhängigkeit von dem gewählten Programm einen von 2 Strings aus einem Datenbaustein an die Stelle im Datenbaustein kopieren, von wo er ausgelesen werden soll. Dann sparst Du Dir die indirekte Adressierung.
    Gruß
    Michael

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    was bedeutet hier "variabel gestalten" ?
    Hast du in einem DBxyz eine Anzahl von Strings (mit gleicher Länge) als Konstanten hintelegt zwischen denen du wählen möchtest ?
    Oder etwas anderes ?

    Gruß
    Larry

  4. #4
    Registriert seit
    01.11.2010
    Beiträge
    31
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    was bedeutet hier "variabel gestalten" ?
    Hast du in einem DBxyz eine Anzahl von Strings (mit gleicher Länge) als Konstanten hintelegt zwischen denen du wählen möchtest ?
    Oder etwas anderes ?

    Gruß
    Larry
    Ne also ich habe zwei nc-programme in einem fm 357-2 hinterlegt diese werden durch ansteuerung eines fb abgerufen. Ich will zwischen den zwei prog auswählen. Nur leider muss ich den pfadnemen in string und in einem db angeben. Ich will den pfadnamen im db variabel gestalten.

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Es tut mir leid ... aber ich bin jetzt immer noch nicht schlauer ...
    Wozu brauchst du die Strings und was steht da drin ?

  6. #6
    Registriert seit
    01.11.2010
    Beiträge
    31
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    CALL "FM_PI" , DB10
    REQ :=DB1.DBX74.0
    PISERVICE:="PI_DI".SELECT
    UNIT :=1
    ADDR1 :=DB1.Path
    ADDR2 :=DB1.P_Name
    ADDR3 :=
    ADDR4 :=
    WVAR1 :=
    WVAR2 :=
    WVAR3 :=
    WVAR4 :=
    WVAR5 :=
    WVAR6 :=
    WVAR7 :=
    WVAR8 :=
    WVAR9 :=
    WVAR10 :=
    FMDB_NO :=30
    ERROR :=DB1.DBX70.0
    DONE :=DB1.DBX70.1
    STATE :=DB1.DBW72
    in DB-Adresse die rot hinterlegt ist steht
    P_Name STRING[32] '_N_PROG_MPF'
    dies gilt für ein Programm. gelb=Programmname
    diesen Namen möchte ich auch ändern können um zwischen zwei oder mehreren Programmen wählen zu können.
    Diese Änderung wollte ich über eine indirekte Adressierung bearbeiten.

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ich schlage dir mal eine ganz einfache Variante vor:

    Du legst einen DB an, in dem deine Programmnamen stehen

    DB100.P_Name_1
    DB100.P_Name_2
    DB100.P_Name_3
    DB100.P_Name_4
    DB100.P_Name_5
    ...

    Deine Programmnummer hast du z.Bsp. als Int

    dann kannst du eine SPL nutzen und benötigst keine indirekte Adressierung (etwa so):
    Code:
    // Sprunverteiler
          L     PRG_Nummer
          SPL   ENDE
          SPA   LEER                        //00 - empty
          SPA   PRG1                        //Programm 01
          SPA   PRG2                        //Programm 02
          SPA   PRG3                        //Programm 03
          ENDE: SPA   LEER
    
    PRG1: NOP 0   
        
          CALL  "BLKMOV"
           SRCBLK := DB100.P_Name_1
           RET_VAL:= Ret
           DSTBLK := DB1.P_Name
    
          SPA   LEER
        
    PRG2: NOP 0   
        
          CALL  "BLKMOV"
           SRCBLK := DB100.P_Name_2
           RET_VAL:= Ret
           DSTBLK := DB1.P_Name
    
          SPA   LEER
    
    PRG3: SET   
        
          CALL  "BLKMOV"
           SRCBLK := DB100.P_Name_3
           RET_VAL:= Ret
           DSTBLK := DB1.P_Name
    
          SPA   LEER
    
    LEER: NOP 0
    Du kannst natürlich auch den Namen per indirekter Adressierung dynamisch zusammenbauen und dann in DB1.P_Name kopieren. Das hätte den Vorteil, dass du nicht alle Namen bereits in einem DB stehen haben mußt.
    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. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    The Dude (22.06.2011)

  9. #8
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich schlage dir mal eine ganz einfache Variante vor:

    Du legst einen DB an, in dem deine Programmnamen stehen...
    Das ist das fehlende Codebeispiel zu meinem Vorschlag.
    Gruß
    Michael

  10. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von M-Ott Beitrag anzeigen
    Das ist das fehlende Codebeispiel zu meinem Vorschlag.
    Stimmt, hatte ich überlesen, na ja, paßt schon
    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. PEW; PAW indirekt Adressieren
    Von casius im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 02.10.2017, 09:00
  2. Pointer indirekt zu adressieren
    Von Erich04 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.05.2011, 07:54
  3. SCL indirekt Adressieren
    Von Nafura im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.05.2011, 21:42
  4. UDT Indirekt Adressieren
    Von EULANER im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 14.11.2010, 19:30
  5. SFC 20 indirekt adressieren
    Von drmicha im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.10.2009, 09:24

Lesezeichen

Berechtigungen

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