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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Absolute Adressierung in SCL

  1. #1
    Registriert seit
    05.10.2008
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich versuche eine Funktion zu schreiben, welche abhängig von einer Eingangsvariablen bestimmte absolute Eingänge/Ausgänge liest/schreibt.

    Jetzt geht es darum, nachfolgende Zeilen in SCL zu realisieren:

    // L #slave_address_02
    // ITD
    // LAR1
    // O E [AR1,P#0.0]
    // O E [AR1,P#0.1]
    // O E [AR1,P#0.2]
    // O E [AR1,P#0.3]
    // = #OSSD_ON;


    Aus den Foren habe ich gelesen, dass der rote Text so nicht geht (stammt aus einer AWL-Quelle). Vielmehr soll der AT-Befehl benutzt werden, aber wie?

    Vielen Dank im voraus für konstruktive Tips.
    Geändert von ASi-Master (05.10.2008 um 20:04 Uhr)
    Zitieren Zitieren Absolute Adressierung in SCL  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Der AT-Befehl hat auch damit zu tun, aber du mußt dir eher ansehen, wie man in SCL mit Any umgeht, bzw. diese zusammenbaut, dazu kann man dann den AT-Befehl gut gebrauchen.

    http://www.sps-forum.de/showthread.p...hlight=Any+SCL

    Zusätzlich: Suche im Forum unter "SCL + Any"

    Nachtrag: Ja wirklich, so kompliziert muß es nicht sein, da gebe ich den folgenden Beitragsschreibern recht
    Geändert von Ralle (06.10.2008 um 15:13 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

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    na ... so kompliziert muß das doch gar nicht sein ...

    Wenn du die Eingangs-Adresse als absoluten Wert übergibst, dann kannst du den auch so im Programm verarbeiten ...
    Code:
    OSSD_On := E[Adresse,0] or E[Adresse,1] or E[Adresse,2] or E[Adresse,3] ;
    Gruß
    LL

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

    ASi-Master (06.10.2008)

  5. #4
    Avatar von ASi-Master
    ASi-Master ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2008
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    danke für die prompten Antworten.

    Was LL schreibt, habe ich noch gestern Abend (eigentlich Nacht...) gefunden, und zwar in einer Siemens-Beschreibung - hört, hört!

    Des Rätsels Lösung war die Syntax:

    OPERAND [BYTE-NUMMER, BIT-NUMMER]

    Leider wurde zum Thema SCL und indizierte Adressierung viel geschrieben, aber eben nie, wie´s gehen könnte (ich hab´s jedenfalls nicht gefunden oder nach den falsche Stichworten gesucht oder es einfach nicht verstanden). Als SCL-Neuling muß ich wohl noch einiges lernen. Fazit ist, es geht am Ende vieles viel einfacher.

  6. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Der indizierte Zugriff auf Speicherbereiche in der CPU oder auf Datenbausteine ist in der S7-SCL Online-Hilfe ganz gut beschrieben:

    Indizierter Zugriff auf Speicherbereiche der CPU

    Die Indizierung muss den folgenden Regeln entsprechen:

    • Jeder Index muss dabei ein arithmetischer Ausdruck vom Datentyp INT sein

    • Bei einem Zugriff, der vom Datentyp BYTE, WORD oder DWORD ist, müssen Sie genau einen Index verwenden. Der Index wird als Byteadresse interpretiert. Die Zugriffsbreite wird durch das Größen-Präfix festgelegt.

    • Bei einem Zugriff, der vom Datentyp BOOL ist, müssen Sie zwei Indizes benutzen. Der erste Index spezifiziert die Byteadresse, der zweite Index die Bitposition innerhalb des Bytes.
    Beispiel

    MESSWERT := EW[ZAHELER];

    AUSMARKE := E[BYTENR, BITNR];
    Indizierter Zugriff auf Datenbausteine

    Die Indizierung muss den folgenden Regeln entsprechen:

    • Bei einem Zugriff, der vom Datentyp BYTE, WORD oder DWORD ist, müssen Sie genau einen Index verwenden. Der Index wird als Byteadresse interpretiert. Die Zugriffsbreite wird durch das Größen-Präfix festgelegt.

    • Bei einem Zugriff, der vom Datentyp BOOL ist, müssen Sie zwei Indizes benutzen. Der erste Index spezifiziert die Byteadresse, der zweite Index die Bitposition innerhalb des Bytes.

    • Jeder Index muss dabei ein arithmetischer Ausdruck vom Datentyp INT (0 - 32767) sein
    Beispiel

    STATUS_1 := DB11.DW[ZAEHLER];

    STATUS_2 := DB12.DX[WNR, BITNR];

    STATUS_1 := Datenbasis1.DW[ZAEHLER];

    STATUS_2 := Datenbasis2.DX[WNR, BITNR];

    STATUS_1 := WORD_TO_BLOCK_DB(INDEX).DW[ZAEHLER];
    Gruß Kai

  7. #6
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo zusammen,
    sorry wenn ich dieses Thema nach so langer Zeit nochmals hervorkrame aber habe auch ein Problem bei dem ich nicht weiterkomme.
    Ich habe einige PAC3200 bei denen in der HW-Konfig jeweils die Spannungen L1, L2 und L3 konfiguriert sind.
    Es besteht eine Funktion in AWL bei der die Adresse der ersten Spannung angegeben wird und die dann die Werte der 3 Messwerte ausgibt.
    Diese sieht so aus:

    L #HWADR
    L 8
    *D
    LAR1


    L PID [ AR1 , P#0.0 ]
    T #SpannungL1
    L PID [ AR1 , P#4.0 ]
    T #SpannungL2
    L PID [ AR1 , P#8.0 ]
    T #SpannungL3

    Diese Funktion will ich nun mit AWL nachbauen.
    Gekommen bin ich leider nur soweit:

    #SpannungL1 := #Startadresse + 0;
    #SpannungL2 := #Startadresse + 4;
    #SpannungL3 := #Startadresse + 8;


    #Daten.SpannungL1_L2 := DWORD_TO_REAL();


    Ich habe einfach keine Idee wie man in SCL auf HW-Adressen zugreift.
    Hat mir vielleicht jemand einen Tipp?

  8. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Code:
    SpannungL1 := PED[Startadresse + 0];
    oder bist du im TIA-Portal? Denn da gab es mal Versionen bei denen das zwar programmierbar war, aber nicht funktionierte.

  9. #8
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich verwende TIA-Portal V13, der Baustein soll auf einer S7-1500 laufen.
    Es sagt mir das der Operand PED nicht definiert ist.
    Bild1.PNG
    Bild2.PNG

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Ich meine, bei der S7-1500 brauchst Du die PEEK-Anweisung.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #10
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Dank für den Tipp.
    So hats funktioniert:

    Code:
    
        #SpannungL1adr := #Startadr + 0;
        #SpannungL2adr := #Startadr + 4;
        #SpannungL3adr := #Startadr + 8;
    
    
        
        #SpannungL1_out := DWORD_TO_REAL(PEEK_DWORD(area := 16#1, dbNumber := 0, byteOffset := #SpannungL1adr));
        #SpannungL1_out := DWORD_TO_REAL(PEEK_DWORD(area := 16#1, dbNumber := 0, byteOffset := #SpannungL2adr));
        #SpannungL3_out := DWORD_TO_REAL(PEEK_DWORD(area := 16#1, dbNumber := 0, byteOffset := #SpannungL3adr));

  12. Folgender Benutzer sagt Danke zu buhuu für den nützlichen Beitrag:

    PN/DP (06.01.2015)

Ähnliche Themen

  1. FM353: Istposition / absolute Positionierung
    Von lefrog im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 26.06.2011, 09:56
  2. lenze servo motor & absolute encoder
    Von MAHER im Forum Antriebstechnik
    Antworten: 10
    Letzter Beitrag: 18.03.2011, 13:31
  3. Näherungsschalter, absolute Anfängerfrage
    Von Dr.Oetker im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 16.07.2009, 15:35
  4. fb 410 move absolute
    Von hwebi1 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 09.02.2008, 10:55
  5. Der absolute Anfänger
    Von michaelg im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 10.01.2008, 09:37

Stichworte

Lesezeichen

Berechtigungen

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