Step 7 Laden von Bausteinen in laufende SPS

d-fan02

Level-1
Beiträge
35
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Community,

die goldene Regel lautet ja, erst DB's und dann FB's, FC's in die SPS laden. Wie verhält es sich mit InstanzDB's von FB's? Müssen diese ebenfalls vorher geladen werden? Ich möchte mich einfach nochmal absichern, da die Anlage 24h laufen muss. Es wäre toll, wenn jemand eine grundlegende Vorgehensweise aufzeigen kann, wie man neue Bausteine in eine laufende SPS problemlos lädt.


Ich möchte mich bei euch bedanken.
 
DB's immer zuerst laden. Egal ob Standard- oder Instanz-DB's!

Die direkte Struktur und die Daten-Definition ist im Ablauf der SPS relativ egal. Der schreibt auch auf DBX.DBDy deklariert als DINT einen REAL-Wert und meckert nicht.
Nur wenn die Länge des DB's nicht passt, dann gibt es Probleme. Dazu kann man aber den OB85 laden, welcher einen CPU-Stopp verhindert, jedoch wenn die Daten ausgewertet werden sollen, der Ablauf nicht korrekt ablaufen kann!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo d-fan02,

wenn der FB und der dazugehörige Inst.-DB neu angelegt sind, erst DB dann FB und dann der Baustein mit dem Aufruf des FB.

Wenn der FB (Schnittstelle) verändert wird,

- wenn der Inst.-DB größer (erweitert) wird, dann erst DB und dann FB
- wenn der Inst.-DB kleiner wird, dann erst FB und dann DB

Gruß
Rainer
 
Nunja wenn die Anlage auf keinen fall gestoppt werden kann. Ist das mit den IDB ja nicht so pauschal zu beantworten, die haben ja oft auch Werte drin (Timer, Kommunikation, Zähler, Stati) Diese Werte werden beim runterladen initialisiert, das kann also durchaus einen Timer zum neustart und eine Kommunikation zum stehen bringen.

mfG René
 
Hallo,

wie Rainer0210 sagt. DB immer zuerst laden muss nicht immer richtig sein. Der aktuellere DB im Projekt kann ja auch kleiner sein als
der gerade geladene. Aus diesem Grund sollte man immer den einzelnen Fall betrachten.

Mit Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich habe Zeit meines Lebens einen FB und den Instanz-DB immer gleichzeitig geladen, vor allem bei Schnittstellenänderungen im FB.
Ich glaube auch, dass alles andere (zuerst FB dann DB, zuerst DB dann FB) Quatsch ist wenn sich die Schnittstelle ändert.

Ob dann eine Funktion beeinträchtigt wird? Das sehe ich wie Vollmi, das hängt davon ab was das Teil macht, die SPS selbst sollte aber nicht auf Stop gehen.
 
Hallo borroeus,

also egal ist das bei Step7 auf jeden Fall nicht. Wenn im einen FB z.B. eine Abfrage auf eine neue Adresse im InstanzDB hinzukommt ( z.B. DB10.DBW50 )
und der alte InstanzDB auf der Steuerung nur 48W lang ist, dann geht die Steuerung in Stop, wenn der FB zuerst übertragen wird, da der Zugriff auf das W50
ja nicht möglich ist ( außer der OB121 Programmierfehler ist geladen ). Aus diesem Grund kommt ja immer mal wieder beim einzelnen laden in Step7 V5.5 die
Meldung dass die Reihenfolge der Bausteine beim laden zu beachten ist ( wenn man einzelne Bausteine markiert und laden will )

Mit Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo borroeus,

also egal ist das bei Step7 auf jeden Fall nicht. Wenn im einen FB z.B. eine Abfrage auf eine neue Adresse im InstanzDB hinzukommt ( z.B. DB10.DBW50 )
und der alte InstanzDB auf der Steuerung nur 48W lang ist, dann geht die Steuerung in Stop, wenn der FB zuerst übertragen wird, da der Zugriff auf das W50
ja nicht möglich ist ( außer der OB121 Programmierfehler ist geladen ). Aus diesem Grund kommt ja immer mal wieder beim einzelnen laden in Step7 V5.5 die
Meldung dass die Reihenfolge der Bausteine beim laden zu beachten ist ( wenn man einzelne Bausteine markiert und laden will )

