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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Pointer zu DWord, symbolische Parametrierung

  1. #1
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Hallo,

    anbei zwei Bilder.

    Ich habe einen Pointer zu einem DWord "gemoved" und das Dword nun an einen FC übergeben.
    Dem DB ist eine SQL_Quelle beigefügt...würde gerne mit dem akku1 weiterarbeiten und dafür ist der Pointer ja um 2 byte zu groß.

    Ich möchte mir gerne den Move Befehl im OB sparen. Könnte ich das im FC noch umwandeln ?
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg 1.JPG (26,4 KB, 55x aufgerufen)
    • Dateityp: jpg 2.JPG (27,2 KB, 50x aufgerufen)
    Zitieren Zitieren Pointer zu DWord, symbolische Parametrierung  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    warum machst Du nicht einfach einen Pointer aus dem Start.
    Was soll das werden?

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  3. #3
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Hi,

    warum machst Du nicht einfach einen Pointer aus dem Start.
    Was soll das werden?

    Gruss Daniel

    Dann wird die SQL-Quelle leider nicht mehr richtig ausgeführt.

  4. #4
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Was ist eine SQL Quelle?

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  5. #5
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Was ist eine SQL Quelle?

    Gruss Daniel
    SCL meinte ich . ob man dann scl quelle sagt weiß ich nicht. wie auch immer. hast ne idee, wie ich das machen könnt ?

  6. #6
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Jetzt kommen wir der Sache doch schon näher.

    Zeig doch mal den Code von dem Baustein.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.327 Danke für 2.688 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    Ich möchte mir gerne den Move Befehl im OB sparen. Könnte ich das im FC noch umwandeln ?
    Na sicher. Du kannst auch ein WORD (oder bis 32767 besser lesbar: INT) für die Adresse im DB übergeben und im FC einen Pointer draus machen.
    Für bessere Lesbarkeit bietet es sich in Deiner Aufgabe an, statt registerindirekter Adressierung die speicherindirekte Adressierung zu benutzen.
    Allerdings finde ich solche Datenzugriffe Scheixxe, weil sie nicht in den Referenzdaten auftauchen!
    Wenigstens bist Du darauf gekommen, die DB-Nummer als BLOCK_DB zu übergeben, da erscheint wenigstens der DB-Zugriff in den Referenzdaten.

    FC1
    Code:
    // IN  : Start_DB : Block_DB
    //     : Start_Adresse : Int
    // TEMP: Start_OffsetPtr : DWord
    
    // aus #Start_Adresse (INT) einen Adresspointer (P#) machen :
          L     #Start_Adresse          // ( 2 )
          SLD   3                       // ( 2 -> P#2.0 )
          T     #Start_OffsetPtr        // in LD für speicherindirekte Adressierung
    
    // L [Start_DB].DBW[Start_Adresse] :
          AUF   #Start_DB               // ( DB7001 )
          L     DBW [#Start_OffsetPtr]  // ( DB7001.DBW2 )
    Aufruf
    Code:
          CALL  FC     1
           Start_DB     :=DB7001
           Start_Adresse:=2
          NOP   0
    Tip: Gewöhne Dir nicht so hohe DB-Nummern an (DB7001), meistens mußt Du mit DB1 ... DB255 auskommen.

    An Deiner Fragestellung verwirrt allerdings einiges:
    - symbolische Parametrierung
    - SCL-Quelle - was für eine SCL-Quelle?
    - würde gerne mit dem akku1 weiterarbeiten
    - mit Parameter Start als POINTER wird die SCL-Quelle nicht mehr richtig ausgeführt
    Was hat das mit Deinem Wunsch zu tun, eine Adresse nicht als POINTER zu übergeben?
    Was verlangt denn die SCL-Quelle, der Du anscheinend von außen einen variablen Wert übergeben willst?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Limette (26.03.2011)

  9. #8
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von dalbi Beitrag anzeigen
    Jetzt kommen wir der Sache doch schon näher.

    Zeig doch mal den Code von dem Baustein.

    Gruss Daniel

    Könnte ich morgen erst nach reichen.

    Das SCL file ist in dem DB7001 eingebettet. Der DB benötigt 6 Eingänge und 3 Ausgänge, alle entweder Byte oder Word.
    Die erste Adresse der DP ist P#2.0. Die schiebe ich in den Akku und addiere 2 oder 3 dazu usw., dass eben alle Eingänge und Ausgänge ihre richtige Adresse haben. Nach jeder Addition wird das entsprechende EB, EW, oder AB geladen.

    Ich hoffe ich habe nicht noch mehr Verwirrung gestiftet.

  10. #9
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Na sicher. Du kannst auch ein WORD (oder bis 32767 besser lesbar: INT) für die Adresse im DB übergeben und im FC einen Pointer draus machen.
    Für bessere Lesbarkeit bietet es sich in Deiner Aufgabe an, statt registerindirekter Adressierung die speicherindirekte Adressierung zu benutzen.
    Allerdings finde ich solche Datenzugriffe Scheixxe, weil sie nicht in den Referenzdaten auftauchen!
    Wenigstens bist Du darauf gekommen, die DB-Nummer als BLOCK_DB zu übergeben, da erscheint wenigstens der DB-Zugriff in den Referenzdaten.

    FC1
    Code:
    // IN  : Start_DB : Block_DB
    //     : Start_Adresse : Int
    // TEMP: Start_OffsetPtr : DWord
    
    // aus #Start_Adresse (INT) einen Adresspointer (P#) machen :
          L     #Start_Adresse          // ( 2 )
          SLD   3                       // ( 2 -> P#2.0 )
          T     #Start_OffsetPtr        // in LD für speicherindirekte Adressierung
    
    // L [Start_DB].DBW[Start_Adresse] :
          AUF   #Start_DB               // ( DB7001 )
          L     DBW [#Start_OffsetPtr]  // ( DB7001.DBW2 )
    Aufruf
    Code:
          CALL  FC     1
           Start_DB     :=DB7001
           Start_Adresse:=2
          NOP   0
    Tip: Gewöhne Dir nicht so hohe DB-Nummern an (DB7001), meistens mußt Du mit DB1 ... DB255 auskommen.

    An Deiner Fragestellung verwirrt allerdings einiges:
    - symbolische Parametrierung
    - SCL-Quelle - was für eine SCL-Quelle?
    - würde gerne mit dem akku1 weiterarbeiten
    - mit Parameter Start als POINTER wird die SCL-Quelle nicht mehr richtig ausgeführt
    Was hat das mit Deinem Wunsch zu tun, eine Adresse nicht als POINTER zu übergeben?
    Was verlangt denn die SCL-Quelle, der Du anscheinend von außen einen variablen Wert übergeben willst?

    Harald

    Huch, hast ja grad auch geantwortet.
    Merci PN/DP.

    Habe es dalbi gerade bestmöglich erklärt. Kann mich leider manchmal nicht so präzise ausdrücken.

    werde es morgen (erst) testen können und dann feedback geben.

  11. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.327 Danke für 2.688 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Limette Beitrag anzeigen
    Ich hoffe ich habe nicht noch mehr Verwirrung gestiftet.
    Bei mir schon
    Nur soviel: Falls Du mit "addiere 2 oder 3 dazu" meinst, aus P#2.0 ein P#4.0 oder P#5.0 zu machen, dann beachte, daß Du zu Deiner Adresse P#2.0 oder P#3.0 addieren mußt ( P#x.0 = x * 8 ).

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. IO-Link Parametrierung
    Von Felixx91 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 09.08.2011, 13:34
  2. Parametrierung FB41
    Von Walter Kiefer im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.12.2010, 12:58
  3. FB-Parametrierung überwachen
    Von mueckerich im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 27.05.2009, 18:29
  4. Parametrierung CP 443-1
    Von -Andreas- im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.11.2006, 22:16
  5. CP143+ H1 Parametrierung
    Von dna909 im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 29.06.2006, 21:08

Lesezeichen

Berechtigungen

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