# TIA: DBs statt Merker



## michi* (26 Oktober 2016)

Hallo,
an sich ein alter Hut und es gibt viele Themen schon dazu.
Jedoch wollte ich euch mal fragen wie Ihr das handhabt.

Ich würde gerne auch die Merker aus meinem SPS Programm verschwinden lassen und stattdessen mit einer DB arbeiten. 


Meine Frage ist: Wie teilt ihr das auf?
 Macht Ihr für jeden Teilbereich einen neuen Datenbaustein und tragt dort dann die jeweiligen "Merker" ein oder
benutzt ihr meist einen DB  und benutzt den für alle Merker aufgaben.?


----------



## rostiger Nagel (27 Oktober 2016)

Nach es in Teilbereiche, so kannst du
deine Programme Modular gestalten.


----------



## ducati (27 Oktober 2016)

Gibt ja noch ne 3. Variante. Die Programme als FB schreiben und die Merkeraufgaben im IDB also als Stat. Variablen ablegen...


----------



## rostiger Nagel (27 Oktober 2016)

ducati schrieb:


> Gibt ja noch ne 3. Variante. Die Programme als FB schreiben und die Merkeraufgaben im IDB also als Stat. Variablen ablegen...



Dann aber auch versuchen, diese nur Lokal anzuwenden.


----------



## de vliegende hollander (27 Oktober 2016)

Wenn du Systemmerker verwenden willst kannst du nicht drauf verzichten.
(Clockbyte und Always true. und so weiter).

Ich würde gerne auch komplett auf Merker verzichten aber mach es nicht.
In ein begrenzte Zahl benutze ich die doch.
Unser Anlagen sind mit das KKS System programmiert.
Und dann ist nur die KKS-Beschriftung am Merker (ohne vorbeschriftung vom DB) natürlich toll.

Bram


----------



## ducati (27 Oktober 2016)

rostiger Nagel schrieb:


> Dann aber auch versuchen, diese nur Lokal anzuwenden.



Ich weiss, dass die Globale Verwendung von IDB-Variablen eher pfui ist, bzw. als schlechter Programmierstil angesehen wird. Sicherlich gibt es für diese Meinung auch Gründe. Aber es gibt auch Gründe die für eine globale Verwendung sprechen, wenn das Gesamtkonzept/Programmierstil darauf abgestimmt ist.

Kommt halt immer auf den konkreten Anwendungsfall an.

Für FBs in denen die Steuerungslogik für die Anlage programmiert wird, und dieser FB NIE mehrmals verwendet wird, und dieser FB so viele IN, OUTs benötigen würde, um alle benötigten Daten per Schnittstelle an wen auch immer zu übergeben, und dieser FB nicht multiinstanzfähig, beliebig verwendet wird, und die Struktur des IDB ordentlich definiert wurde/ist/bleibt... Dann greife ich auch global auf die IDB Variablen zu.

Bei einem mehrfach verwendbaren universellen Motorbaustein z.B. sollte man sowas natürlich vermeiden, wobei da aber selbst der Zugriff vom HMI auf die IDB-Variablen oft gemacht wird.

Gruß.


----------



## rostiger Nagel (27 Oktober 2016)

Ich habe es früher auch so gemacht, versuche es mir gerade ab zu gewöhnen.

Mann schafft sich mit dieser Art der strickten Trennung natürlich ein DB Grab.


----------



## ducati (27 Oktober 2016)

de vliegende hollander schrieb:


> Und dann ist nur die KKS-Beschriftung am Merker (ohne vorbeschriftung vom DB) natürlich toll.



Merker haben natürlich auch Vorteile gegenüber DBs... Wenn ich alleine an die Reinitialisierungswut von TIA denke, hatten wir kurzzeitig überlegt, unter TIA wieder komplett von DBs auf Merker zurückzugehen... Haben uns aber dann für die Ausprogrammierung von DB-Rettungsverfahren entschieden...

Gruß.


----------



## ducati (27 Oktober 2016)

rostiger Nagel schrieb:


> Ich habe es früher auch so gemacht, versuche es mir gerade ab zu gewöhnen.
> 
> Mann schafft sich mit dieser Art der strickten Trennung natürlich ein DB Grab.



Der Vorteil bei uns: Die Steuerlogik, Freigaben,verriegelungen, Aufruf Motorbaustein, was auch immer für einen Motor werden bei uns in einem Netzwerk eines FB programmiert. Pro Netzwerk gibt es weiterhin ein Struct in den Stat Variablen dieses FB. Dort liegt dann alles was so benötigt wird. Im nächsten Netzwerk wird dann der nächste Motor behandelt usw. Dadruch liegen immer alle zugehörigen Variablen in diesem IDB und nicht sonstwo in nem Merkerbereich, GlobalDB etc.

Wenn ich jetzt von ausserhalb einige von diesen Variablen benötige, z.B. um Meldungen zu generieren, oder am Messwert Meldungen zu sperren, was auch immer... greife ich auf diese IDB-Variablen von ausserhalb des FB zu. Darin sehe ich generell keine Probleme, und da bei uns 100erte Anlagen so gebaut sind und werden, weiss auch jeder Mitarbeiter Bescheid.

Gruß.


----------



## mariob (27 Oktober 2016)

Hi,
was bei mir mindestens gegen IDB Zugriffe spricht ist die Tatsache das diese nicht in der Querverweisliste zumindest in Classic nicht gefunden werden. Einzige Ausnahme ist bei mir der HMI Zugriff da der eh gar nicht gesucht werden kann (bei Fremd HMI).

