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

Ergebnis 1 bis 10 von 10

Thema: Kommunikation mit Kunde über CP342-5

  1. #1
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe ein Problem bei der Kommunikation zwischen unserer Anlage und einer Kundenanlage. Wir haben eine Teil der Anlage abgebaut und müssen nun diese Kommunikation bei uns einbinden.

    Hier die Daten der alten Anlage, die die Daten gesendet hat:
    CP414-3 DP V4.0
    An eine CP 443-5 Ext V6.0 ist eine DP-Mastersystem (Nr. 2) mit der Eingangs-Adresse 8189 angeschlossen. Übertragen werden 11DINT über eine Baugruppe mit 2mal 8 Wörtern und einmal 6 Wörtern Out und 0 Wörtern In ab den Ausgangsasdressen 800 bis 843. Der Aufruf ist in einem FC wie folgt:

    L DB510.DBD 300 //Speicherort der Daten
    T PAD 804
    L DB510.DBD 304
    T PAD 808

    Über den Kunden Empfänger ist mir nichts bekannt.

    Diese Anlage gibt es nicht mehr, daher mußten wir es bei uns einbinden:
    CPU 317-2 V2.1
    CP 342-5 mit einem DP-Mastersystem (Nr. 180) mit den Netzeinstellungen wie die alte Anlage (Profibus-Adresse 2, 1,5Mbit/s, Profil DP), mit einer Baugruppe 2mal 8Wörtern und einmal 6 Wörtern Out und 0 Wörtern In mit der Eingangs- und Ausgangs-Adresse 400-415.

    Die Datenliegen im DB200 mit 11DINT und der Aufruf ist in einem zyklisch aufgerufenem FC mit DP_Send wie folgt:

    CALL "DP_Send"
    CPLADDR:=W#16#190
    SEND :=P#DB200.DBX0.0 BYTE 44
    DONE :=M208.0
    ERROR :=M208.1
    STATUS :=MW206


    Die SiemensHotline hat mir schon verraten, dass wenn ich DP_Send benutze auch DP-Receive brauche. Daher habe ich noch einen DB (DB201) erzeugt und wie folgt aufgerufen:


    CALL "DP_RECEIVE"
    CPLADDR :=W#16#190
    RECV :=P#DB201.DBX0.0 BYTE 44
    NDR :=M208.2
    ERROR :=M208.3
    STATUS :=MW210
    DPSTATUS:=MB212


    Der Kunden Empfänger hat sich nicht geändert, d.h. wenn ich die Daten wie früher sende, sollten sie dort fehlerfrei ankommen.

    Das Problem ist nun, das zwar Daten ankommen, aber keine vernünftigen. Außerdem blinkt an der CP immer die SF Lampe. Muss ich die BG als In und Out konfigurieren? Oder habe ich noch andere Fehler?
    Kann mir einer weiter helfen?
    Vielen Dank.
    Gruß
    Tompson
    Zitieren Zitieren Kommunikation mit Kunde über CP342-5  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Hallo tompson

    Du willst also 44 Bytes senden, aber warum hast Du denn nur 16 Bytes reserviert ? (400-415).

    CP342-5 mit "DP_Send" ist auch etwas "lustig".
    Den Addressierung fangen immer an von Byte 0, und man muss sämtliche Bytes transferieren von 0 bis letzte konfigurierte byte.
    Das heisst:
    SEND :=P#DB200.DBX0.0 BYTE 416 // (bytes 0 .. 415) wenn nur die 16 bytes von 400 - 415 transferiert werden muss.

    Ich wurde die 16 Bytes (oder die 44 Bytes) von 0 anfangen.
    Merk dich das den E/A Prozessabbild von den CP342-5 hat nichts zu tun mit den Prozessabbild von den CPU. Beide können z.B. E/A von 0 bis 44 haben - sie überlapt nicht mit einander.

    Wenn Du in CP342-5 die Ausgänge als bytes 0..43 Konfigurierst, dann wird es funktionieren mit
    SEND :=P#DB200.DBX0.0 BYTE 44 // (bytes 0 .. 43)

    DP_RECV funktioniert im gleichen Sinne.
    Jesper M. Pedersen

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

    Perfektionist (12.10.2010)

  4. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Hier ist den verwendung von CP342-5 kurz erklärt:

    Some tips regarding using CP342-5.
    Jesper M. Pedersen

  5. #4
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo JesperMP,

    ich kann die Länge aber in der HW-Konfig gar nicht veränder! Sie ist mit 16 Bytes fest vorgegeben.
    Und ich dachte, die Adresse, an die ich meine Daten sende wäre nicht die der CP, sondern die der Baugruppe. Also in meinem Fall die Adressen 800 bis 843!

    Gruß
    Tompson

  6. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Die 16 Bytes die den CP342-5 Modul verwendet im HW Konfig von den S7-300 Rack haben nichts direkt zu tun mit die E/A Daten die in den CP342-5 Modul konfiguriert ist. OK, ist nicht wichtig.

    Also, wie sind die E/A in den CP342-5 Modul konfiguriert ?
    Als Eingangs-Bytes 800 - 843, und Ausgangs-Bytes 800 - 843 ?
    Dann wäre den korrekte DP_SEND Auftrag so programmiert:

    SEND :=P#DB200.DBX0.0 BYTE 844.

    Die Adressen als 800 - 843 zu konfigurieren ist sehr ineffektiv, und bringt keinen Vorteile.
    Einfach die Eingans und Ausgangs-Bytes als 0-43 konfigurieren.
    Dann wird den korrekte DP_SEND Auftrag so programmiert:

    SEND :=P#DB200.DBX0.0 BYTE 44.

    Bei den Kommunikations-Partner ist es komplett Egal welche Adressen Du verwendest in Dein Program. Es ist nur wichtig das anzahl und Typ von die Adressen übereinstimmen, wo Eingänge auf eine Seite sind die Ausgänge auf der andere Seite.
    Jesper M. Pedersen

  7. #6
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Also, wie sind die E/A in den CP342-5 Modul konfiguriert ?
    Als Eingangs-Bytes 800 - 843, und Ausgangs-Bytes 800 - 843 ?
    Dann wäre den korrekte DP_SEND Auftrag so programmiert:

    SEND :=P#DB200.DBX0.0 BYTE 844.
    Aber bei Send gebe ich doch die Länge an und nicht die "Endadresse", daher wäre doch auch in diesem Fall hier richtig
    SEND :=P#DB200.DBX0.0 BYTE 44
    anzugeben, oder?

    Und außerdem war die Adresse ab 800 ja in dem Ursprungsprogramm. Ich habe ja die Adressen 0-43 genommen.

    Muss oder soll ich denn den DP_Receive auch aufrufen? Und wenn ja, muss ich dann die HW-Konfig so ändern, dass ich nicht nur 22 Wörter in sondern auch 22 Wörter Out habe, auch wenn da nichts empfangen werde?
    Geändert von Tompson (25.03.2010 um 11:24 Uhr)

  8. #7
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Nein, es ist tatsäglich so. Die Bytes fängen immer von nr. "0" an.
    Was DP_SEND tut, ist den Ausgangs Prozesabbild in den CP342-5 zu befüllen.
    Jesper M. Pedersen

  9. #8
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Zitat Zitat von Tompson Beitrag anzeigen
    Und außerdem war die Adresse ab 800 ja in dem Ursprungsprogramm. Ich habe ja die Adressen 0-43 genommen.
    Ich kenne den CP443-5 nicht. Entweder ist das auch so, das man DP_SEND und DP_RECV verwenden muss, aber der Rückwandbus in S7-400 ist viel schneller, so es hat keine grosse Bedeutung.
    Oder, das E/A-Prozesabbild von den CP443-3 ist direkt im CPU Prozesabbild integriert.

    Egal, bei CP342-5 ist es nicht empfehlenswert grosse Lücken zu haben, und es bringt keine Vorteile.
    Jesper M. Pedersen

  10. #9
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich bin verwirrt!

    Laut Siemens Handbuch (und so mache ich es auch bei AG_Send) gebe ich da die Startadresse als Pointer an und die Länge. So steht es auch im Siemenshandbuch.
    Die Parameter "SEND" und "RECV" erfordern eine Pointer-Angabe im Format "ANY" (z.B. "P#DB1.DBX3.0 BYTE 37"). Der Pointer zeigt in diesem Beispiel auf das Bit 0 im Byte 3 des Datenbausteins DB1. Die Angabe "BYTE 37" gibt die Länge des zu übertragenden Datenfeldes in Byte an.

    Was mache ich denn mit dem DP_Receive?

  11. #10
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    AG_SEND hat nichts mit DP_SEND zu tun !

    "Die Angabe "BYTE 37" gibt die Länge des zu übertragenden Datenfeldes in Byte an." Genau, und du musst den E/A-Prozessabbild übertragen, und es fangen an von Byte 0.

    Probier doch was ich dir vorgeschlagen habe.

    Ich bin nicht sicher das ein DP_RECV zwingend nötig ist. Ich erinnere das es gab ein Note darüber, aber nur bei alte Firmware Versionen. Mach doch einfach ein DP_RECV und sehe wie es klappt.
    Jesper M. Pedersen

Ähnliche Themen

  1. Kommunikation CP342-5 mit DPDP-Koppler
    Von MickyMaus64 im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 12.08.2011, 10:19
  2. Kommunikation CP342-5 - Micromaster 420
    Von Chrisi im Forum Feldbusse
    Antworten: 8
    Letzter Beitrag: 15.04.2010, 15:17
  3. DB über CP342-5 versenden
    Von ottopaul im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.01.2007, 18:15
  4. Siwarex M über CP342-5
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.10.2005, 07:32
  5. Antworten: 7
    Letzter Beitrag: 09.08.2004, 21:00

Lesezeichen

Berechtigungen

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