TIA Instanzdatenbausteine aus Quelle generieren

RoBra81

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

ich habe mir für größere Step7-Projekte einige Helfer gebastelt, die mir AWL- und SCL-Quellen generieren. Diese wollte ich nun mal ins TIA heben. Ich scheitere aber schon ziemlich am Anfang: Ich habe eine SCL-Quelle, die mir im Step7 die benötigen Instanzdatenbausteine generiert hat:

Code:
DATA_BLOCK "DB_Name" "FB_Name"//
// Beschreibung
//


BEGIN


END_DATA_BLOCK

Diese Quelle kann ich im TIA nicht übersetzen, da er "DB_Name" nicht kennt. In die Variablentabelle kann ich ihn auch nicht Eintragen, da es im TIA in der Variablentabelle keine Bausteine mehr gibt. Nun könnte ich den Instanzdatenbaustein DB_Name händisch als Instanz von FB_Name erstellen, aber das ist eine ganz schöne Aufgabe, wenn man über 100 Instanz-DBs hat. Gibt es im TIA noch eine Möglichkeit, Instanzdatenbausteine automatisch (SCL- oder AWL-Quelle o.Ä.) zu generieren?

Vielen Dank
Ronny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht ist das in dem TIA nicht vorgesehen, daß man nicht existierenden Bausteinen einen symbolischen Name geben kann? Wer braucht denn sowas??? ;)

Funktioniert es, wenn Du die DB-Nummer direkt angibst? (DB123 oder %DB123 oder ...?)
Code:
DATA_BLOCK DB123 "FB_Name"//
//Symbol : "DB_Name" //gibts sowas?
..

Gibt es ein Schlüsselwort oder Direktive für die Quelle, was dem zu erstellenden DB einen symbolischen Name gibt?

Harald
 
Funktioniert es, wenn Du die DB-Nummer direkt angibst? (DB123 oder %DB123 oder ...?)

Vielen Dank für den Tipp! Damit konnte ich den Instanz-DB generieren und nach Vergabe eines Namens den Quellcode wieder erzeugen (geht ja im TIA nur für Bausteine, die mal SCL waren...). Die korrekte Syntax im TIA lautet:

Code:
DATA_BLOCK "DB_FH5968"{ S7_Optimized_Access := 'FALSE' }
AUTHOR : AIS
FAMILY : ASF
VERSION : 0.1
//  Ventil Saugseite Pumpe JP0001   
"ASF_BINARY"


BEGIN


END_DATA_BLOCK

Vielen Dank!
Ronny
 
Macht es wirklich Sinn einen IDB als Quelle zu archivieren und aus der Quelle neu generieren?
Macht es nicht eher Sinn, das Projekt neu zu übersetzen? :confused:


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir quasi einen Codegenrator gebaut, der einen Rahmen für ein komplettes Projekt erzeugt. Da werden dann auch andere Bausteine erzeugt, die teilweise auf die Instanz-DBs "verweisen" und daher muss ich diese vorher generieren...
 
Und daraus entsteht ein konsitentes Projekt?

Wir hatte das auch einem angedacht und versucht, doch der Erfolg war nicht so echt.
Und ist es wirklich ein guter Stil, auf IDBs von anderen FB direkt zu zugreifen?
Ich mache es nicht.
Dafür gibt es KoppelDBs.

Schön, wenn es bei dir klappt.


bike
 
Zuletzt bearbeitet:
Ja, es entsteht ein konsistentes Projekt, dessen Bausteine sogar auf KOP umschaltbar sind. Und mal vom Zugriff auf die Instanz-DBs abgesehen, brauche ich die auch, wenn ich eine Quelle übersetzen möchte, in der der FB aufgerufen wird...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es wird noch besser: meine korrekte Quelle lies sich trotzdem nicht übersetzen - Grund: ich hatte als Zeilenendezeichen nur ein LF ohne CR -> CR ergänzt und siehe da, es geht...
 
