TIA Anbindung einer Variable (nach Migration)

S.Schleich

Level-2
Beiträge
90
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, guten Morgen liebe Gemeinde. Ich hätte folgende Frage an euch.

Ich habe ein Step7 Projekt auf TIA V18 migriert. Dort habe ich nun in einem FC den Fall, dass ein Bausteinaufruf aktualisiert werden muss, der nach einem Aufschlagen eines DB´s erfolgt. TIA sagt mir, dass dann die Anbindung einen Fehler hat.
Da ein DB aufgeschlagen wurde, steht als Verschaltung nur "DBW4" an dem Eingang(macht auch absolut Sinn)
Muss jetzt in TIA anstatt "DBW" -> "DB57.DBW4" eingetragen werden ? -> Das zumindest akzeptiert TIA und die Funktion sollte meiner Meinung nach weiterhin so funktionieren.

Oder ist es weiterhin möglich, durch das Aufschlagen eines DB´s die Adresse ohne den DB dran zu schreiben?

Vielen Dank im voraus.
 

Anhänge

  • Vorher.png
    Vorher.png
    29 KB · Aufrufe: 31
Wenn deine CPU eine S7-300/400 ist und bleibt, dann sind teilspezifizierte Adressen %DBW auch in TIA möglich.
Wenn du aber auf eine S7-1500 CPU wechselst, da ist das nicht zulässig.
Macht eh oft nicht viel Sinn, uralte Bausteine in die S7-1500-Welt mitzunehmen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn deine CPU eine S7-300/400 ist und bleibt, dann sind teilspezifizierte Adressen %DBW auch in TIA möglich.
Wenn du aber auf eine S7-1500 CPU wechselst, da ist das nicht zulässig.
Macht eh oft nicht viel Sinn, uralte Bausteine in die S7-1500-Welt mitzunehmen.
ja, die Info habe ich vergessen, die CPU wird eine 1515-2 PN -> Das besondere bei dem Baustein:
Der ist ursprünglich in SCL geschrieben worden, aber die SCL-Quelle ist nicht mehr da, dadurch wurde der automatisch in AWL übersetzt... Der ist jetzt leider für mich unlesbar.

Was wäre denn eine mögliche (am besten einfache, aufgrund von Qualifizierungen) Variante, dies zu umgehen?
Die Adressen direkt abfragen? Also das mit dem Adressregister weg zu nehmen und direkt auf die einzelnen Bytes zugreifen?
 
Warum wird nur eine teilqualifizierte DB-Adresse (ohne DB-Nummer) übergeben? Stammt der Code womöglich ursprünglich aus dem letzten Jahrhundert aus einer S5?
Wird der Code womöglich mehrfach aufgerufen und jedesmal ist ein anderer DB geöffnet? Dann bringt es natürlich nichts, da einfach eine vollqualifizierte DB-Adresse (mit DB-Nummer) hinzuschreiben. Da sollte man zumindest den aufrufenden Baustein neu schreiben und sich eine symbolische indirekte Adressierung einfallen lassen.

Wenn (wie immer) keine Zeit ist, eine neue saubere Software zu entwickeln, dann kann man sich "auf die Schnelle" quick'n'dirty so behelfen, dass man die %DBW vor und/oder nach (*) dem Bausteinaufruf auf (z.B. temporäre) Variablen umkopiert, und am Bausteinaufruf die temporären Variablen verschaltet.
(*) kommt drauf an, ob die Übergabeparameter INPUT, OUTPUT oder INOUT sind
 
Warum wird nur eine teilqualifizierte DB-Adresse (ohne DB-Nummer) übergeben? Stammt der Code womöglich ursprünglich aus dem letzten Jahrhundert aus einer S5?
Wird der Code womöglich mehrfach aufgerufen und jedesmal ist ein anderer DB geöffnet? Dann bringt es natürlich nichts, da einfach eine vollqualifizierte DB-Adresse (mit DB-Nummer) hinzuschreiben. Da sollte man zumindest den aufrufenden Baustein neu schreiben und sich eine symbolische indirekte Adressierung einfallen lassen.

Wenn (wie immer) keine Zeit ist, eine neue saubere Software zu entwickeln, dann kann man sich "auf die Schnelle" quick'n'dirty so behelfen, dass man die %DBW vor und/oder nach dem Bausteinaufruf auf (z.B. temporäre) Variablen umkopiert, und am Bausteinaufruf die temporären Variablen verschaltet.

okay, ja gute Ideen.

Also die Aufrufe sind alle in einem Baustein realisiert, in dem einmalig der DB aufgeschlagen wird.
Zumindest hat mir TIA nur diesen einen als Meldung hergegeben...

S5 ist es glaube nicht, aber die Bausteine wurden 1996 programmiert ^^ :D

PS: mit allen Analgen, mit denen ich bis jetzt zu tun hatte, war das aber immer das gleiche Schema. AUF DBXY und dann einfach nur noch DBWXY angesprochen...
 
Zurück
Oben