Systemattribut S7_m_c für ganzen DB vergeben

Aerosail

Level-1
Beiträge
21
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich komme bei einem Detail nicht weiter....

ich kann Variablen das Systemattribut S7_m_c geben, um es über das AS-OS Engineering in WinCC zu mappen.

Leider bekomme ich nicht heraus, wie ich es anstellen kann, das jede Variable in einem DB das Attribut bekommt. Das markieren mehrerer hilft nicht.
Gebe ich dem DB das Attribut, wird in WinCC nur eine leere Struktur des DB´s angelegt.

In der Hilfe steht zu S7_m_c als Bausteinattribut, das es das Defaultverhalten des DB´s ändert. Doch wenn ich eine Variable neu anlege wird ihm das Attribut trotzdem nicht vergeben.

Was mache ich falsch?
 
Leider bekomme ich nicht heraus, wie ich es anstellen kann, das jede Variable in einem DB das Attribut bekommt. Das markieren mehrerer hilft nicht.

Ich kenne es bei KOP/FUB/AWL leider auch nur so ... zu Fuss.
1. Variablen im DB mit Attrib. versehen
2. DB-Eigenschaften B&B aktualisieren.

Ich könnte mir aber vorstellen, dass man mittels SCL die DBs passend generieren kann.
Bei FCs und FBs lassen sich im Sourcecode die Attribute wunderbar setzen.
Wenn man also eine SCL-DB mit passenden Attributen erstellt, dann
hat der zugehörige IDB automatisch die Attribute vorhanden, sonst
würde ja auch die Anzeigefunktion in CFC nicht funktionieren.

Ich habe es noch nicht probiert, aber mittels SCL könnte es gehen.

Frank
 
Genau.

Wenn der DB bereits vorhanden ist. Kannst Du Ihn auch als Quelle exportieren. Dann hast Du schon mal das Gerüst mit allen Variablen und kannst per Copy&Paste einfach überall das Attribut setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau.

Wenn der DB bereits vorhanden ist. Kannst Du Ihn auch als Quelle exportieren. Dann hast Du schon mal das Gerüst mit allen Variablen und kannst per Copy&Paste einfach überall das Attribut setzen.

Es ergibt sich bei mir ein neues Problem.

Inhalte eines Structs kann man nicht mit Attributen versehen. Das Attribut gibt man scheinbar dem Struct selbst. Lasse ich das OS allerdings übersetzen, taucht in WinCC weder das Struct noch irgendeine Variable aus dem Struct auf.

Vorher hatte ich das mal statt mit der SCL-Quelle per Hand über den DB versucht. Da hat es sich analog verhalten, nur das nach der OS-Übersetzung wenigstens das Struct in WinCC als Strukturvariable aufgetaucht ist. Diese war jedoch auch leer, also nicht nutzbar.
 
Der Punkt ist der Punkt!

Variablen, die Teil eines Structs sind, kann man nicht nach WinCC mappen wegen des Punktes. Die gemappte Variable hat bereits einen Punkt z.B. "MeineCPU/MeinDB.Variable". Willst Du eine Struct mappen, würde das so aussehen "MeineCPU/MeinDB.MeinStruct.Variable" Da ist dann ein Punkt zuviel für WinCC drin.
Selbiges gilt übrigens auch für Multi-Instanz DB's Die kann man auch nicht mappen.

Edit: Willst Du eine Struktur in WinCC haben, dann lege dir eine zweite Verbindung zur CPU mit eigenem Variablenhaushalt an. Dann legst Du dir eine STrukturvariable an, die der Struktur in deinem DB entspricht. Anschließend kann man händisch im Variablenhaushalt die Variablen mit dem entsprechendem DB-Offset anlegen. Das geht dann in einem Rutsch, macht auch nur bei großen Strukturen Sinn. Die händisch angelegten Variablen unter der händisch eingerichteten Verbindung werden beim nä. OS-Übersetzen auch nicht wieder überschrieben (deswegen 2.Verbindung).

Gruß Approx
 
Zuletzt bearbeitet:
Edit: Willst Du eine Struktur in WinCC haben, dann lege dir eine zweite Verbindung zur CPU mit eigenem Variablenhaushalt an. Dann legst Du dir eine STrukturvariable an, die der Struktur in deinem DB entspricht. Anschließend kann man händisch im Variablenhaushalt die Variablen mit dem entsprechendem DB-Offset anlegen. Das geht dann in einem Rutsch, macht auch nur bei großen Strukturen Sinn. Die händisch angelegten Variablen unter der händisch eingerichteten Verbindung werden beim nä. OS-Übersetzen auch nicht wieder überschrieben (deswegen 2.Verbindung).

Sehr gute Idee!
 
Zurück
Oben