Datenaustausch Beckhoff BC3150 (Profibus-Slave) zu Siemens CPU315-2DP (Profibus-Maste

ASDF0815

Level-2
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte über einen Busklemmenkontroller mit Digitalen Eingangsklemmen (KL1809) Zählerwerte von Stromzähler mit Impulsausgang über Profibus DP an eine Siemens CPU 315-2DP schicken und in einen DB ablegen. (Zählerwerte im DWORD Format). Auch sollen Werte von der Siemens Seite aus einen jeweiligen DB (z.B. Skalierung, Sollwert, Nulldurchgang, jeweils auch DWORD-Format) zur Beckhoff Seite geschickt werden.

Im System-Manager muss man beim BC3150(Slave) Module anfügen, welche für die Kommukation benötigt werden, über die man dann auf der Siemens Seite zugreifen kann. (über SFC14 und SFC15).

Der BC3150 stellt hierzu maximal 128Byte für Ein- und Ausgangsbyte zur Verfügung.

Nun zum Problem:

Pro Zähler werden ca. 28Byte benötigt, die über den Bus laufen. D.h. ich könnte mit den festen Adressen höchstens 4 Zähler auswerten oder beschreiben. Ich bräuchte aber weitaus mehr, maximal 64 Zähler :rolleyes:

Gibt es irgendwie die Möglichkeit das Programm so zu schreiben, das die Daten pro Zähler nacheinander über den Bus geschickt werden und von einen DB gelesen oder in einen DB geschrieben werden. Hat hierzu jemand schon Erfahrungen gemacht? Ich weiß nicht, wie und wo ich hier anfangen soll, weil ich den Modulen ja eigentlich nur feste Adressen vergeben und verknüpfen kann.
Ich muss nur wissen, wie ich anfangen muss..

Ich hoffe das Problem wird aus dem geschriebenen ersichtlich :)
 
Hallo ASDF,

du möchtest einen Zählerausgang auf digitale Eingangsklemmen legen? Bist du dir sicher das die Zähler 28 Byte benötigen??? Das wären ja 224 Bit. Somit würdest du 112 x KL1809 Klemmen für einen Zähler benötigen. Das kann ich mir irgendwie nicht vorstellen. Schau doch nochmal nach, ob die Zähler wirklich soviel benötigen.

Gruß
Snej
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst doch die 128 Byte multiplexen.
Das ganze musst du dann halt auf Beckhoff und auf Siemens Seite etwas ausprogrammieren - was aber nicht so schwierig sein sollte.

Das könnte dann z.B. in etwa so aussehen:
1. Siemens schickt z.B. im 1. Byte der Ausgangsdaten eine Indexnummer (z.B. 1) und nachfolgend die Daten, die in diesem Index zur Beckhoff geschickt werden sollen.
2. Beckhoff erkennt die Indexnummer 1, sichert sich die Empfangsdaten weg, und liefert in seinen Ausgangsdaten (also den Eingangsdaten der Siemens) ebenfalls die Indexnummer 1 und nachfolgend die zu diesem Index zugehörigen Datenbytes.
3. Siemens erkennt bzw. liest jetzt die Indexnummer (z.B. 1) in den Empfangsdaten von Beckhoff und kopiert sich die zugehörigen Nutzdaten zu diesem Index in einen Datenbaustein um.

4. Siemens schickt jetzt im 1. Byte der Ausgangsdaten die nächste Indexnummer (z.B. 2) und nachfolgend die zugehörigen Daten .....
 
Hallo ASDF,

du möchtest einen Zählerausgang auf digitale Eingangsklemmen legen? Bist du dir sicher das die Zähler 28 Byte benötigen??? Das wären ja 224 Bit. Somit würdest du 112 x KL1809 Klemmen für einen Zähler benötigen. Das kann ich mir irgendwie nicht vorstellen. Schau doch nochmal nach, ob die Zähler wirklich soviel benötigen.

Gruß
Snej

Nein, pro Zählerausgang benötige ich nur einen Eingang auf der Klemme, das ganze wird in einer Schleife gezählt, der Zählwert, also das Ergebnis stellt ein Doppelwort dar. Dass die Schleife pro Impuls den richtigen Wert aufaddiert benötige ich eine Skalierung, die auch ein Doppelwort darstellt. Des weiteren will ich falls ein Zählerwertabgleich erforderlich ist, einen Sollwert vorgeben können, ebenfalls Doppelwort. Das hast du falsch verstanden ;)

Danke uncle_tom, Stichwort multiplexen schau ich mir genauer an, das hört sich schon mal gut an und könnte so funktionieren. Ich hab sowas noch nicht gemacht, aber ich versuchs mal! ;)
 
Ich versuche mich gerade mit den Thema multiplexen auseinanderzusetzen, aber irgendwie komm ich da noch net richtig weiter. Wie könnte denn eine Anweisung in ST für Multiplexen aussehen? Kann mir da eine case-Anweisung helfen? Hat jemand ein Beispiel?
Zu den Daten von Beckhoff zur Siemens -> die Zählwerte werden in einem Array abgelegt. Wie weise ich den einzelnen Positionen eine Indexnummer zu, das es auch Siemens "versteht" und im Datenbaustein unter der richtigen Adresse ablegt?
 
Zurück
Oben