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

Ergebnis 1 bis 10 von 10

Thema: Frage zu CP-342-5 (DP_Send und DP_Receive)

  1. #1
    Registriert seit
    23.10.2004
    Ort
    zu Hause
    Beiträge
    1.041
    Danke
    370
    Erhielt 406 Danke für 274 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich spiele gerade mit meinem alten CP_342-5 rum und habe mal eine Frage zu den FCs 1 und 2.

    Kann mir jemand verraten, was diese Parameter bedeuten und ob man die irgendwie auswerten kann:

    Beim FC1 (DP_Send):

    Status (da wird ein WORD ausgegeben. Was macht man damit, und wie?)

    Code:
      CALL  "DP_SEND"
           CPLADDR:=W#16#100
           SEND   :=P#A 0.0 BYTE 7
           DONE   :=M56.1
           ERROR  :=M56.0
           STATUS :=MW56
          NOP   0
    Beim FC2 (DP_Receive)

    Status (wie beim FC1)
    DP_Status (hier ist es ein Byte... weiß ich auch nicht)

    Code:
      CALL  "DP_RECV"
           CPLADDR :=W#16#100
           RECV    :=P#E 0.0 BYTE 9
           NDR     :=M56.0
           ERROR   :=M56.0
           STATUS  :=MW56
           DPSTATUS:=MB56
          NOP   0
    Ich habe erstmal irgendetwas rangeschrieben, damit er arbeiten kann.

    Kann man aus den Werten ersehen, ob ein Slave ausgefallen ist, und wenn ja, welcher? Oder sind da alle möglichen Fehler-, bzw. Statusmeldungen drin?
    Die Onlinehilfe sagt mir leider gar nichts... und bei Google habe ich bis jetzt auch noch nichts brauchbares gefunden.

    Da ich in diesem Bereich (wie in vielen anderen auch) nicht sehr bewandert bin, möchte ich Euch bitten, so zu antworten, dass auch meine Mutter (Finanzbeamte) das verstehen würde...

    Vielen Dank im Voraus!!!

    Gruß,

    dia
    Diese Signatur enthält Inhalte von WTF und ist in Deinem Land nicht verfügbar!
    Zitieren Zitieren Frage zu CP-342-5 (DP_Send und DP_Receive)  

  2. #2
    Registriert seit
    01.11.2007
    Beiträge
    1.235
    Danke
    91
    Erhielt 406 Danke für 367 Beiträge

    Standard

    Wenn du in der Hilfe zum FC1/FC2 bist kannst du ganz oben den Link "siehe auch" anklicken, dann kommst du zu den Erklärungen die du, so wie ich es verstanden habe, suchst.

    Grüße von HaDi

  3. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    diabolo150973 (29.10.2008)

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

    Standard

    Geh mal mit dem Cursor auf den Baustein und drücke F1 (in der Library geht das auf jeden Fall). Dann unten bei den links "Anzeigen des Bausteins DP_Send" bzw "Anzeigen des BAusteins DP_RECV", Da stehen die Codes.
    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

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

    diabolo150973 (29.10.2008)

  6. #4
    Avatar von diabolo150973
    diabolo150973 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.10.2004
    Ort
    zu Hause
    Beiträge
    1.041
    Danke
    370
    Erhielt 406 Danke für 274 Beiträge

    Standard

    Vielen Dank, Ihr beiden!!!

    Sowas blödes... Vielleicht sollte man sich erstmal mit der Software vertraut machen, bevor man damit arbeitet will!

    Wir haben damals in der Schule auch nur mit CPs gearbeitet und dort hat uns das niemand erzählt. Wahrscheinlich wusste unser Lehrer das selber auch nicht. Die Werte, die ich da rangeschrieben habe, sind sogar von fertigen "Schulausdrucken" übernommen. Wenn man dann gefragt hat, was der Quatsch soll alles gleich wieder zu überschreiben, kam als Antwort:

    Hier ist das so. Die Werte werdet ihr eh nie brauchen...

    Bis dann und DANKE nochmal,

    dia
    Diese Signatur enthält Inhalte von WTF und ist in Deinem Land nicht verfügbar!

  7. #5
    Registriert seit
    07.10.2008
    Beiträge
    8
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hi diabolo,

    ausführlich Informationen zur Kommunikation per CP gibt es auch im entsprechenden Programmierhandbuch: C79000-G8900-C229-01
    Gibt es als PDF auf der Siemens-Seite (http://support.automation.siemens.com und Suche benutzen). Ab Kapitel 4.2 findest du alles zu DP_SEND und DP_RECV (inkl. Condition Codes).

    Viele Grüße,
    Manuel

  8. Folgende 2 Benutzer sagen Danke zu vtrbender für den nützlichen Beitrag:

    diabolo150973 (29.10.2008),Dumbledore (29.10.2008)

  9. #6
    Registriert seit
    04.01.2007
    Ort
    Euskirchen
    Beiträge
    136
    Danke
    23
    Erhielt 37 Danke für 31 Beiträge

    Standard

    Zitat Zitat von vtrbender Beitrag anzeigen
    C79000-G8900-C229-01 Gibt es als PDF auf der Siemens-Seite (http://support.automation.siemens.com und Suche benutzen). Ab Kapitel 4.2 findest du alles zu DP_SEND und DP_RECV (inkl. Condition Codes).
    ich hänge mich an die Originalfrage mal dran, ich habe vielleicht auch ein Verständnisproblem.

    Die Parameter von FC1 und FC2 haben als Adresse nur die Baugruppenadresse (Parameter CPLADDR). Ich kann bei FC1 und FC2 also keinen einzelnen Slave adressieren. Wie geht das nun vor sich, wenn ich mehrere Slaves an meinem CP342-5-Master angeschlossen habe? Rufe ich FC1 und FC2 pro Master nur einmal im Zyklus auf und gebe als Datenbereich (Any-Pointer) den gesamten Eingangs- bzw- Ausgangs-Bereich aller Slaves an? Was geschieht mit evtl. Adresslücken zwischen den Slaves?

    Ich hoffe, ich habe mich verständlich ausgedrückt. Das genannte Handbuch geht auf diese Situation nicht ein - oder ich habe es nicht gefunden / verstanden ...

    Gruss Michael aka Dumbledore

  10. #7
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    @Dumbledore
    Wie geht das nun vor sich, wenn ich mehrere Slaves an meinem CP342-5-Master angeschlossen habe?
    Du liest den Adressbereich aus, auf welche und wie viele Slaves dieser sich verteilt ist egal.

    Rufe ich FC1 und FC2 pro Master nur einmal im Zyklus auf und gebe als Datenbereich (Any-Pointer) den gesamten Eingangs- bzw- Ausgangs-Bereich aller Slaves an?
    Letzten Endes ja.

    Was geschieht mit evtl. Adresslücken zwischen den Slaves?
    Diese werden als Lücke in den angegebenen Any Bereich transferiert.
    Du hast z.B. 1 Slave mit E-Byte 200, dann überträgst du halt 200 Leerbytes, und dein Any-Pointer muss mindestens 201 Byte lang sein.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  11. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    Dumbledore (29.10.2008)

  12. #8
    Registriert seit
    04.01.2007
    Ort
    Euskirchen
    Beiträge
    136
    Danke
    23
    Erhielt 37 Danke für 31 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Du liest den Adressbereich aus, auf welche und wie viele Slaves dieser sich verteilt ist egal.
    ok so weit so gut, so hatte ich mir das auch gedacht.

    Was ich nur jetzt nicht verstehe ist das Diagramm im o.g. Siemens-Handbuch auf Seite 138 Absatz 4.2.2.2. Dort sind mehrere "Nutzdaten" (A,B,C) genannt, die während eines DP_SEND-Zyklus auch nicht verändert werden dürfen (sagt Siemens).

    Konkret hatte ich das eigentlich so vor, dass für DP_SEND und DP_RECV jeweils ein DB benutzt wird, der dann in einem einzigen Aufruf von FC1 bzw. FC2 referenziert wird. Es wird also in jedem OB1-Zyklus DP_SEND (für alle Slaves) aufgerufen, während die eigentliche Programmlogik ihre Daten über die beiden DBs ausliest bzw. ausgibt (so als wären es Eingänge und Ausgänge). Das ganze ist ähnlich einem PAE/PAA das man selber verwaltet.

    Code:
    ORGANIZATION_BLOCK "Cycle Execution"
    TITLE = "Main Program Sweep (Cycle)"
    VERSION : 0.1
     
    VAR_TEMP
      OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
      OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
      OB1_PRIORITY : BYTE ; //Priority of OB Execution
      OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
      OB1_RESERVED_1 : BYTE ; //Reserved for system
      OB1_RESERVED_2 : BYTE ; //Reserved for system
      OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
      OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
      OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
      OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =receive data from MCC via profibus CP342-5
    //address details in DB11 see hardware config
          CALL "DP_RECV" (
               CPLADDR                  := W#16#100,
               RECV                     := P#DB11.DBX0.0 BYTE 108,
               NDR                      := M    205.2,
               ERROR                    := M    205.3,
               STATUS                   := MW   202,
               DPSTATUS                 := MB   204);
          NOP   0; 
    NETWORK
    TITLE =main program
    NETWORK
    TITLE =send data to MCC via profibus CP342-5
    //address details in DB10 see hardware config
          CALL "DP_SEND" (
               CPLADDR                  := W#16#100,
               SEND                     := P#DB10.DBX0.0 BYTE 108,
               DONE                     := M    205.0,
               ERROR                    := M    205.1,
               STATUS                   := MW   200);
          NOP   0; 
    END_ORGANIZATION_BLOCK
    Oder muss ich zumindest das Schreiben in den DB für DP_SEND sperren während DP_SEND aktiv ist?

    Gruss Michael aka Dumbledore

  13. #9
    Registriert seit
    04.01.2007
    Ort
    Euskirchen
    Beiträge
    136
    Danke
    23
    Erhielt 37 Danke für 31 Beiträge

    Standard

    [INGRID]

    kann bitte jemand das von mir oben genannte Codestück mit DP_SEND und DP_RECV bestätigen, ist das so korrekt?

    danke im voraus

    Mike aka Dumbledore

    [/INGRID]

  14. #10
    Registriert seit
    01.11.2007
    Beiträge
    1.235
    Danke
    91
    Erhielt 406 Danke für 367 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also, ich habe mir mal verschiedene Projekte von verschiedenen Anlagen angesehen und die haben das alle so gemacht. Am Anfang des OB1 wird gelesen und am Ende wird geschrieben.
    Für mein Verständnis arbeiten FC1/FC2 wie ein Blockmove, nur halt über den Rückwandbus vom/zum CP.
    Zur Fehlerauswertung von FC1/FC2 werden ERROR und STATUS ausgewertet, der NDR(FC2) bzw. DONE(FC1) werden nicht weiter benutzt.
    Die eigentliche Busdiagnose wird dann mit FC3 gemacht.

    Grüße von HaDi
    Geändert von HaDi (30.10.2008 um 10:18 Uhr) Grund: Rechtschreibung

  15. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    Dumbledore (30.10.2008)

Ähnliche Themen

  1. CP342-5 und DP_SEND
    Von MSP im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 16.05.2009, 22:44
  2. Antworten: 15
    Letzter Beitrag: 09.04.2009, 20:57
  3. CP342-5 DP_SEND und DP_RECV.
    Von JesperMP im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 18.12.2007, 08:16
  4. Profibus Fehler DP_Send/Recv
    Von Buchholz im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 08:49
  5. Antworten: 4
    Letzter Beitrag: 18.05.2005, 18:49

Lesezeichen

Berechtigungen

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