MODBUS TCP Funktionbausteine Step 7

kürbis85

Level-1
Beiträge
13
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin, moin,

ich will mit einer s7 300 und einen Lean CP mit Modbus TCP Teilnehmern kommunizieren! Der Lean Cp ist ja meiner Meinung nach in der Lage TCP Telegramme (SEND/RECEIVE) zu senden und zu empfangen. Wodurch es auch möglich sein muss die übergeordenten Modbus/TCP Telgramme zu verschicken!

Ich suche jetzt schon seit längerem vorgefertigte Funktionbausteine die das Modbus Protokoll implementieren!

Andere SPS Hersteller (Phönix) stellen sowas kostenlos zu Verfügung!
(Bei Siemens ist das immer so eine Sache!!!:mad::mad::mad::mad:)

GRUß!

kuerbis
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die hab ich auch schon gefunden! Ich seh es aber nicht ein dafür Geld zu bezahlen!

Außerdem erzählen die in ihrem Handbuch was von einem IT CP! Ob man den wirklich brauch weiß ich nicht!

Oder ob Siemens nur wieder verkaufen will!

Aber Danke für die schnelle Antwort!

Gruß

Kürbis
 
Hallo,

ich mittlerweile mal ein Angebot von Siemens erhalten die wollen dafür 1600Euro haben!:twisted: Von Phönix Contact habe ich die bausteine umsonst bekommen.:-D

naja so ist siemens halt!:twisted:
 
Modbus

Selber schreiben ist gar kein problem. Ich habs mal implementiert um mit der APEX PAD800e zu kommunizieren. Wer es braucht, bitte melden.
Nett wär aber auch ein Link zu den Phoenix Contact bausteinen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Modbus / TCP

Selber schreiben ist gar kein problem. Ich habs mal implementiert um mit der APEX PAD800e zu kommunizieren. Wer es braucht, bitte melden.
Nett wär aber auch ein Link zu den Phoenix Contact bausteinen...

ich könnte dein progrogrammierbeispiel gut gebrauchen, möchte mir die die daten aus einen sentron über modbus / tcp auslesen. würd mich über eine nachricht freuen! danke!
 
ModBUS on TCP

...braucht man doch immer wieder.

Im letzten Jahr, haben wir von VIPA die abgesetzten Magazine auf "Modbus on TCP" Ebene eingesetzt. Hierzu gibt es auch Bausteine von VIPA. Die funktionieren natürlich auch bei einer S7-300 mit einem Lean CP. Es werden aber nur Coils abgefragt.

# .. sentron auslesen
Dieses Thema hatten wir auch schon. Wenn sich da bei Siemens nichts wesentliches getan hat, kann man es einfach vergessen. Wir sind auf zwei wesentliche Probleme gestossen :
- Wir haben erwartet das KW/h im DINT Format zur Verfügung gestellt
werden. Es werden aber W/h im 64Bit Real Format zur Verfügung gestellt.
- Die Daten im Sentron verlangen eigentlich danach mit mehreren
Telegramen abgefragt zu werden. Einfach weil die Adressaufteilung so ist.
Das Sentron lässt aber nur eine Verbindung zu.
So richtig gut ist das nicht und wird schnell zum Stundengrab.

# Virgill
Stell doch bitte mal Deine Lösung rein. Vielleicht können wir ja gemeinsam eine offene Lösung bauen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meinst du die 200er IM253Net ?

Ja, so nannten die sich wohl. Das ging auch ganz prima. Man darf natürlich nicht extrem viele haben, da man ja für jede eine TCP Verbindung einrichten muss. Hinsichtlich der Coils (Bits) habe ich mich viellecht auch etwas unglücklich ausgedrückt. Natürlich kann man auch AI Karten aus dem IM253 auslesen. Diese werden aber halt Bitweise und nicht Wordweise übertragen.
 
Adressierung MODBUS TCP Register

Hallo zusammen,

bin MODBUS-Neuling und habe die Aufgabe unsere Maschine über MODBUS TCP an die Auftragsverwaltung des Kunden anzubinden. Die SPS soll als MODBUS Server arbeiten und von der Auftragsverwaltung alle erforderlichen Daten zur Abarbeitung erhalten.

Die Konfiguration besteht aus:
VIPA 315-2 AG12 (projektiert als SIEMENS 318-2 Firmware 3.0)
SIEMENS CP 343-1 LEAN

Jetzt habe ich nach dem Beispiel von Jochen Feldkötter (herzlichen Dank an dieser Stelle) die Kommunikation in mein Projekt implementiert. Jetzt kommt von der Auftragsverwaltung die MODBUS-Anfrage, der Header wird empfangen, und wenn dann die Nutzdaten abgefragt werden sollen, gibt mir der AG_RECV die Meldung 8180H (Es liegen noch keine Daten vor) raus.

