Step 7 Struct und array Variablen im DB beschreiben (mit einer Zuweisung)

Frozen19

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



Ich habe eine Frage zu einer Programmieraufgabe.



Es soll ein DINT Wert in eine DB geschrieben werden. Dazu habe ich eine Zähler mit eine Timer versehen welche zu eine Zeit x den wert auf ein MW oder MD addiert und anschließen durch eine move in den DB verschoben wird.

Jedoch möchte ich diese Wert der addiert wird im DB auf 10 DINT Variablen im Struct Format sowie im array schreiben.



Nun zu meiner frage kann ich den addierten wert auf dem Codebaustein so zuweisen das auf alle 10 Werte (in einem) geschrieben wird ohne das ich 10 bzw. 20 Schnittstellen belegen muss?

LG
Frozen
 
Hallo Frozen,

es wären etwas mehr Infos zum eingesetzten Software also TIA oder Classic und zur CPU Notwendig,

mal eine allgemeine Hilfe wie ich da Verstehe willst beim Aufruf an der Schnittstelle daten übergeben und zwar in einem Array oder Struct da wäre es wohl das einfachste den Datenbreich als UDT zu erstellen diesen dann im DB und an der Bausteinschnittstelle des DB zu übergeben. so kannst du jetzt in deinen Baustein auf alle Werte zugreifen.

Was ich mir unter deiner Frage jetzt auch noch vorstellen könnte du möchtest einen gewissen Speicherbereich also deine Variablen mit dem Selben wert beschreiben.
Da könntet mann unter Classic entweder den FILL SFC verwenden oder eine Schleife Programmieren.

Bitte melde dich nochmal dann kann dir mit sicherheit genauer geholfen werden.

MFG TIA
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo TIA!

Danke für deine Antwort
Ich programmiere das Ganze im Classic Simatic Manager mit einer S315.

Wincctia schrieb:
Was ich mir unter deiner Frage jetzt auch noch vorstellen könnte du möchtest einen gewissen Speicherbereich also deine Variablen mit dem Selben wert beschreiben.
Da könntet mann unter Classic entweder den FILL SFC verwenden oder eine Schleife Programmieren.

Genauso ist es richtig ich möchte alle meine Variablen mit ein und demselben Wert beschreiben.

Ich habe das ganze nun so gelöst:
Eine UDT erstellt und dort meine 10 Struct und 10 ARRAY Variablen des Datentyps DINT und das Ganze dann im DB deklariert.
Der Wert der auf ein MD addiert wird, wird mit den SFC FILL auf den DB wo der UDT deklariert ist geschoben.
Das Ganze funktioniert wunderbar alle meine 20 Variablen werden mit ein und demselben Wert im DB beschrieben und das ganze lässt sich noch einfach erweitern.

Dennoch habe ich eine Frage:

  1. Ich soll später die Programmierung auch in TIA für eine 1500er Steuerung realisieren.
Kann ich es da auch so mit dem SFC FILL und eine UDT machen?


  1. Der UDT belegt(Reserviert) doch einen Speicherbereich vor? Wie groß ist dieser Speicherbereich der vorbelegte (reserviert) wird?

Danke für die Hilfe

LG
Frozen
 
Zuletzt bearbeitet:
Hallo Frozen,

soory das ich mich jetzt erst wieder melde.

Aber nun zu deinen Fragen:

1: Ich bin jetzt nicht ganz der große Tia Profi aber ja das sollte so machbar sein.

2. Ein UDT der nirgends verwendet wir belegt erstmals gar keinen Speicher (diese können auch nicht auf die SPS geladen werden) ein UDT ist nur eine Kopiervorlage (Stempel)
Je nach dem wie du dann in deinem UDT deine Daten belegt hast benötigt er dann Speicher z.B. wenn du Daten nicht auf die Wortgrenzen legt dann bekommst du lücken.
Die größe die dein Aufgerufener UDT in der CPU braucht siehst du z.B. im DB auf der linken Seite wenn du in der Datenansicht bist.


ich hoffe ich konnte dir noch weiter helfen

MFG TIA
 
Zurück
Oben