Mit Grüßen
Ja, darum sage ich ja, dass man sie gleichzeitig laden muss.... einfach beide Bausteine im Simaticmanager markieren und laden.
 
Borromeus, wenn man zwei Bausteine markiert ( z.B. einen FB und einen DB ) und lädt, stehen nicht unbedingt beide beim neuen Zyklusbeginn zur Verfügung. Deshalb kommt ja auch die Warnung "Bitte Reihenfolge beachten".

Doch, die Bausteine die du gemeinsam überträgst werden auch gemeinsam in das laufende SPS-Programm eingekettet. Ich hatte das hier im Forum schonmal beschrieben, finde den Thread aber nicht wieder.

Die Anzahl der gemeinsam einkettbaren Bausteine ist jedoch begrenzt, und abhängig von der eingesetzten CPU. Eine IM151-8 CPU erlaubt 16, eine 416 erlaubt hingegen 56 Bausteine gemeinsam einzuketten.
Die Daten lassen sich über eine SZL aus der SPS abfragen. Genau das macht Step7 wenn du Bausteine übertragen willst.
Nur wenn du mehr Bausteine gemeinsam übertragen willst als die CPU in ihren SZL Daten zurückmeldet, bekommst du die Warnung "Bitte Reihenfolge beachten".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas V2.1

danke für deinen Beitrag. Ich habe mich auch schon immer gefragt, warum die Warnung nicht immer kommt
beim übertragen. Das erklärt dieses Verhalten ja plausibel.

Danke und schönen Abend
 
Du kannst auch mal beim Übertragen von Bausteinen in die SPS Wireshark mitlaufen lassen, das zeigt dir genau an was da im Hintergrund abläuft. Auch die SZL-Informationen die abgefragt werden.
 
Ich habe Wireshark auf meinem PG installiert. Nutzt du noch Plugins für die S7 bzw. kannst du welche empfehlen?

Wenn du eine der aktuellsten Wireshark Versionen verwendest, dann ist das S7 Protokoll schon drin. Früher hatte ich das in einer dll, aber so vor ca. einem Jahr habe ich das in die offizielle Version eingepflegt. Das ist aber keine offizielle Protokolldekodierung von Siemens, sondern von mir geschrieben.
Für das Protokoll der 1200/1500 brauchst du noch eine externe dll wenns dich interessiert, aber das ist noch der Entwicklung.
 
Grundsätzlich bin ich interessiert. Allerdings drücke ich mich gerade noch um die 1500ér rum, da ich
diese noch nicht einsetzen möchte. Ich habe zwar eine auf dem Tisch liegen aber meißtens setze ich
eine 315 PN/DP ein. Ich werde mir einmal die aktuelle Version runterladen und mit das ganze
mit einer 300ér anschauen.


Hut ab und Daumen hoch für deine Entwicklungsarbeit

Over and out
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn du die maschine anhalten kannst, quasi "pause", sodass die maschine "nichts" macht, dann:
- im ob1, ggf. zeit-obs mit BEA abklemmen.
- neue bst rein
- bea wieder raus.
 
Moin und Danke für die vielen Herangehensweisen. Ich werde wohl besser einen Tag abwarten, wo ein Stopp der Anlage möglich ist. Den OB1 abzuklemmen mit BEA ist auch ne tolle Idee. Könnte man ja schon im 1. Netzwerk tun, quasi wie Urlöschen.
Für weitere Tipps könnt ihr natürlich gern weiter diskutieren.

Vielen Dank
 
Den OB1 abzuklemmen mit BEA ist auch ne tolle Idee. Könnte man ja schon im 1. Netzwerk tun, quasi wie Urlöschen.
Nee, nicht wie urlöschen. Der vorhandene/auszutauschende Code soll nur nicht mehr ausgeführt werden. Programmteile, welche gar nicht ausgeführt werden, dürfen ruhig so lange inkonsistent sein. Das kann man für das gesamte Programm machen, indem man gleich am Anfang der OB ein "BE" einfügt, oder auch nur einzelne Bausteine nicht mehr aufruft. (Ausgänge, die abhängig von dem nicht mehr ausgeführten Code geschaltet werden, bleiben dann solange wie sie gerade stehen!) Wie schon geschrieben wurde, muß man sich bei jeder Programmänderung im laufenden Betrieb vorher Gedanken machen, wie man am besten vorgeht - einen immer richtigen Automatismus gibt es nicht.

Harald
 
Zurück
Oben