1214C + CM1242-5 an eine Eaton PS416+PS416Net 440 mittels Profibus

sps31

Well-known member
Beiträge
105
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen, nach langer Zeit benötige ich nochmal eure Hilfe.

Ich habe eine Anlage, welche in eine bestehende Anlage mit Profibus-DP als Slave eingebunden werden soll.
Mein Setting:
1214C + CM1242-5
TIA v15

Master Setting:
PS416+PS416Net 440

Kommunikation muss defintiv über Profibus stattfinden.

Der Programmierer der Masteranlage hat mir folgende Aufgabenstellung gegeben:

Es wird im 2Hz Takt Kommuniziert.
Es gehen immer ein Array of Word [0...62] von meiner Anlage zum Master.
und anschließend ein Array of Word [0...62] vom Master zurück zu meiner Anlage.
Genutzt werden davon grundsätzlich erstmal nicht viele Wörter eher so 5 bis 10.

Nun muss ich leider zugeben dass nicht genau weiß wie ich es projektieren soll.
In der Netzansicht habe ich es aktuell wie folgt angelegt.
1639404313278.png
schaut man sich den Profibus an, habe ich zwei Transferbereiche angelegt und auf die passende Länge gepackt.
siehe Bild.

1639404376572.png

die entsprechenden Variablen habe ich dann passend dazu angelegt, also z.B. I5 "Wert X als Wort versenden".

Ich habe leider keine Möglichkeit das hier vor Ort zu testen.
Kann mir jemand weiterhelfen, welche Schritte notwendig sind um das ganze zum Laufen zu bekommen ?


Danke und LG
sps31
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
19.526
Punkte Reaktionen
5.880
Bei Profibus DP muß der Transferbereich des DP-Slave immer in der mit dem DP-Master vereinbarten Größe projektiert werden (bei Dir anscheinend je 63 Worte), auch wenn (noch) nicht alle Worte genutzt werden. Der DP-Master nimmt die zyklische Kommunikation mit dem DP-Slave nur dann auf, wenn die E- und A-Bereiche jeweils spiegelbildlich gleich groß projektiert sind. Weil eine Änderung der Projektierung (Gerätekonfig) bei der S7-1200 nur im STOP der CPU geladen werden kann, sollte gleich in der geplanten maximalen Größe projektiert werden, dann muß später keine geänderte Konfig mit CPU-STOP geladen werden. (Außerdem wird der Profibus dann nicht langsamer als von Anfang an.)

Den nicht vorhandenen DP-Master simulieren kannst Du, indem Du ein zweites Array of Word [0..62] anlegst (z.B. in einem DB) (oder irgendeine Struktur die 126 Byte lang ist) und am Anfang des OB1 dieses Array/Struktur in den Eingangs-Transferbereich kopierst. Dann kannst Du z.B. mit einer Beobachtungstabelle oder einem HMI die Worte/Variablen im DB beschreiben und die Werte landen im Eingangs-Transferbereich.

Hinweis: Projektiere die Transferbereiche wann immer möglich beginnend mit einer geraden Adresse (nicht I5 sondern I4 oder I6), besonders wenn dann im Programm auch wortweise auf den Transferbereich zugegriffen wird. Deinen Kollegen zuliebe... Das ist so üblich und vermindert versehentliche Adressüberschneidungen.

Harald
 

Ludewig

Well-known member
Beiträge
663
Punkte Reaktionen
93
Zuviel Werbung?
->Hier kostenlos registrieren
Ich habe zuletzt eine unserer älteren Moeller-341 mit einer S7-300 verprofibust. Ich musste Wörter und Real-Zahlen byteweise swappen. Bereite Dich also darauf vor, dass Du deine Wörter ggfs. schnell swappen kannst, falls das nötig wird.
 
OP
S

sps31

Well-known member
Beiträge
105
Punkte Reaktionen
3
Danke schonmal für eure Hilfe.

Das war sehr hilfreich für mich. Falls noch etwas auffällt würde ich mich nochmal zurückmelden.
 
OP
S

sps31

Well-known member
Beiträge
105
Punkte Reaktionen
3
Okay eine Frage habe ich noch.
Ich möchte HMI Werte meiner SPS editierbar machen von der Gegenstelle.

der Wert der vom HMI bearbeitet wird ist ein einem Baustein, nennen wir ihn mal Wert1
Nun habe ich als Baustein.Wert1 und das ist ein Timeformat, im HMI kann man dort z.B. 20ms einstellen.

Nun muss dieser Wert ja über ein Wort editierbar sein.
Ist es möglich dass ich einen Baustein schreibe und es dann dort so mache, dass z.B. über Wort1 der Wert 20 kommt, ich diesen in eine Zwischenvariable im INT Format abspeichere und anschließend mithilfe der Funktion INT_TO_TIME bzw. im umgekehrten Fall TIME_TO_INT diese in einen Timewert umwandel um dann diesen Timewert der Variable Baustein1.Wert1 zuzuweisen ?

Ich hoffe das war verständlich wie ich es formuliert habe.
Danke und LG
 
Oben