Datenaustausch via PROFIBUS

kai.1985

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich bin ziemlich neu auf dem Gebiet "PROFIBUS" und möchte noch weiteres Hintergrundwissen erlangen ;)
Und zwar geht es darum:
Ich möchte von meiner Steuerung, einer CPU313C + CP342-5 zu einer Yokogawa Steuerung Daten senden, bzw. von der Yokogawa Steuerung Daten empfangen, via Profibus. Mein CP 342-5 ist in dem Fall DP-Slave. Ich habe in meinem Programm 2 DB´s angelegt für senden und empfangen. In den DB´s sind unterschiedliche Datentypen (WORD,REAL,BYTE,BOOL). Zusätzlich habe ich einen FC wo ich die Daten aus meinem Programm in den DB schaufel und ich den Aufruf FC1 und FC2 mache. Der Partner von mir hat die passende GSD Datei für den CP 342-5 von mir bekommen.
Nun besteht das Problem darin, dass die Yokogawa Steuerung eine andere Struktur hat wie meine Datenbausteine und ich die Daten zum einen nicht an die richtige Stelle lege und zum anderen die Daten von der Yokogawa Steuerung nicht an die richtige Stelle gelegt werden.
Was habe ich falsch gemacht?

Im Anhang findet ihr einen Auszug vom FC und den DB´s
 

Anhänge

  • DB22_Send.pdf
    21,2 KB · Aufrufe: 35
  • DB21_Recv.pdf
    19,1 KB · Aufrufe: 18
  • FC21_Send_Recv.pdf
    21,7 KB · Aufrufe: 26
Was natürlich primär mal auffällt:
Du beschreibst den DB22 ab DBW26, sendest bzw. legst ihn ins Prozessabbild des CP ab DBW0.
Beim Empfangen ists im Prinzip ähnlich.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Manuel,

Das verstehe ich jetzt nicht ganz. Ich beschreibe den DB22 auch ab DBW0, mit einer Schleife (siehe FC21). Und wodran sehe ich, dass ich den ihn ins Prozessabbild des CP ab DBW0 lege?

MFG

Kai
 
Nun besteht das Problem darin, dass die Yokogawa Steuerung eine andere Struktur hat wie meine Datenbausteine und ich die Daten zum einen nicht an die richtige Stelle lege und zum anderen die Daten von der Yokogawa Steuerung nicht an die richtige Stelle gelegt werden.
Was habe ich falsch gemacht?
Ich würde sagen, der schwarze Peter liegt beim Yokogawa DP-Master. Dieser hat korrekt mit seinen DP-Slaves zu kommunizieren und sich an die Datenstrukturen des DP-Slave anzupassen. Der CP342-5 hat seine E/A-Daten jeweils ab Adresse 0 zu projektieren. Ich sehe keinen Fehler.

Grundsätzlich läuft die DP-Kommunikation? Keine BF/SF?

Harald
 
NACHTRAG:
Selbstverständlich habt Ihr Euch auf den Aufbau und die Adressen der Datenstruktur zu einigen, so daß auf beiden Seiten mit den gleichen Adressen gearbeitet wird. Wie unterschiedlich sind denn die Adressen? Ist der Fehler systematisch? Hast Du ein Beispiel?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Harald,

danke erstmal für deine Antworten.
Durch aufwendige Programmierung an der Yokogawa Steuerung hat das Prozessleitsystem alle Daten von mir korrekt empfangen. Alle Daten die in DB22 liegen, werden ordnungsgemäß zur Prozessleitwarte geschickt. Das Problem besteht darin das Daten von der Prozessleitwarte nicht ordnungsgemäß in den DB21 geschrieben werden. Die Yokogawa Steuerung kann entweder korrekte Byte oder Real in den Dateibaustein schreiben. Liegt das vielleicht darin, dass ich die ersten 64 Byte als Bool deklarieren muss und die nächsten 64 Byte als Real?

Kai
 
Ganz allgemein scheint es sich hier dann also ums gute alte Big/Little Endian Problem zu handeln.
TAW bzw. TAD sind deine Freunde hierbei, kurzum, irgendwer, also Siemens oder Yokogawa, muss die Bytes drehen,
wer das von euch beiden macht ist reine Verhandlungssache.

Mfg
Manuel
 
Ja, dass hat der Programmierer von der Yokogawa gemacht. :)
Das Problem liegt jetzt im Bereich, wo ich die Daten empfange. Muss ich da meinen Datenbaustein anpassen? Und wenn ja, muss mein Datenbaustein eine bestimmte Größe haben, aufgrund irgendeiner Struktur? In dem Datenbaustein befinden sich verschiedene Datentypen (siehe DB21)

Kai
 
