Step 7 Erweiterungen im IDB

mikeh

Level-1
Beiträge
20
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein freundliches "Hallo" an alle S7-Fan´s!

Ich habe bei folgendem Sachverhalt ganz schön Bauchschmerzen und würde mich über einen guten Rat freuen.

In einem Projekt stehen Erweiterungen an. Dazu muss ich zusätzliche STAT-Variablen in einem FB anlegen (FB143). Dieser FB143 wird aber als Multiinstanz im FB13 aufgerufen. Da auch noch weitere Multiinstanzen im FB13 verwendet werden verschieben sich, durch die Erweiterung des FB143, deren Adressbereiche im Instanz-DB.

Nun meine Fragen:
Ist das ein Problem? (soweit ich sehe erfolgt der Zugriff nur symbolisch)
Was kann ich sonst noch tun? (erweitern muss ich aber auf alle Fälle)

Vielen Dank im Vorraus!
 
Insofern hast du schon recht.
Das verschieben der Instanzdatenbereiche, sofern nicht irgendwo ohne Symbol oder "Von hinten durch die Brust ins Auge" darauf zugegriffen wird, sollte kein Problem sein.

Beim neu-generieren/einspielen des IDB's werden dessen Daten (auch die anderen Instanzen) aber zurückgesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort. Deine Antwort beruhigt mich. Ich werde nochmal genau nach Absolutzugriffen suchen, hat der Programmierer aber eigentlich nicht gemacht.

Die Aktualwerte "rette" ich mit einem BLK-Move in einen neuen Global-DB und dann wieder zurück.

Nochmals vielen Dank.
 
Deine Bauchschmerzen sind berechtigt, aber allemal besser als gedankenlose Schnellschüsse.

Deine Programmänderung darf eigentlich nur im Stop der CPU eingespielt werden bzw. der Mutter-FB (FB13 ?) darf während dem Programm-Laden nicht aufgerufen werden und es darf nicht auf den IDB zugegriffen werden. (Es sei denn, Du kannst garantieren, daß sämtliche Änderungen im selben Zykluskontrollpunkt umgeschaltet werden).
Kann Deine CPU gestoppt werden? Wie verhält sich das Programm bei Warmstart?

Falls Du die Programmänderung in RUN einspielen mußt, dann müsstest Du vor dem Laden den Aufruf des Mutter-FB deaktivieren oder wenn das nicht möglich ist, temporär mit zweit-FB und zweit-IDB arbeiten, und natürlich das stoßfreie Übernehmen der Aktualdaten auch noch realisieren. Vorsichtshalber sollte ein OB121 in der CPU vorhanden sein.

Arbeiten mit zweit-FB und -IDB:
- zunächst den originalen Mutter-FB und den IDB kopieren zu bisher nicht benutzten Nummern, z.B. FB13 + DB13 --> FB113 + DB113
- die beiden neuen Bausteine in die CPU laden
- im aufrufenden Baustein den Aufruf ändern von CALL FB13, DB13 --> CALL FB113, DB113 und einspielen
- im originalen FB13 die nötigen Änderungen vornehmen und einen neuen IDB DB13 generieren
- die geänderten FB13 und DB13 in die CPU laden
- im aufrufenden Baustein den Aufruf zurückändern zu CALL FB13, DB13 und einspielen
- in der CPU die zweit-Bausteine FB113 + DB113 löschen
Sollten im IDB als Multiinstanz enthaltene FB ihre Instanzdaten ändern, so müssen auch diese FB temporär auf zweit-FB umgelegt werden.
Wenn andere Bausteine oder externe Geräte direkt in den IDB zugreifen, dann wird es ganz knifflig und das Vorgehen muß sehr spezifisch geplant werden.

Ich werde nochmal genau nach Absolutzugriffen suchen, hat der Programmierer aber eigentlich nicht gemacht.

Die Aktualwerte "rette" ich mit einem BLK-Move in einen neuen Global-DB und dann wieder zurück.
Zurückkopieren geht dann aber nicht mehr mit nur einem BLKMOV, weil Deine Änderungen Variablen zwischen die vorhandenen Variablen einschieben.

Tip zum Suchen nach Zugriffen: suche im Programmtext (Bearbeiten > Suchen/Ersetzen) nach "P##", weil "Gehe Zu" aus unerfindlichen Gründen die besonders heiklen Zugriffe wie "L P##Varname" nicht anspringt. Suche ebenfalls nach "P#" und "AR1" und "AR2" und eckigen Klammern "["

Gibt es ein HMI oder eine Visu oder etwas anderes was von außen auf die CPU zugreift? Dies wird wohl auf absolute Adressen zugreifen - also vorher abklären/prüfen, ob das auf Adressen in dem IDB zugreift.

Harald
 
Danke Harald,

dein Tipp mit dem Zweit-Bausteinen war toll. So werde ich es wohl machen. Die CPU zu stoppen ist kein Problem, da die Maschine wärend der Umbauphase sowieso einige Zeit steht. Ich möchte nur bis zu Umbau soviel wie möglich erledigt haben und dafür ist deine Zweit-Baustein-Variante bestens geeignet. Damit kann ich offline alles fertig machen ohne in die laufende Programmstruktur einzugreifen. Zudem bleibt auch das Projekt aktuell, bis auf die Kopien die sind aber eh nur offline vorhanden. :D

Mit dem BLKMOV hast du natürlich Recht, da muss ich die Datenbereiche in vor und nach der Erweiterung / Verschiebung splitten.;)

Die Visu greift nicht in IDB´s, sie hat eigene Global-DB´s.

Jetzt nochmal zu deiner erwähnter Pointersuche. Solche Zeigerzugriffe gibt es im Programm, Der "Varname" ist aber symbolisch und somit müsste er, nach meinem Verständnis, auch nach der Verschiebung wieder korrekt auffindbar sein.:confused:

Gruß Mike
 
Zurück
Oben