Mit der Meldung kann ich nicht viel anfangen, selbst wenn keine Daten vorhanden sind, müsste mir doch entsprechend der Anforderung die Registeranzahl beginnend ab dem Startregister ausgelesen werden, selbst wenn in jedem Register Null-Werte stehen würden.

Ich vermute hier eine fehlende Zuordnung MODBUS-Register zu SPS-Datenbaustein (Stichwort Pre-Mapping), finde aber weder in Hardwareconfig noch NetPro eine Möglichkeit diesbezüglich etwas einstellen zu können.

Ist das der richtige Ansatz oder kann es noch woanders dran liegen, dass die Kommunikation nicht funktioniert.

Das Projekt hänge ich mal mit an (Ist noch nicht fertig, deshalb mag es noch unvollständige Teile geben), die MODBUS-Kommunikation findet in den FCs 56-59 statt, die zugehörigen DBs sind 400-402. Der Sendeteil ist gesperrt, weil die SPS die Anfragen von der Auftragsverwaltung bekommt.

Hoffe ich habe mich verständlich ausgedrückt und das mir jemand helfen kann.

Gruß Patrick
 

Anhänge

  • Bb6lpv04.zip
    1,7 MB · Aufrufe: 280
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin,

ich glaube eine VIPA und ein original Lean-CP sind nicht unbedingt kompatibel! Die Vipa_Steuerung unterstützt die CP-funktionen einfach nicht! Zumindest ist das bei der Speed 7 sb315 mit der kleinen Progrmmier-Ethernet-Schnittstelle so! Wie das bei deiner Steuerung aussieht weiß ich nicht! Ein Anruf bei Vipa hat mich damals weiter gebracht!

Gruß
Kürbis
 
Servus,

Also ich hab mir mal dein Projekt angeschaut.

1. In NetPro solltest du bei deiner TCP Verbindung anstelle von Fetch/Write Send/Receive einstellen.

2. Deine Steuerung muss als Modbus-Server arbeiten. D.h. wenn sie vom Modbus-Client (Master) nicht gefragt wird, dann hat sie die Klappe zu halten.
Bei deiner Konstellation schickst du jedoch ständig selber Modbus-Requests (Anfragen) - du versuchst also selber als Client (Master) zu arbeiten.

3. In deinem Empfangs-FC gehst du davon aus, dass du ein Modbus-Telegramm mit 19 Byte Nutzdaten erhälst - ist das wirklich so. Der CP343 schickt dir nur dann 19 Byte, wenn er auch wirklich 19 Byte in seinem Empfangspuffer zur Verfügung hat ! Wenn der Client (Master) jetzt ein Telegramm mit weniger als 19 Byte Nutzdaten schickt, dann sagt der AG_Receive freilich es sind keine Daten vorhanden.

Ich vermute hier eine fehlende Zuordnung MODBUS-Register zu SPS-Datenbaustein (Stichwort Pre-Mapping), finde aber weder in Hardwareconfig noch NetPro eine Möglichkeit diesbezüglich etwas einstellen zu können.
Wer oder wo soll denn bitte hier was mappen. Das ganze wie von dir programmiert ist ja noch lange kein richtiger Modbus-Treiber - sondern lediglich ein Ansatz als Modbus Client (Master) und schon lange nicht als Modbus Server (Slave). Das mappen bzw. zuordnen der Modbus-Daten zu deinen Siemens-Datenbausteinen das müsstest du dann schon noch ausprogrammieren.

Ich glaub so wird das ganze nichts. Du solltest dir mal bei

http://www.modbus.org

die Modbus-Spezifikationen besorgen und ein bissel einlesen. Und vor allem den Unterschied zwischen Client/Server bzw. Master/Slave verstanden zu haben.

Was wird denn von der Auftragsverwaltung abgefragt bzw. geschrieben ?
Kann das ganze mit einem Modbus-Auftrag abgewickelt werden oder werden von der Auftragsverwaltung mehrere Aufträge der Reihe nach abgearbeitet.

Wenn du einen Modbus-Server erstellen willst, der mit mehreren Anfragen zurecht kommen soll, dann wird das schon ein bissel komplizierter.

Die Modbus-Anfragen von der Auftragsverwaltung haben sicherlich nicht die gleiche Nutzdatenlänge, du musst also jeweils im Header auswerten wieviele Nutzdaten noch folgen und dann einen variablen Any-Pointer zusammenbauen und diesem deinem Nutzdaten Receive übergeben.

