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

Ergebnis 1 bis 4 von 4

Thema: Verstehe Programminhalt nicht! Bitte um Hilfe =)

  1. #1
    Registriert seit
    05.02.2012
    Ort
    Stuttgart
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Liebe Community =)

    Ich bin NEU hier und bin dringend auf eure Hilfe angewiesen.
    Ich bin angehender Techniker Fachrichtung Energie und Automatisierungstechnik... Und muss zu meinem Abschluss als Techniker eine Technikerarbeit abgeben.

    Die Technikerarbeit besteht darin das ich eine IFM O2I100 Kamera mit der CPU S7 315 mit übergeordneten CP 343 1 Lean habe.

    Jetzt habe ich von der IFM Seite ein vorgefertigtes Programm bekommen. Den ich bisher recht gut mit meinen Kenntnissen verstanden habe.

    Nur bräuchte ich evtl Hilfe bei diesen 2 Netzwerken wo es um den Pointer und die Indirekte Adressierung geht.
    Im NW2 habe ich als Kommentar so einigermaßen das hingeschrieben was ich verstanden habe!
    Hilfestellung sind eher im NW 1 beim Maskieren vorhanden...


    Variable RECV_BUF in Variable und zeigt mit dem Pointer auf mein DB wo die Daten aus der Kamera gespeichert werden.


    NW1
    //---------------------------------------------
    // Maskieren
    //---------------------------------------------


    TAR2 // Was wird hier gemacht?
    UD DW#16#FFFFFF // Wieso maskiere ich nicht alle Felder? also 8 bits? sondern nur 6 Bits?
    LAR1 P##RECV_BUF // Lade die Adresse vom DB222 in den Adressregister -> macht sinn
    +AR1 // abder wieso muss ich das jetzt miteinander addieren? HILFE????? :P
    //---------------------------------------------
    // Kopiere den ANY-pointer nach TEMP Zwischenspeicher[VAR_BUF]
    //---------------------------------------------
    L W [AR1,P#0.0]
    T LW 0
    L B [AR1,P#2.0]
    T LB 2
    L B [AR1,P#3.0]
    T LB 3
    L W [AR1,P#4.0]
    T LW 4
    L W [AR1,P#6.0]
    T LW 6
    L W [AR1,P#8.0]
    T LW 8

    NW2:

    //---------------------------------------------
    // Erlaube mehrfache instanzen
    //---------------------------------------------
    LAR1 P##RECV_BUF // Adresse des Any-Pointer [DB222] in AR1 Legen
    //---------------------------------------------
    // Kopiere ANY-pointer nach TEMP Zwischenspeicher
    //---------------------------------------------


    L W [AR1,P#0.0] // Syntax ID vom Any Pointer [DB222] in
    T LW 0 // Any-Pointer [TEMP] eintragen


    L #RCV_LEN // Länge
    T LW 2


    L W [AR1,P#4.0] // DB- Nummer [Keine Veränderung]
    T LW 4
    L W [AR1,P#6.0] // Bereichszeiger 16 Bit ----> Stimmt meine Aussage???? -_-
    T LW 6
    L W [AR1,P#8.0] // Bereichszeiger 8 Bit [Da FC6(Ag_Send) nur Bytes Empfangen kann
    L #BIT_OFFSET // wird hier der Wert mit BitOffset erweitert] BitOffset zähle ich in vorherigen NW hoch!
    +I
    T LW 8


    ICH DANKE SCHON MAL FÜR DIE HILFESTELLUNG
    Zitieren Zitieren Verstehe Programminhalt nicht! Bitte um Hilfe =)  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    ich habe im Moment kein S7 zur Hand und versuche es mal so. Die Kollegen werden mich schon berichtigen, falls was nicht stimmt.

    Code:
    NW 1
    
    //bilde einen Pointer auf die zu kopierenden Werte
    TAR2                        // Lade Inhalt aus AR2 in Akku1
    UD DW#16#00FFFFFF           // UND-Verknüpfung von Akku1 mit Akku2 im Akku1 ablegen
    
    LAR1 P##RECV_BUF            // Lade einen Pointer auf die Variable RECV_BUF
    
    +AR1                        //  addiere den oben gebildeten Inhalt aus Akku1-L zu dem Pointer auf RECV_BUF in AR1
    
    //kopiere jetzt die über AR1 adressierten Werte (P#0.x ist ein Offset) in den VAR_BUF
    L W[AR1,P#0.0]             // lade das Wort, das mit AR1 adresiert ist
    T LW 0                     // transferiere es in das Lokalwort 0
    L B[AR1,P#2.0]             // lade das erste Byte vom nächsten Wort
    T LB 2                     // transferiere es in das Lokalbyte 2
    L B[AR1,P#3.0]             // transferiere es in das Lokalbyte 3
    // usw.  ...
    Es gibt die OP-Liste und die Handbücher usw. zum Download
    http://support.automation.siemens.co...edownload=true
    kind regards
    SoftMachine

  3. #3
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Und noch zu NW 2.

    Für die Verwendung von Pointern gibt es hier im Forum einen sehr guten und ausführlichen Beitrag:

    http://www.sps-forum.de/showthread.p...für-Datentypen
    kind regards
    SoftMachine

  4. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Techniker2012 Beitrag anzeigen
    UD DW#16#FFFFFF // Wieso maskiere ich nicht alle Felder? also 8 bits? sondern nur 6 Bits?
    Softmachine hat ja schon einiges genauer erklärt, allerdings bei dieser Zeile geht es nicht um Bits sondern um Nibbles.
    Also es werden die ersten 6 halben Byts (4 Bit's = 1 Nibble = 1111 = F) ausmaskiert (UW). Die beiden restlichen Nibbles stehen einmal für die Bereichskennung (Eingang, Ausgang, Merker, u.s.w) und einmal ob es sich um eine "Bereichsinterne" oder um eine "Bereichsübergreifende" Adressierung handelt.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

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

    SoftMachine (05.02.2012)

Ähnliche Themen

  1. Antworten: 33
    Letzter Beitrag: 13.04.2011, 18:30
  2. S5 Sprunganweisung, die ich nicht verstehe
    Von spybot im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.10.2009, 16:05
  3. Diesen FC verstehe ich nicht
    Von WL7001 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 30.03.2008, 21:42
  4. Bitte Hilfe
    Von blume_mercan im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 02.02.2008, 18:43
  5. MM440 läuft nicht mehr an, bitte um Hilfe
    Von TH5 im Forum Antriebstechnik
    Antworten: 7
    Letzter Beitrag: 29.06.2006, 20:27

Stichworte

Lesezeichen

Berechtigungen

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