Step 7 Fragen zum Modbuspaket für die S7 315-2 PN/DP

1513

Level-1
Beiträge
13
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe hier eine S7 315-2 PN/DP, die über Modbus und der eingebauten PN-Schnittstelle Daten mit einem nicht-Siemens-Gerät austauschen soll. Die S7 soll Master/Client sein. Ich habe das Projekt bereits erfolgreich auf der S7-1212C mit mb_client realisiert und soll es nun auch auf der 300er unter STEP 7 zum Laufen bringen.

Bei der 1200er verwende ich vier Verbindungen im Multiplexbetrieb; eine Verbindung kümmert sich um drei Datenbereiche, die anderen drei Verbindungen um jeweils zwei. Es werden Daten gelesen und geschrieben. Die Verbindungen werden nicht getrennt. Das Multiplexen erreiche ich dadurch, dass der Eingang REQ der insgesamt neun mb_clients nur im jeweils ersten, zweiten oder dritten Zyklendurchlauf auf true gesetzt wird. Nach jedem Zyklendurchlauf wird die Variable mit der aktuellen Zyklennummer (1 -> 2 -> 3 -> 1) neu gesetzt. Dadurch kommt es nicht zu Kollisionen zwischen den Bausteinen. Das Interface von mb_client ist wirklich schön, weil einfach: Verbindungsnummer, IP-Adresse, Port, Adresse, Länge und DB-Referenz. Das habe ich mir auch so für die 300er gewünscht.


Für die 300er hat Siemens ein separates Modbuspaket (https://support.industry.siemens.co...alte-ich-weitere-informationen?dti=0&lc=de-WW). Da blicke ich aber nicht so ganz durch. Entweder stelle ich mich doof an oder ich finde die Informationen nicht, die ich suche.

Soweit ich verstanden habe, braucht jede Modbus-Verbindung einen eigenen FB-Aufruf mit jeweils eigenem IDB. Also vier FBs in OB1, dazu vier IDBs. Jetzt sollen auch im OB100 die FBs aufgerufen werden (finde ich irgendwie sinnlos). Soll ich die selben IDBs nehmen oder vier neue? Soll ich dann einfach die FB-Aufrufe 1:1 aus OB1 in den OB100 kopieren? Ich denke nicht, denn im Beispielprojekt werden im OB100 nur ID und DB_PARAM sowie paar Statusbits aus CONTROL_DAT als Eingangsparameter übergeben. Im OB1 werden fast alle Eingangsparameter aus CONTROL_DAT versorgt, außer ID und DB_PARAM (das sollen Initvariablen sein).

Oder brauche ich den Umweg über CONTROL_DAT nicht und soll/kann einfach direkt Werte angeben, so wie ich es bei der 1200er gemacht habe? Muss TI für jeden FB/Verbindung einzigartig sein?

Welchen Sinn hat es, mit dem Modbus TCP Wizard verschiedene Datenbereiche pro Verbindung angeben zu können, wenn man trotzdem bei jedem FB-Aufruf manuell Datentyp, Adresse und Länge angeben muss? Warum kann man nicht am FB auch den DB angeben, wie bei der 1200er? Warum kann ich nicht für jeden Datenbereich pro Verbindung auswählen, ob gelesen/geschrieben werden soll? Das macht die Sache doch nur unnötig kompliziert. Ich hatte mir gedacht, dass ich mit dem Wizard einfach die Datenbereiche pro Verbindung angebe, die ich brauche, und dass der FB dann automatisch diese Datenbereiche liest oder schreibt. Man kann im Wizard aber nicht angeben, ob man lesen oder schreiben möchte; das muss man wieder über WRITE_READ am FB machen... Wo ist die "Verbindung" zwischen den MODBUSPN-Aufrufen und den in MODBUS_PARAM liegenden, vom Wizard erstellten Angaben?

Warum wird ENQ_ENR (request telegramm) erst nach FB-Aufruf auf true gesetzt? Sollte das nicht vorher geschehen, damit der FB mit ENQ_ENR == true aufgerufen wird?



Vielleicht betrachte ich das ja alles aus einem falschen Blickwinkel. Aber es scheint momentan komplizierter auszusehen, als es sein möge.


1513
 
Zuletzt bearbeitet:
Meine persönliche Meinung. Das Modbuspaket von Siemens ist eine Frechheit, nur schon was die Kosten angeht (immerhin muss man die pro CPU lizenzieren was es auch umständlich macht wenn man die CPU mal tauschen muss).
Ich denke das ist ein Fremdfabrikat also nicht von Siemens selbst programmiert (was nicht unbedingt schlecht sein muss).

Lars Weiss hat da z.B. ein paar echte Perlen online gestellt um sich etwas mit Modbus zu beschäftigen.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine persönliche Meinung. Das Modbuspaket von Siemens ist eine Frechheit, nur schon was die Kosten angeht (immerhin muss man die pro CPU lizenzieren was es auch umständlich macht wenn man die CPU mal tauschen muss).
Ich denke das ist ein Fremdfabrikat also nicht von Siemens selbst programmiert (was nicht unbedingt schlecht sein muss).

Lars Weiss hat da z.B. ein paar echte Perlen online gestellt um sich etwas mit Modbus zu beschäftigen.

mfG René

Ich weiß, es muss aber doch irgendwie gehen. Die Bausteine von Lars Weiß möchte ich jetzt auch ungern in einer Firma einsetzen.
 
Ich weiß, es muss aber doch irgendwie gehen. Die Bausteine von Lars Weiß möchte ich jetzt auch ungern in einer Firma einsetzen.

Das klingt jetzt aber so als ob du nur etwas zum zusammenklicken suchst über das du dir keine Gedanken machen musst.
Die Bausteine von Lars Weiß sind soweit mir bekannt nicht geschützt, also kannst du die ohne weiteres verwenden und wenn etwas nicht gehen sollte, nimmst du dir den Code und beseitigst den Fehler einfach, dafür bist du doch wohl Programmierer(?), das ist doch alles kein Hexenwerk!
Bei den Siemens Baustein funktioniert auch nicht immer alles auf anhieb und was noch viel schlimmer ist, die Bausteine sind häufig Geschützt, Verschlüsselt oder total unleserlich, das bringt dich auch nicht weiter.
 
Zurück
Oben