TIA Befehl BLOCK_DB bei S7-1500

AndyD

Level-1
Beiträge
87
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde.

Ich hatte jetzt Kontakt zu Siemens und habe leider keine zufriedenstellende Antwort erhalten. Problem wäre bekannt und für spätere Versionen wäre es schon in der Aufforderungsliste.
Daher dachte ich, das Problem hat bestimmt schon einmal jemand von Euch gehabt und irgendwie ne Alternativlösung gefunden.

Ich bin dabei Funktionen aus dem alten SIMATIC Manager für das TIA-Portal abzuändern und bin jetzt auf folgendes Problem gestoßen:

Ich habe eine FC die als IN Parameter einen Instanz DB des FB41 bzw FB42 einliest. In der S7 Welt war das der Parameter BLOCK_DB welcher im TIA-Portal aktuell nur als DB_ANY für nicht optimierte Datenbausteine funktioniert. Die Instanz-DBs sind allerdings optimiert, so dass es für die 1500er so keine Möglichkeit gibt den Instanz-DB in eine FC zu übergeben.
Programmieren muss ich den FC mit AWL bzw FUP und diverse AWL Netzwerke.

Habt Ihr eine Idee wie ich den Instanz DB an eine FC übergeben kann???

Grüße

AndyD
 
Hi,

hast du mal mit den Datenbausteinfunktionen gespielt? (FUP: Anweisungen > erweiterte Anweisungen)
oder einen symbolischen Zugriff über den DB-Namen versuchen. Ich habe aber k.A. ob das funktioniert..

Gruß Mo
 
Danke für die Tipps. Funktioniert aber nicht.
Die FC (aus dem SIMATIC Manager) wird nur fehlerfrei übersetzt wenn ich an den Regler FB den Instanz-DB direkt dran schreibe.
Da ich aber die FC mehrfach verwenden muss kann ich das so direkt nicht realisieren.

Zum vereinfachten Vorstellen:
Der Regler CONT_C hat viele Ein-Ausgangsparameter die nicht verwendet werden. Daher wird dieser innerhalb einer FC aufgerufen die nur die Ein- und Ausgangsparameter besitzt die auch gebraucht werden. Allerdings muss ich als IN Parameter auch den jeweils zugehörigen Instanz DB übergeben. Zudem wird innerhalb des FC auch die Schnittstelle zum WinCC gehandelt.

Hat sonst noch jemand eine Idee?

Grüße

AndyD
 
Sorry ich kann dir da auch nicht helfen. Trotzdem möchte ich fragen wozu dieser ganze Aufstand? Du brauchst ja dann für den FC trotzdem jedesmal einen neuen IDB. Warum also nicht gleich einen FB daraus machen und den Regler im Stat Bereich deklarieren? Das ist doch kein stück mehr Schreibkram als den IDB über die Schnittstelle anzugeben.
Und der nächste der das Programm liest kommt dann vielleicht sogar noch dahinter was man da macht.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@vollmi
Wie gesagt, dass sind Standardfunktionen in unserem Unternehmen durch deren Verwendung alle Programmierer sich sofort in jedem firmeneigenen Projekt zurecht finden und die spezielle Verknüpfungsfunktionen zum WinCC beinhalten. Insgesamt ein super Tool (Excel; VBA; Standarfunktionen; WinCC Skripte; etc) das wir hier haben um eben Schreibkram zu sparen und scheinbar fehlen gewisse Dinge im TIA-Portal die uns die Weiternutzung erschweren.

Grüße

AndyD
 
Moin AndyD,

wenn ich das richtig verstanden habe, willst Du in einem Weckalarm-OB n Regler-FBs programmieren und dann aus deiner FC auf die Parameter eines bestimmten Reglers zugreifen, oder?
Dabei würde ich einem Weckalarm-OB einen FB programmieren, der n Regler-FBs als Multiinstanzen aufruft.
Dann eine FC mit den gewünschten Parametern, einem Eingang "ReglerNummer" und einem Eingang "DBNummer". Anhand der Reglernummer kannst Du dann die richtige Offsetadresse berechnen, um auf den IDB ("DBNummer")der Multiinstanz zugreifen zu können.

Gruß

MFreiberger
 
Hallo MFreiburger.

