TIA Funktionsbausteine öfter verwenden

MatthiasNm

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich arbeite gerade an einem Projekt, bei welchem eine Torsteuerung realisiert werden soll. Verwendet wird das TIA Portal V17 und als CPU eine S7-1500. Es gibt mehrere Tore, welche alle gleich aufgebaut sind. Wenn bestimmte Bedingungen erfüllt sind, dann soll sich ein Tor öffnen bzw schließen. Erstellt hat das Projekt ein Kollege von mir und ich soll daran weiterarbeiten. Für die Ansteuerung wurde ein FB erstellt, jeder FB hat einen Instanz DB. Das Prinzip verstehe ich. Mir ist aufgefallen, dass bei 3 FBs jeweils der gleiche Instanz DB verwendet wird. Ein "anderer" Kollege meinte, ich solle mit Änderungen vorsichtig sein, klar das versteh ich auch. Deswegen wollte ich mal euch Experten fragen. Was kann passieren, wenn man die gleiche Instanz öfter verwendet, das führt doch zu Problemen, oder gibt es Situationen, wo so etwas richtig sein kann?
 
Moin MatthiasNm,

ja, es gibt Situationen, in denen so etwas richtig sein kann. Wenn halt bei jedem Aufruf die gleichen Daten zur Verfügung stehen müssen und nicht für jeden Aufruf separate Daten.
Allerdings fände ich es komisch, wenn es die Rolltore betrifft. Könnte ich mir nur vorstellen, wenn z.B. jedes Tor seine Anzahl an Öffnungen/Schließungen in ein und demselben Zähler aufaddieren möchte. Würde ich zwar anders lösen, aber könnte sein.
Die reine Funktion des Tores könnte ggf. Zähler beinhalten. Allerdings müssten das wohl unterschiedliche Zeiten sein...

Wie auch immer:
- ja, es gibt Situationen, in denen sowas richtig sein kann
- solche Situationen sind eher selten bzw. könnten auch anders gelöst werden
- ob es so sein muss, nicht so sein darf oder egal ist, kann man nur im Code sehen

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau mal nach, ob in dem FB statische Variablen definiert sind.
Wenn es in dem FB keine statischen Variablen gibt, hätte der Kollege auch eine FC benutzen können, aber dann hat die Mehrfachverwendung des Instanz-DB auch keine negativen Auswirkungen.
Kritisch ist die Mehrfachverwendung dann, wenn statische Variablen erforderlich sind, damit der FB sich etwas über den Zyklus hinaus merken kann.
Gruß
Erich
 
Einen Instanz-DB für mehrere getrennte FB-Aufrufe (in diesem Fall 3 Rolltore) widerspricht eigentlich der Intention von FB.
Dann doch lieber für jeden FB einen eigenen Instanz-DB und wenn Datenaustausch unter den FB nötig wäre, macht man das über eine Schnittstelle der FB.
Ich halte das für einen echten Fehler des vorhergehenden Programmierers, wenn es so, wie oben beschrieben ist.
 
Wirklich „richtig“ kann es meiner Meinung nicht sein. Klar es kann funktionieren, aber wenn der FB statische Variablen hat, kann das nicht gewollt sein. Wenn FBs Daten austauschen müssen, dann sollte das nur über die Schnittstelle gemacht werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann es sein, dass du einen Multinstanz-fähigen FB hast? dann wird nur ein DB gebraucht.
Es sollten aber trotzdem verschiedene Instanzen sein, auch wenn sie im selben DB liegen. Also an verschiedenen DB-Adressen.

jeder FB hat einen Instanz DB.
Das klingt für mich aber eher nicht nach Multiinstanz im selben DB.

Harald
 
Ja, möglich, aber auch dann ruft man nur einmal den "Host"-FB mit seinem IDB auf und in diesem sind dann die 3 Instanzen der 3 FB deklariert. So liest sich die Beschreibung des TE nicht.
Es sollten aber trotzdem verschiedene Instanzen sein, auch wenn sie im selben DB liegen. Also an verschiedenen DB-Adressen.


Das klingt für mich aber eher nicht nach Multiinstanz im selben DB.

Harald

Stimmt alles. Aber was ist wirklich programmiert? Alle FB mit dem selben Instanz DB kann nicht funktionieren.
 
Für die Ansteuerung wurde ein FB erstellt, jeder FB hat einen Instanz DB. [..]. Mir ist aufgefallen, dass bei 3 FBs jeweils der gleiche Instanz DB verwendet wird.
Ich lese dies als es gibt ein Anzahl Toren, und sie sind 'normal' programmiert, d.h. 1 Standard FB und pro Tor ein Instanz-DB.
Aber bei 3 Toren ist aussergewöhnlich dieselbe Instanz-DB verwendet - vielleicht als Multi-Instanz. Dann muss man die Programmierer fragen ob das so gemeint ist und warum die 3 Toren unterschiedlich zu die anderen sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alle FB mit dem selben Instanz DB kann nicht funktionieren.
Das kann schon funktionieren. Wenn die Instanzvariablen nur wie TEMP-Variablen verwendet werden. ABER: ein Projekt-fremder Programmierer kann das leicht übersehen und vielleicht anfangen sich in den STAT-Variablen was über den Durchlauf hinaus merken zu wollen. Deshalb sollte man so nicht programmieren, kann es aber ohne Probleme machen.

Harald
 
Zuletzt bearbeitet:
Man muss mal sehen wie die FB aufgerufen werden.
Multiinstanz FB-Aufrufe versteht auch nicht gerade jeder.
 
Zurück
Oben