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

Ergebnis 1 bis 7 von 7

Thema: indirekte Adressierung in SCL

  1. #1
    Registriert seit
    23.02.2007
    Ort
    Regensburg
    Beiträge
    53
    Danke
    18
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte in SCL Datenbaustein und Datenwort indirekt adressieren.
    Mit den hier gefundenen Infos und der Hilfe im Editor klappt es aber nicht.
    Vielleicht könnt Ihr mir weiterhelfen.

    Ich habe folgenden Code:

    Code:
    VAR_INPUT
    iDW_Zeiger       : INT;
    iDBNR              : INT;
    iMessMittelWert : INT;
    END_VAR;
     
     
    DB11.DW[iDW_Zeiger] := iMessMittelWert;
     
    WORD_TO_BLOCK_DB[iDBNR].DW[iDW_Zeiger] := iMessMittelWert;
     
    DATEN.DW[iDW_Zeiger] := iMessMittelWert;
    Egal welche Zeile ich nutze, es kommt immer der Fehler
    "Ungültiger Datentyp" und der Cursor steht hinter iMessMittelWert.

    Ich bin momentan mit meinem Latein am Ende.

    Weiss einer warum der Compiler diese Zeilen anmeckert?

    So funktioniert der Code in allen 3 Zeilen:

    Code:
    VAR_INPUT
    iDW_Zeiger       : INT;
    iDBNR              : INT;
    iMessMittelWert : INT;
    DATEN             : BLOCK_DB;
    END_VAR;
     
     
    DB11.DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);
     
    WORD_TO_BLOCK_DB(INT_TO_WORD(iDBNR)).DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);
     
    DATEN.DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);


    Gruß
    BiBi
    Geändert von BiBi (18.05.2007 um 23:50 Uhr) Grund: Richtigstellung des Codes
    Zitieren Zitieren indirekte Adressierung in SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Hallo,
    warum Beispiel 1 nicht funktioniert weiß ich auch nicht. Sollte so gehen.
    In Beispiel 2 verwendest du den Befehl "WORD_TO_BLOCK_DB" und hast als Parameter einen Integer angegeben. "iDBNR" sollte hier vom Typ WORD sein.
    In Beispiel 3 muss "DATEN" vom Typ "BLOCK_DB" sein. Aus deiner Deklaration geht aber nicht hervor wer oder was Daten ist.

    Das Beispiel 2 bzw. 3 setze ich in meinen Applikationen auch ein.

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Man konnte das aus deinem Listing nicht erkennen :
    Das ganze sollte so anfangen :
    Code:
    FUNCTION FC169 : VOID
    
    VAR_INPUT
     deine Variablen
    END_VAR ;
     
    BEGIN
      dein Programm
    END_FUNCTION
    Nicht das es daran liegt ...
    Zitieren Zitieren Nachsatz  

  4. #4
    Registriert seit
    22.07.2006
    Beiträge
    132
    Danke
    24
    Erhielt 18 Danke für 12 Beiträge

    Standard

    Beispiel 1 geht so
    Code:
     
    DB11.DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);
    Beispiel 2 geht so:
    Code:
     
    WORD_TO_BLOCK_DB(INT_TO_WORD(iDBNR)).DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);
    Und ich denke das Beispiel 3so geht, wobei ich nicht weiß was hinter dem Symbol Daten steckt....
    Code:
     
    DATEN.DW[iDW_Zeiger] := INT_TO_WORD(iMessMittelWert);
    Geändert von Merten1982 (18.05.2007 um 23:40 Uhr)

  5. Folgender Benutzer sagt Danke zu Merten1982 für den nützlichen Beitrag:

    BiBi (18.05.2007)

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    ... stimmt, da hast du recht. War mir gar nicht aufgefallen. Ich habe es sogar extra bei mir nachgesehen. Mache ich auch so ...

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von Merten1982 Beitrag anzeigen
    ... wobei ich nicht weiß was hinter dem Symbol Daten steckt....
    Ich denke, dass ist ebenfalls ein INPUT-Parameter (sollte BLOCK_DB sein) in dem die DB-Nummer übergiben wird ...

  8. #7
    BiBi ist gerade online Benutzer
    Themenstarter
    Registriert seit
    23.02.2007
    Ort
    Regensburg
    Beiträge
    53
    Danke
    18
    Erhielt 4 Danke für 4 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Alle

    Erstmal Danke für Eure Tipps.

    Grundsätlich funktionieren alle 3 Zeilen. Mein Fehler war, dass ich
    die INT Variable nicht in WORD gewandel habe. Nach Umwandlung
    funktioniert die indirekte Adressierung wie gewünscht.

    Daten war als BLOCK_DB ein INPUT Parameter.

    Gruß
    BiBi

Ähnliche Themen

  1. Indirekte Adressierung in AWL
    Von Bensen83 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 31.01.2015, 15:58
  2. indirekte Adressierung
    Von Sash7770 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2008, 12:47
  3. indirekte Adressierung
    Von Linowitch im Forum HMI
    Antworten: 13
    Letzter Beitrag: 06.12.2008, 19:43
  4. Indirekte Adressierung
    Von thomasgull im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.01.2008, 14:49
  5. Indirekte Adressierung von SFC 20
    Von andre im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2005, 09:44

Lesezeichen

Berechtigungen

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