Nein.
Er kann entweder nur REAL Werte auf dem DB21 ablegen oder nur BOOL Zustände. Er kann nicht beide Dateitypen in den Bereich des DB21 schreiben.

Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und was ist nun also der Vorschlag des Yokogawa Proggis?
Das ist ein Problem was im Grunde nur und ausschließlich er lösen kann, nur er kennt den Hintergrund für seine Aussage.

Wenn die Yoko Kiste sich als Profibus-Master so dämlich verhält, dann soll er halt festlegen wie es in am liebsten ist.

Kurzum, wenn er die Ausgangsbytes seiner Steuerung nicht frei beschreiben kann, dann muss er halt einen Weg finden das zu tun.

Mfg
Manuel
 
Durch aufwendige Programmierung an der Yokogawa Steuerung hat das Prozessleitsystem alle Daten von mir korrekt empfangen. Alle Daten die in DB22 liegen, werden ordnungsgemäß zur Prozessleitwarte geschickt. Das Problem besteht darin das Daten von der Prozessleitwarte nicht ordnungsgemäß in den DB21 geschrieben werden.
Die Richtung von Dir zur Yokogawa funktioniert nun? (im EP ging ja noch garnichts)
Dann soll die Yokogawa Steuerung die gleiche "aufwendige" Programmierung auch beim Schreiben von deren Sendedaten in den Slave (DB21) anwenden.
War es bei den Empfangsdaten (DB22) notwendig, Bytes zu tauschen? Genauso muß es auch für die Gegenrichtung gemacht werden.
Ich bin der Meinung, falls Byte-Tauschereien nötig sind, daß diese dann für beide Richtungen in nur einem Partner gemacht werden sollen. Und zwar im Client, was hier der DP-Master ist - also die Yokogawa.


Die Yokogawa Steuerung kann entweder korrekte Byte oder Real in den Dateibaustein schreiben.
Er kann entweder nur REAL Werte auf dem DB21 ablegen oder nur BOOL Zustände. Er kann nicht beide Dateitypen in den Bereich des DB21 schreiben.
Das ist nicht Dein Problem. Der DP-Master muß in der Lage sein, auch strukturierte Daten mit gemixten Datentypen in einen DP-Slave zu schreiben - er muß den DP-Slave in seiner "HW Konfig" nur richtig konfigurieren oder eine kompatible Konfiguration wie auch immer erstellen. Beim Lesen vom DP-Slave geht es doch auch.


Liegt das vielleicht darin, dass ich die ersten 64 Byte als Bool deklarieren muss und die nächsten 64 Byte als Real?
Wie das? Dein DB21 ist doch nur 64 Byte groß.


Das Problem liegt jetzt im Bereich, wo ich die Daten empfange. Muss ich da meinen Datenbaustein anpassen? Und wenn ja, muss mein Datenbaustein eine bestimmte Größe haben, aufgrund irgendeiner Struktur?
Gibt es ein Pflichtenheft oder ein anderes Dokument, in dem die Struktur und die Adressen der Übergabedaten festgelegt sind? An diese Schnittstellen-Vereinbarung haben sich beide Seiten zu halten. Genau diese festgelegte Struktur haben beide Seiten abzubilden. Vergleiche die Struktur Deines DB mit dieser Vereinbarung, dann siehst Du, ob Du etwas ändern mußt. Wenn Dein DP-Master diese festgelegte Struktur nicht abbilden kann, dann hat er Änderungsvorschläge zu machen bezüglich was mit seiner Steuerung möglich ist.


Zum Überprüfen, ob die Daten beim Partner richtig ankommen und richtig wieder zusammengesetzt werden, kann man Testdaten senden:
Code:
      L     DW#16#11223344
      T     DB22.DBD   0
      L     DW#16#12345678
      T     DB22.DBD   4
Wenn der Empfänger seine Empfangsdaten hexadezimal beobachtet dann kann er leicht sehen, ob und ggf. wie Bytes getauscht werden müssen.
Die ersten 8 Sendebytes gehen hier mit folgenden Werten raus: 11 22 33 44 12 34 56 78

Nach dem gleichen Prinzip kann die Yokogawa Steuerung in der Gegenrichtung Testdaten senden, die Du dann im DB21 empfängst und beobachtest.


Übrigens schreibt/liest der DP-Master nicht in/aus Deinen DB21 und DB22. Er kommuniziert mit Deinem CP342-5. Erst Du schreibst/liest die E/A-Daten Deines CP342-5 in Deine DB21/DB22.

Harald
 
Und was ist nun also der Vorschlag des Yokogawa Proggis?
Das ist ein Problem was im Grunde nur und ausschließlich er lösen kann, nur er kennt den Hintergrund für seine Aussage.

Wenn die Yoko Kiste sich als Profibus-Master so dämlich verhält, dann soll er halt festlegen wie es in am liebsten ist.

Kurzum, wenn er die Ausgangsbytes seiner Steuerung nicht frei beschreiben kann, dann muss er halt einen Weg finden das zu tun.
*ACK*

Harald
 
Zurück
Oben