Profibus-Verbindung zwischen SPS und Bender

jr-sps

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Zunächst der Aufbau:
Ich habe hier ein Differenzstromauswertegerät RCMS460-D, welches mit einem Protokollumsetzer FTC470XDP mit dem Profibus verbunen ist. Am BUS häng noch eine SPS 317-2EJ10-0AB0.

Leider habe ich keine Ahnung von Profibus und die Suchen im Internet haben mir nicht großartig weitergeholfen.

Ich möchte gern mittels Ethernet auf die SPS zugreifen und diese so programmieren, dass diese die vom Protokollumsetzer gesendeten Daten aufnehmen und speichern kann. Später soll das ganze so erweitert werden, dass mehrere Protokollumsetzer im BUS sind. Aber jetzt ist erstmal die Kommunikation mit dem einen Umsetzer erforderlich.
Mit dem Handbuch ist mir bekannt, aus welchen Bytes sich ein Befehl zusammensetzt und wie aus empfangenen Bytes die Antwort ausgelesen werden kann. ABER ich weiß nicht, wie ich die Daten auf den Bus schreiben bzw. die Daten vom Bus lesen kann.
Es wäre nett, wenn jemand einen guten Link im Internet oder eine einfache Erklärung hätte.

Vielen Dank im Voraus.

MfG
jr-sps
 
Zunächste benötigst du einen Ethernet CP für deine S7 300 damit du diese Programmieren usw kannst.

Um Daten auf Profibus (nehme ich jetzt mal an) zu senden gibt es spezielle Bausteine von Siemens für die S7 mit denen zu auf Profibus lesen und schreiben kannst. (SFC14 lesen, SFC15 schreiben).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du solltest erst mal die GSD Datei vom Umsetzer in den Hardwaremanager von simatic einbinden siehe Anhang. Er ist dann unter Anybus-S im Katalog zu finden
 

Anhänge

  • ftc_1003.zip
    1,8 KB · Aufrufe: 28
Zuviel Werbung?
-> Hier kostenlos registrieren
hmm...
so richtig funktioniert das ganze jetzt immer noch nicht.
ich habe mit fc1 (DP_SEND) und fc2 (DP_RECV) versucht, den datenaustausch zu realisieren.
dazu habe ich mir einen db80 erstellt, in dem ich bestimmte bytes mit werten belegt (werte der bytes aus dem handbuch). analog dazu habe ich den db81, der die empfangenen daten speichern soll. das klappt NICHT.

wie muss ich stattdessen vorgehen?
 
Guten Tag!
Vielen Dank für die Tipps. Die Bausteine SFC14/15 habe ich bereits versucht. Leider ist es mir in Step 7 nicht gelungen, sie einzufügen. Wenn ich den Baustein in ein Netzwerk einfügen möchte so erhalte ich die Fehlermeldung "Baustein konnte nicht eingefügt werden" (Fehlercode 30:498).
Muss dafür noch etwas an der Projektierung geändert werden oder wo liegt der Fehler bei mir?

Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Normalerweise werden Bibliotheksbausteine, wenn sie im Editor aufgerufen werden, automatisch ins Projekt eingefügt. Wenn es dabei Probleme gibt, kannst du ja die Bibliothek öffnen und die Bausteine manuell per kopieren/einfügen in dein Projekt bringen, dann sollte der Aufruf funktionieren.

Grüße von HaDi
 