Ist so nicht korrekt.
Ich habe einen FC den ich irgendwann in einem Weckalarm-OB aufrufen will.
In diesem FC ist der Regler FB von Siemens. Da der Regler FB von Siemens einen Instanz-DB benötigt muss ich diesen Instanz DB erst einmal anlegen und dann als IN Parameter in die FC einlesen und dort an den Regler FB schreiben.
OB35 ruft FC125 auf (zum Beispiel 5mal wenn ich 5 Regler habe). Dieser FC125 ruft intern immer den FB42 bzw FB41 auf und für jeden Aufruf vom FC125 benötigt dieser dann intern den Instanz DB. (Regler 1= Instanz-DB1, Regler 2= Instand-DB2, usw) Also muss ich den immer von außen rein schreiben können um die FC125 mehrfach zu verwenden.

Bei Step7 konnte man in einem FC als Eingangsparameter einen Parameter vom Typ BLOCK_DB übergeben. Diesen Datentyp gibt es im TIA nur für 300er und 400er Steuerungen. Für 1200er und 1500er eben nicht. Hier kann man nur mit dem Datentyp DB_ANY arbeiten. Dieser allerdings funktioniert nur bei DBs die keinen optimierten Datenbausteinzugriff haben. Erstelle ich allerdings einen Instanz DB für einen FB41 oder FB42, so besitzt dieser immer das Attribut optimierter Bausteinzugriff und das lässt sich auch nicht ändern.

Gruß

AndyD
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin AndyD,

warum nimmst Du statt einer FC nicht einen FB (Stichwort Multiinstanz)? Dann kannst Du die gewünschten Parameter nach außen legen und ob du den IDB jetzt beim Aufruf "dranschreibst" oder als Parameter übergibst bleibt sich doch gleich, oder?


Gruß

MFreiberger
 
Hallo MFreiberger.

Wenn man einen FB41 bzw FB42 im TIA Portal aufruft (z. Bsp in FUP), dann kann man da nur eine Einzelinstanz dranschreiben. Also eine Multiinstanz bezogen auf den IDB ist nicht möglich.

Klar, im ersten Moment macht man nen FB draus (dann würde ich also im FB nen FB aufrufen) und der "FB125" bekäme eine Multiinstanz. Nützt nur nichts, weil ich hier die Nummer auch nicht übergeben kann und wie geschrieben aus dem IDB keine Multiinstanz machen kann da nur Einzelinstanzen an den Regler FBs von Siemens zulässig sind.

Gruß

AndyD
 
Moin AndyD,

Nützt nur nichts, weil ich hier die Nummer auch nicht übergeben kann und wie geschrieben aus dem IDB keine Multiinstanz machen kann da nur Einzelinstanzen an den Regler FBs von Siemens zulässig sind.

das stimmt nicht. Habe das gerade einmal in TIA ausprobiert. In FB1 den Baustein CONT_C aus dem Katalog (Technologie >> PID Control >> PID Basisfunktion >> CONT_C) eingefügt, dann kam direkt die Abfrage "Aufrufoption", in der man Einzelinstanz oder Multiinstanz wählen konnte. Multiinstanz gewählt, statische Variablen wurden direkt angelegt. Den einen oder anderen Parameter übergeben (IN / OUT). Funktioniert bestens...

Gruß

MFreiberger
 
Hallo MFreiberger.

Wenn man einen FB41 bzw FB42 im TIA Portal aufruft (z. Bsp in FUP), dann kann man da nur eine Einzelinstanz dranschreiben. Also eine Multiinstanz bezogen auf den IDB ist nicht möglich.

Also ich hab das jetzt grad schnell ausprobiert (AWL TIA V13 UPD1) funktioniert einwandfrei als Multiinstanz. Ob das noch mit dem PID PARA funktioniiert weiss ich aber nicht.

ich seh grad Freiberger war zuerst :ROFLMAO:

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...und da ist mir noch nicht ganz klar warum...

Bieten doch keinen Vorteil?

Sie haben offenbar ein automatisiertes Excel VBA-Tool welches viel vor generiert und halt diesen FC voraussetzt. Wenn man allerdings nicht das Tool an aktuellere Gegebenheiten anpassen kann wenn nötig (wie jetzt) verankert man sich halt in der Vergangenheit. Ich würde das mal mit eurer Entwicklungsabteilung besprechen.

mfG René
 
Moin AndyD

Wenn man allerdings nicht das Tool an aktuellere Gegebenheiten anpassen kann wenn nötig (wie jetzt) verankert man sich halt in der Vergangenheit. Ich würde das mal mit eurer Entwicklungsabteilung besprechen.

so ist es.

Ich habe das ganze nochmal in TIA und klassischen Step 7 getest. In Step 7 geht es (war mir gar nicht bewusst, sehr interessant), in TIA gehts halt nicht.

Gruß

MFreiberger
 
Zurück
Oben