Schaut so die Zukunft der Softwareentwicklung aus?
Ich mag eigentlich keine Hochsprachenprogrammierer und deren Art zu programmieren.
Aber, die haben eines erkannt, dass systematisch vorgegangen werden soll.
Wie lange dauert es bis wir, die Automatisierer, das auch machen?
Mit unsern Grundlagen sind wir inzwischen weit, jede Funktion ist für sich allen lebensfähig.
Automatisch ein Programm erstellen, das ist noch? nicht möglich.

Ich wünsche dir viel Erfolg mit deinem Projekt.


bike
 
Ich habe mir quasi einen Codegenrator gebaut, der einen Rahmen für ein komplettes Projekt erzeugt. Da werden dann auch andere Bausteine erzeugt, die teilweise auf die Instanz-DBs "verweisen" und daher muss ich diese vorher generieren...

Jetz hast du aber meine Interesse geweckt. Was kann denn dein Generator genau generieren, wenn ich fragen darf?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, es entsteht ein konsistentes Projekt, dessen Bausteine sogar auf KOP umschaltbar sind. Und mal vom Zugriff auf die Instanz-DBs abgesehen, brauche ich die auch, wenn ich eine Quelle übersetzen möchte, in der der FB aufgerufen wird...

Du meinst Du konntest im Step7 Manager zwischen den Programmiersprachen umschalten, oder?
Im TIA ist eine Ansichtsumschaltung der Bausteine nicht möglich, oder?
Laut Siemens wird aus jeder Sprache direkt der Maschinencode generiert. Früher wurde aus FUP/KOP erst in AWL gewandelt und dann in den Maschinencode.

Grüße

AndyD
 
Jetz hast du aber meine Interesse geweckt. Was kann denn dein Generator genau generieren, wenn ich fragen darf?

Ich gehe davon aus, dass dort diverse Objekte generiert werden wie:
- Analogeingabebausteine
- Analogausgabebausteine
- Regler (daher die Instanz-DB´s)
- Motoren
- Ventile
- etc.....

Haben wir auch.
Eine Excel-Liste die man füttert und die dann AWL-/SCL-Quellen ausspuckt und diese werden im Step7 bzw. im TIA eingelesen und daraus Bausteine generiert.
Funktioniert ganz gut. So kann man die Handebene eines Projektes mit ein paar Klicks erstellen und muss "nur" noch die Automatikfunktionen ergänzen.

Grüße

AndyD
 
Mit unsern Grundlagen sind wir inzwischen weit, jede Funktion ist für sich allen lebensfähig.
Automatisch ein Programm erstellen, das ist noch? nicht möglich.
bike

Soweit ich weiß gibt es das schon in der Automobil-Industrie. Da werden z.b. Fließbänder nur noch aus Standard-Komponenten gebaut. Da gibt es dann einen Editor, in dem nur die einzelnen Abschnitte zusammengeklickt werden müssen. Der erstellt dir dann S7 Projekt, doku, baut umrichter in den Starter, falls nötig, etc. pp.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

hab anhand dieses Threads mein Hauptproblem lösen können, daher stelle ich hier auch die Folgefrage. Ich möchte ebenfalls im TIA Portal aus einer AWL Quelle die IDBs erzeugen. Mit Hilfe des Threads hab ich es geschafft einen IDB mit einer festen Nummer zu erzeugen:

Code:
DATA_BLOCK DB1001
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
"FB1001"
Begin
END_DATA_BLOCK

Damit macht er mir den IDB1001 zum FB1001, allerdings auch mit dem Symbolischen Namen DB1001. Meine Frage wäre jetzt, ob man aus der AWL Quelle auch irgendwie den Symbolischen Namen schreiben kann. Im Code hab ich mal "Name :" und "Symbol :" ergänzt, aber dann kommen Fehler.

Heißt wie oben beschrieben kann ich einen Namen generieren, dann aber mit automatisch erzeugter DB Nummer -> was ich nicht möchte
Oder eben eine festgelegte DB Nummer -> womit ich leben könnte, aber wieder Fleißarbeit durch das Umbennen der Symbolischen Name entsteht

Daher die Frage ob jemand einen Weg kennt beides zu vergeben.

Danke!
 
Zurück
Oben