TIA DB-Nummer ermitteln

Kleinerwolf

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es im TIA-Portal V17 eine Möglichkeit die DB-Nummer zu ermitteln ?. Benötigt wird dies für die "SINUMERIK ONE".

Mittels IN_OUT-Schnittstelle wird der gewünschte DB als "Referenz" übergeben z.B. "DB33" (Im Bild "LBP_Axis3"). Diese "übergebene" DB-Nummer würde ich jetzt benötigen (Step7 "DBNO / DINO").

Wird das Ganze jetzt als "Variant / DB_ANY" übergeben so kann ich mittels "DB_ANY_TO_UINT(VARIANT_TO_DB_ANY ()" die DB-Nummer ermitteln, jedoch fehlt mir dann die ganze Information des Anwender-Datentyps was wiederum auch nicht zum Ziel führt :-(




in der "alten S7-Welt" war die Welt für so manchen noch in Ordnung
 

Anhänge

  • InOut.PNG
    InOut.PNG
    105,2 KB · Aufrufe: 50
  • Schnittstelle.PNG
    Schnittstelle.PNG
    86,4 KB · Aufrufe: 50
L DBNO
geht immer noch (.. AWL ...)
Hallo,

Ist ein SCL-Baustein.
Sofern man den Programmier-Empfehlungen des Hersteller mit den 7-Buchstaben glauben schenken darf, ist ja AWL nicht mehr ganz so gewünscht.... ;-).

Schade das es nichts in SCL gibt was der "DINO / DBNO" gleich gesetzt ist.

Hab das ganze jetzt mal mit einer AT-Anweisung überlagert vom Datentyp Variant. Jedoch kann muss dann Standard-Zugriff im Baustein angewählt werden was ja wiederum auch nicht so toll ist :-(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen AWL-FC in deinen SCL-Baustein einfügen der L DBNO und L DINO macht und dann übergibt? Wären dann ja auch nur 4 Zeilen AWL-Code.

Ist zwar auch ein Workaround, aber damit könntest du unabhängig von optimiert/nicht-optimiert arbeiten.
 
Würde dir die Funktion GetSymbolPath weiterhelfen?

Entweder im DB-Namen noch die Nummer hinten anhängen und dann rausparsen, oder mit einem CaseOf auf die ganzen Namen überprüfen.
Nicht schön, könnte aber funktionieren.


Ich bin jetzt doch etwas verwirrt. Weshalb benötigst du gleich die DB-nummer wenn du eh schon den ganzen DB angehängt hast?

FYI: AT-Anweisungen gehen zwar in einem FB mit optimiertem Zugriff aber halt nicht an einem Durchgangsparameter mit UDT.
1657705596221.png
 
Zuletzt bearbeitet:
... muss dann Standard-Zugriff im Baustein angewählt werden was ja wiederum auch nicht so toll ist :-(
Wofür sollte denn sonst die DB-Nr. benötigt werden, wenn nicht für irgend einen Standard-Zugriff? Du rufst doch nicht etwa einen nichtoptimierten Baustein aus einem optimierten auf? Dann gehst du doch ohnehin schon Kompromisse ein.
 
Siehe hier:

Gruß
Laforge
 
Würde dir die Funktion GetSymbolPath weiterhelfen?

Entweder im DB-Namen noch die Nummer hinten anhängen und dann rausparsen, oder mit einem CaseOf auf die ganzen Namen überprüfen.
Nicht schön, könnte aber funktionieren.


Ich bin jetzt doch etwas verwirrt. Weshalb benötigst du gleich die DB-nummer wenn du eh schon den ganzen DB angehängt hast?

FYI: AT-Anweisungen gehen zwar in einem FB mit optimiertem Zugriff aber halt nicht an einem Durchgangsparameter mit UDT.
Anhang anzeigen 62298
Hallo,

womöglich habe ich da auch den Wald vor lauter Bäumen nicht mehr gesehen oder sehe!
Die DB-Nummer ist bei den SINUMERIK-Steuerungen immer der Achsnummer zugeordnet d.h. DB32 == Achse 2 oder DB38 == Achse 8 usw. (immer fix). Da Steuerungsintern jedoch gewisse Signale zu dieser Achsnummer verknüpft werden, wie z.B. Vorschub-Halt... sollte ich die Achsnummer wissen welche sich z.B. aus der DB-Nummer ableiten lässt (L DBNO Step 7-Classic).
Natürlich wäre auch eine Ableitung aus dem Symbolnamen denkbar bzw. zu bevorzugen um für die Zukunft gerüstet zu sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du für die Zukunft gerüstet sein willst , entsorge den S5 Code aus 840C den irgend wer in die 840D sl gerettet hat.

Für die ONE wird es ein neues Grundprogramm geben , ganz ohne feste Zuordnung er DB oder sonst was zu eine Achse.
Die ganze NCK -PLC Schnittstelle kommt ohne fixe DB Nummer aus .
 
Zurück
Oben