Step 7 Instanz-DB-Nummer innerhalb instanziiertem FB per Programmcode ermitteln - Wie?

Beren

Level-1
Beiträge
318
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin


ist es möglich, innerhalb eines FBs die zugehörige Instanz DB Nummer zu ermitteln? Wenn ja, wie? Die Instanz-DB Nummer von außen als Parameter anzugeben finde ich "nicht so elegant".


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich möchte dieses Thema noch mal aufgreifen da ich das gleiche Problem habe. Ich will im FB die Nummer des aktuell gültigen Instanz-DB´s auslesen.
Wie ja oben steht soll das mit "L DINO" gehen. ich habe eine 1500er CPU und TIA meckert die Programmzeile bei übersetzen an - es soll zuerst ein Instanz-DB aufgeschlagen werden, aber der entsprechende DB ist doch dann eh zur Laufzeit aufgeschlagen.
Ich raffs nicht.

Hat jemand ne Idee

TIA Portal V13 SP1 Update 9
 
das funktioniert so aber nicht

Unbenannt.JPG

Dafür müsste ich ja wissen welchen DB ich aufschlagen soll. Da sich der Instanz-DB aber bei jedem Aufruf des FB´s ändert kann ich das schlecht vorraussehen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
habe jetzt rausgefunden dass bei der 1500er die Befehle AUF und AUFDI nur für Datenbausteine mit Standardzugriff (mit absoluten Adressen) anwendbar sind.
 
habe jetzt rausgefunden dass bei der 1500er die Befehle AUF und AUFDI nur für Datenbausteine mit Standardzugriff (mit absoluten Adressen) anwendbar sind.

Was ja auch logisch ist. Da du ja nur mit absoluten Zugriffen dann weiterarbeiten kannst.
Aber dürfen wir erfahren was du vorhast? Das hört sich so extrem nach "wir basteln da was" an.

mfG René
 
Ich habe im HMI wiederkehrende Anlagenteile, die ich über Multiplexvariablen versorgen möchte. Jetzt ist es aber so dass Muxen auf optimierte Datenbausteine nicht funktioniert.
So gehts bei nicht oprimierten DB´s - DB [DB_Nummer].DBD4 , aber bei optimierten DB´s leider nicht so DB [DB_Nummer]."Sollwert Kühlen".
Aus diesem Grund habe ich versucht das Multiplexen in die Steuerung zu verlegen. Ich möchte die HMI Variablen über einen Global DB versorgen. Aus diesem DB werden dann je nach Wert einer Indexvariable in den richtigen Instanzen DB umgemovet.
Im FB sollte also die entsprechente Nummer des Instanzen DB´s ausgelesen werden und mit der Indexvariable verglichen werden. Im FB wird der Inhalt des globalen DB als Struktur angeschaltet und bei Gleichheit der Indexvariablen und der Instanz-DB Nummer ensprechende schreib/lese Befehle ausgeführt werden.

Wenn ich die Instanz-DB Nummer nicht im FB auslesen kann dann bleibt nur die Möglichkeit diese über die Schnittstelle von außen anzuschalten. Oder ich verzichte auf die optimierten DB´s. dann muss ich aber leider auch auf die Option "Laden ohne Reinitialisieren" verzichten (an diese hatte ich mich schon sehr gewöhnt)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe im HMI wiederkehrende Anlagenteile, die ich über Multiplexvariablen versorgen möchte. Jetzt ist es aber so dass Muxen auf optimierte Datenbausteine nicht funktioniert.
Anstatt Adress-multiplexen kann man Variablen-multiplexen nehmen. Dann muß man allerdings alle verwendeten Variablen als Multiplex-Variablen projektieren (mit Variablen-Liste für jeden möglichen Index-Wert) - das kann in Arbeit ausarten.

Harald
 
Ja das hab ich mir auch mal angeguckt, ist aber tatsächlich sehr sehr aufwändig. Ich verstehe einfach nicht warum Siemens das Konzept der Symbolischen Programmierung nicht konsequent durchzieht also auch beim Multiplexen.
Hab deswegern schon mit Siemens telefoniert, scheint auch nicht zu kommen in absehbarer Zeit.
 
Ich verstehe einfach nicht warum Siemens das Konzept der Symbolischen Programmierung nicht konsequent durchzieht also auch beim Multiplexen.
Hab deswegern schon mit Siemens telefoniert, scheint auch nicht zu kommen in absehbarer Zeit.
Warum auf Siemens schimpfen, DU willst doch unsymbolisch projektieren, indem Du (zwecks Arbeit sparen) DB-Nummern verwendest - Dich also auf Adressen beziehst und nicht auf Symbole.

Wie soll so ein "symbolisches Multiplexen" denn Deiner Meinung nach aussehen? Zusammensetzen von Symbolnamen zur Laufzeit? Das wird nicht einfach so gehen, weil jedes Symbol auch eine projektspezifische ID hat, welche die HMI bei der symbolischen Kommunikation mit der CPU angeben muß.

Harald
 
Diese Funktion würde ich mir auch wünschen und ja es gibt Steuerungen (ABB Roboter) die können das, so mache ich da meine Programmaufrufe
 
Du kannst dir die Multiplexoption ja auch in deine FBs integrieren. Der FB bekommt drei Eingänge: Einmal die eigene Objekt-ID, dann die vom HMI-Vorgewählte, und dann eine UDT mit dem Datensatz. Stellt der FB fest, dass die Vorwahl-ID seine eigene ist, dann übernimmt er die Daten von der UDT in seine eigenen Daten, bzw. nur auf Befehl "Schreiben" etc. so wie man es gerade benötigt. Alles symbolisch, und kein rumgeschmiere in fremden Instanzdaten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja genau Thomas, so in etwa hatte ich es vor. Ich wollte halt die nummer des Instanz Db nicht von aussen anschalten sondern intern auslesen. Und die Vorwahl Id direkt in den Udt (oder eine Struct) integrieren. Wir haben das heute Firmenintern diskutiert und sind da auf ein Problem gestoßen das zum tragen kommt sobalt man mehrere Panels hat . Das eine Panel fordert den Datensatz von Db 1000 an und das andere den Datensatz von Db 1001. Dann müsste es schon einen Datensatz pro Panel geben.
 
Zurück
Oben