Gruß
Mario


----------



## ducati (27 Oktober 2016)

mariob schrieb:


> Hi,
> was bei mir mindestens gegen IDB Zugriffe spricht ist die Tatsache das diese nicht in der Querverweisliste zumindest in Classic nicht gefunden werden. Einzige Ausnahme ist bei mir der HMI Zugriff da der eh gar nicht gesucht werden kann (bei Fremd HMI).


Das mit den Querverweisen unter TIA werd ich mal testen. Letzte Woche wollte ich mal nen Querverweis auf nen GlobalDB machen, dabei ist's TIA abgestürzt  Interessante Frage.
Gruß.


----------



## PN/DP (27 Oktober 2016)

Apropos Querverweise: wie bekommt man Querverweise für einen beliebigen Operand?

(also einen Operand, der nicht im angezeigten Programmstück verwendet wird, z.B. ich habe keinen Schimmer und will wissen wo %I0.0 verwendet wird)

Harald


----------



## de vliegende hollander (27 Oktober 2016)

PN/DP schrieb:


> Apropos Querverweise: wie bekommt man Querverweise für einen beliebigen Operand?
> 
> (also einen Operand, der nicht im angezeigten Programmstück verwendet wird, z.B. ich habe keinen Schimmer und will wissen wo %I0.0 verwendet wird)
> 
> Harald



z.b.
Durch auf das Symbol zu klicken im Symboltabelle.
Und dann die querverweise.


----------



## de vliegende hollander (27 Oktober 2016)

ducati schrieb:


> Das mit den Querverweisen unter TIA werd ich mal testen. Letzte Woche wollte ich mal nen Querverweis auf nen GlobalDB machen, dabei ist's TIA abgestürzt  Interessante Frage.
> Gruß.



Im FUP sehts du nur die querverweise vom idb variabe selber.
Im SCl kannst du auch auf das teil der variable klicken "was der DB ist" und dann hast du die querverweis zum idb aufruf


----------



## Paule (28 Oktober 2016)

de vliegende hollander schrieb:


> Ich würde gerne auch komplett auf Merker verzichten ....


Warum denn?

Als die ersten Gerüchte über TIA und die 1500er erschienen hieß es:
Kein AWL und keine Merker mehr.
Beides waren Falschmeldungen.
Merker sind einfach Speicherbereiche und sogar die Remanenz-Zuweisung ist bei der 1500er komfortabler geworden.


----------



## de vliegende hollander (29 Oktober 2016)

Paule schrieb:


> Merker sind einfach Speicherbereiche und sogar die Remanenz-Zuweisung ist bei der 1500er komfortabler geworden.



Ja stimmt.
Ich hab 1 migriertes S7 classic Programm nach nach eine 1516 wo ich sogar die Remanenz der Merker benutzt hab.
Da war vorher ein Rettungs DB projektiert in S7 Classic.

Das verzichten auf Merker hat auch mit der wiederverwendbarkeit zu tun.
Aber das ist jetzt nichts neues vom TIA. War in classic auch so.

Bram


----------



## Credofire (8 November 2016)

Also wir nutzen einen speziellen Merker-DB. Dort sind dann die einzelnen Programmteile als struct hinterlegt. Beispielsweise Maschinenzustand oder Störung als struct und dann darunter die Merker.
So ist es übersichtlich und die Merker sind von überall erreichbar.
Die Reinitialisierung spielt bei unseren Maschinen aber keine Rolle.


----------



## FelixSch (8 November 2016)

Hallo,
warum keine Merker?
Bei Merker muß der Programmierer die Adressen verwalten (Adressüberschneidungen sind möglich), 
bei DBs übernimmt das System die Speicherverwaltung.

Gruß
Felix


----------



## Credofire (8 November 2016)

Von irgendwoher habe ich im Hinterkopf, dass mal gesagt wurde, dass Merker die SPS langsamer machen als wenn man sie aus einem DB nimmt.

Kann aber auch totaler Quatsch sein.
Ich persönlich finde aber die Struktur mit DB besser zum wiederfinden von Merkern.


----------



## Peed (9 Februar 2017)

Also laut Siemens sind "Optimierte Global-DB's" leistungsfähiger, wie gesagt aber nur solange du den DB optimiert lässt.

Ich bin Aktuell an meinem Techniker Abschlussprojekt und werde keine Merker verwenden. Der Aufwand ist zwar etwas größer da es noch keine Struktur in dem Unternehmen diesbezüglich gibt, aber ich denke es wird sich lohnen. 
Obwohl die komplette Abteilung "Merkerfiziert" ist.


----------



## Betriebselektriker28 (12 Februar 2017)

FelixSch schrieb:


> Hallo,
> warum keine Merker?
> Bei Merker muß der Programmierer die Adressen verwalten (Adressüberschneidungen sind möglich),
> bei DBs übernimmt das System die Speicherverwaltung.
> ...



Du kannst die Variable aber auch von TIA zuweisen lassen, dann gibt es auch keine Überschneidungen.

z.b.:

Ich tippe: 

Flanke_X  (Symbol selbstverständlich noch nicht benutzt im Programm)
Das steht dann mal dort und hat eine rote Wellenlinie.

Dann einfach rechtsklick drauf "Variable definieren", TIA schlägt dir dann automatisch die nächste freie Merkeradresse vor.

Finde das eigentlich recht gut gelöst, man muss dann eben sein "persönliches Merkersystem" aufgeben, aber ansonsten recht praktisch.


----------