Das mit dem Einfügen der SFCs hat nun geklappt.
Allerdings stehe ich wieder vor dem Problem, dass das Senden und Empfangen nicht funktioniert.
Wenn ich mir online den DB angucke, der für das Aufnehmen der empfangenen Daten verantwortlich ist, so sind da keine zu erwartenden Werte drin :-(
Gibt es bestimmte DBs die ich dafür verwenden muss oder kann das jeder beliebige sein?
Was ist noch bei einer Kommunikation mittels SFC14 und 15 zu beachten?

MfG
 
Grundsätzlich kannst du beliebige DBs benutzen, sofern sie nicht bereits für andere Zwecke verwendet werden. Stell doch mal dein Projekt hier rein, vielleicht hat man dann eher eine Idee, woran es hapert.

Grüße von HaDi
 
Das Projekt sieht für mich erst mal o.k. aus. Wenn alles (einschließlich der Systemdaten) geladen ist und der Profibus läuft (RUN leuchtet, BF leuchtet nicht am FTC) und die BMS-Seite richtig konfiguriert ist, sollte sich was tun.
Wenn du jetzt entsprechend der Anleitung einen Befehl über die Ausgangsdaten (DB80) absetzt, müsste der FTC in den Eingangsdaten (DB81) antworten. MW99 und MW100 sollten immer 0 sein. Die Aktualwerte in DB80/DB81 deuten darauf hin, dass du Ein- und Ausgangsdaten verwechselt hast, denn einen Befehl 20 habe ich, zumindest auf die Schnelle, nicht gefunden.

Grüße von HaDi
 
danke schonmal....
der bms-befehl 20 dient der geräte-abfrage, aber auch hier kriege ich keine antwort.
prinzipiell wäre der befehl egal, da er in der antwort auch wieder geschrieben werden müsste. die werte in den folgenden bytes sind ja dann die ergebnisse der anfrage.
ich habe im DB81 alle werte auf 0 gesetzt und wenn ich mir den datenbaustein online ansehe stehen die werte 1...0...2...0...1...0...0...0.
stehen sollte dort jedoch 1...0...2...0...20...201...0...0

weiterhin habe ich jetzt den fehler -32591. das ist in hexadezimal FFFFFFFFFFFF80B1 in der fehlerliste gibt es den fehler 80b1 und dieser hat die bedeutung:
"die länge des zielbereichs ist ungleich der mit step 7 projektierten nutzdatenlänge"
wie du ja im projekt gesehen hast, ist das anybus-gerät mit 8bytes projektiert und ich sende/ frage nur 8 bytes ab. wenn ich den adress-bereich vergrößere, zeigt mir die sps mit den leds bf1 und sf fehler an und die sps geht in stop.
somit ist mir der fehler 80b1 auch recht unerklärlich, vorausgesetzt ich habe das richtig abgeleitet die F's wegzulassen.

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... welches MW meldet denn den Fehler ?
MW99 oder MW100 ?
Du weißt schon, dass die beiden MW's sich um ein Byte überschneiden ? Es könnte also sein, dass du eigentlich eine ganz andere Fehlermeldung erhälst ... Versuch doch vielleicht mal MW98 und MW 100 und schreib dann etwas zu dem Status.
Hast du die DB's auch in die Steuerung übertragen ?

Gruß
LL
 
Beide MW's melden den Fehler. Das mit dem überschneidende Byte habe ich nicht beachtet. Danke für den Hinweis! Werd ich gleich mal ausprobieren.
Die DB's sind in die Steuerung übertragen...
 
... was mir noch gerade aufgefallen ist ...

In der HW-Konfig hast du den E-A-Bereich mit 4 Worten deklariert. Möglich, dass das System sich dran stört. Trag doch mal an die SFC's statt "Byte 8" als ANY-Pointer "Word 4" an. Vielleicht hilft das ...
 
Schade ...

Einen letzten habe ich noch ... wegen der Fehler-Meldung ...
Mach doch bitte die beiden DB's einfach mal ein paar Byte gräßer als benötigt. Das ist zwar ziemlich weit hergeholt, aber ich sehe sonst keinen möglichen Fehler mehr in dem Projekt ...
 
nun habe ich folgendes probiert...
ich habe die zugriffsbreite beginnend von 1byte je um 1byte erhöht.
bis 4 byte hat das ganze funktioniert und beim fünften byte habe ich den üblichen fehler erhalten.

meine überlegung war es nun einfach zweimal 4 bytes zu senden, jedoch denke ich, dass dies nicht richtig funktionieren wird, oder?
 
Zurück
Oben