Das was du dann zurückschicken musst (Send) hängt dann auch wieder davon ab, was die Auftragsverwaltung wissen will (Functioncode). Das ganze ist dann natürlich auch variabel in der Länge.

Weiters musst du den Transaction-Identifier (Byte 0 und 1 im Empfangstelegramm) auswerten und jeweils in deinem Sendetelegramm wieder zurückschicken.

Im übrigen wirst du dir bei der ganzen Sache mit FUP gewaltig die Finger brechen - wenn das was vernünftiges werden soll, dann musst du die Sache in AWL angehen.

usw. usw.

Vielleicht kommst du doch schneller und billiger zum Ziel, wenn du die fertigen Bausteine von Siemens verwendest. Bevor du hier einige Stunden in den Sand setzt, und das ganze dann doch nichts wird.

Mfg
uncle_tom
 
Hallo Uncle Tom,
danke für die Hinweise.

Zu 1.: Das war einer der letzten Versuche in der Nacht, es stand vorher auf Send/Receive und wird es wieder werden.

Zu 2.: Die Modbus-Requests sind gesperrt, eben weil die SPS als Server arbeiten soll.

Zu 3.: Das könnte das Problem gewesen sein. Muss ich noch einmal prüfen, aber das kann ich erst ab Dienstag wieder. Die Anlage wurde heute in die Schweiz geschickt und ich werde am Dienstag folgen.

Wie immer war das Zeitfenster mehr als eng, es wurden Verfahren verkauft, die noch nicht entwickelt waren, es gab Probleme mit diversen Kaufteilen, so dass ich insgesamt zu spät die Modbus-Thematik beginnen konnte. Die Spezifikationen habe ich schon gelesen, werde das aber noch einmal konkret auf den Server-Betrieb wiederholen.

Die Daten der Auftragsverwaltung sind konstant. Bei Auftragsbeginn sind es 48 Byte die ich bekomme, nach Abarbeitung des Auftrags gehen 64 Byte zurück. Von daher ist das Datenaustauschvolumen relativ gering und findet nur am Anfang bzw. Ende statt. Mehrere Aufträge müssen nicht verwaltet werden.

Dann werde ich mich mal auf die Suche begeben, wie eine Zuordnung zu den Registern zu programmieren ist. Falls es hierzu noch ein paar Tipps gibt, nehme ich diese gerne an ;).

Werde am Montag noch einmal mit VIPA telefonieren, grundsätzlich schien der CP aber schon zu funktionieren. Die onboard-Schnittstelle habe ich herausgenommen, da der Betrieb mit beiden immer mal wieder Probleme machte, aber ansonsten hoffe ich, das der Betrieb an der VIPA möglich ist.

Gruß Patrick
 
Zuviel Werbung?
-> Hier kostenlos registrieren
VIPA CPU und SIEMENS CP

Hallo zusammen,

mein heutiges Telefonat mit dem VIPA Service hat ergeben, das seit Freitag (27.11.2009) ein Firmware Update für die VIPA315-2AG12 existiert, mit dem die erforderliche Funktionalität für die SIEMENS CP`s gegeben sein soll.

Habe das Update jetzt im Gepäck und werde morgen beim Kunden in der Schweiz die Aktualisierung vornehmen.

Gruß Patrick
 
Hier, die AWL-Quelle für einem Modbus/TCP Server, also einen Modbus-Slave. Getestet mit 31X und CP343-1 LEAN. Du brauchst nur eine passive unspezifizierte TCP-Verbindung (Port 502) in NetPro anlegen, versorgst den Baustein mit den Verbindungsparametern und fertig. Um die Kommunikation zu testen eignet sich MODSCAN 32 ganz gut, das Simuliert einen Modbus/TCP Client.

Hab grad gesehen das in dem Baustein noch Z1-Z8 verwendet werden, hab damit beim testen die Anzahl der Funktionsaufrufe getestet...wenn die Stören schmeiss sie raus. Werden nicht benötigt.
 

Anhänge

  • modbus.txt
    19 KB · Aufrufe: 1.214
Zuletzt bearbeitet:
Hallo zusammen,

nachdem ich in der Schweiz leider nur sehr eingeschränkte Möglichkeiten hatte das Internet zu nutzen, möchte ich jetzt die Gelegenheit nutzen um mitzuteilen, dass die Modbus TCP Anbindung mit dem Baustein von Lars Weiß nach dem Update der VIPA CPU auf Anhieb funktioniert hat.

Hoffe ich kann mich irgendwann einmal mit einem nützlichen Beitrag revangieren.

Gruß Patrick
 
Zurück
Oben