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

Ergebnis 1 bis 8 von 8

Thema: Inhalt eines DB in Peripherie schreiben

  1. #1
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen,
    Gerne würde ich den Inhalt eines globalen-DB in einen gewünschten Adressbereich schreiben. Momentan schreibe ich die im DB befindlichen DWords noch per symbolischer Adressierung einzeln, an die Ausgänge raus.
    Doch gibt es einen SFC, der mir durch Angabe der Speicherstelle im DB (Am besten auch über eine Ermittlung der Adresse über die Symbolik) ein Datenfeld mit einer gewünschten Länge, an die Peripherie schreibt?
    Würde es gerne in AWL programmieren.
    Hier noch ein Beispiel wie ich es momentan mache:

    Code:
    L "Daten".Befehl1.DW1
    T PAD[#temp_Adress]
     
    L #temp_Adress
    L P#4.0
    +D 
    T #temp_Adress
     
    L "Daten".Befehl1.DW2
    T PAD[#temp_Adress]
     
    L #temp_Adress
    L P#4.0
    +D 
    T #temp_Adress
     
    .
    .
    .
    .
    Zitieren Zitieren Inhalt eines DB in Peripherie schreiben  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    Das läßt sich mit "Blockmove" SFC20 erledigen.

    Code:
    CALL    SFC20        //SFC 20 "BLKMOV" (Variable kopieren) 
          (SRCBLK    := P#M100.0 BYTE 10, 
           RET_VAL    := MW10,    //10 Bytes ab MB 100 werden in die 10 Bytes ab  
            DSTBLK    := P#M200.0 BYTE 10); //MB 200 kopiert.

  3. #3
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Wenn der Adressbereich zu einem Profibus DP-Slave gehört kommt möglicherweise der SFC15 in betracht.

    MfG
    and we all support the team (S.King - Die Arena)

  4. #4
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Zitat Zitat von Mäuseklavier Beitrag anzeigen
    Wenn der Adressbereich zu einem Profibus DP-Slave gehört kommt möglicherweise der SFC15 in betracht.

    MfG
    Wenn er davor schon L und T-Befehle verwendet, ist wahrscheinlich keine Konsistenz der Daten vorhanden.

  5. #5
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Verpolt Beitrag anzeigen
    Hallo,

    Das läßt sich mit "Blockmove" SFC20 erledigen.
    Mit dem Blockmove ist es nötig einen ANY-Pointer anzugeben auf den Adressbereich wo er hinschreiben soll. Doch ist das die Peripherie also kein ANY-Pointer möglich.

    Mit FSC15 bekomm ich leider kein funktionierendes Ergebnis hin

    Code:
    CALL "DPWR_DAT"
    
    LADDR := W#16#19 // PAB 25.0 RECORD :="Daten".Befehle // Struktur mit 4 Bytes gefült RET_VAL :=#RetVal_temp
    Er schreibt einfach nichts in den Adressbereich.
    Kann mir da jemand weiter helfen?

  6. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    was steht denn bei retval?
    wie ist die baugruppe in der hw-config parametriert?

    in der hw-config muss das so parametriert sein das ber bereich konsistent ist
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #7
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ah hab ganz vergessen den Fehler mit dazu zu schreiben. Der Fehler ist x8090.
    Ich werde mal die HW-Config anpassen.

  8. #8
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von FinalMistery Beitrag anzeigen
    Mit dem Blockmove ist es nötig einen ANY-Pointer anzugeben auf den Adressbereich wo er hinschreiben soll. Doch ist das die Peripherie also kein ANY-Pointer möglich.
    Ja, das stimmt.

    so könnte es noch gehen.

    Code:
    CALL  "BLKMOV"
           SRCBLK :=P#DB1.DBX 0.0 BYTE 4
           RET_VAL:=MW100
           DSTBLK :=P#A 24.0 BYTE 4
    ansonsten zum SFC15

    HinweisEin Zugriff mit der SFC 15 "DPWR_DAT" ist nur auf drei oder mehr als 4 Byte lange Datenbereiche möglich. Andernfalls wird ein Zugriff mit dem Fehlercode W#16#8090 abgewiesen.

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 24.08.2010, 00:21
  2. Inhalt eines MP 370 Loeschen.
    Von lieuthnant im Forum HMI
    Antworten: 4
    Letzter Beitrag: 04.03.2010, 08:47
  3. Antworten: 2
    Letzter Beitrag: 27.11.2008, 23:16
  4. Inhalt eines DB in einen DB Schreiben
    Von nonguru im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.08.2008, 18:04
  5. Antworten: 2
    Letzter Beitrag: 10.10.2007, 17:59

Lesezeichen

Berechtigungen

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