TIA Array-DB statt DB mit Array, sinnvoll?

Semo

Level-2
Beiträge
114
Reaktionspunkte
45
Zuviel Werbung?
-> Hier kostenlos registrieren
Mahlzeit,

in 99% meiner Projekte gibt es diverse DBs nach dem Schema:

Code:
dbParameterXY
  p[1..20] of udt-par-xy

dbHMIDatenHasteNichtGesehen
  p[1..20] of udt-hmi-hastenichtgesehen

usw...


Heute habe ich den Array-DB mal angetestet und sehe erst Mal keinen Voteil aber einen Haufen Nachteile...

  • Wenn der DB-Name eh schon Auskunft über den Inhalt gibt ist mir ein dbXYZ.p[]. ... alle mal lieber als ein dbXYZ.THIS[]. ...
  • Der Zugriff ist unterschiedlich zum Aufbau (Konstrukt) dbXYZ.THIS[] zu dbXYZ.dbXYZ[]
  • Aus noch ungeklärten Gründen bekomme ich keine HMI-Variablen aus Array-DBs erzeugt, weder komplette Strukturen noch einzelne Integer oder gar Booleans
  • ...

Kann es sein, dass die Array-DB inkl. zugehöriger Funktionen hauptsächlich auf die Verwendung (Erzeugen, Handlen, Löschen) zur Laufzeit ausgerichtet sind?


Ich hoffe ich liege da falsch.


MfG Semo
 
meinen Senf dazu: http://www.sps-forum.de/simatic/78383-array-datenbloecke-das-sieht-schlecht-aus.html

  • Aus noch ungeklärten Gründen bekomme ich keine HMI-Variablen aus Array-DBs erzeugt, weder komplette Strukturen noch einzelne Integer oder gar Booleans

bei manchen Sachen kann man nicht direkt im HMI die Variable in den Bild-Eigenschaften auswählen z.B. bei UDT-Tags, da geht das nur in der HMI-Variablen-Übersicht, möglicherweise ist das auch bei Array-DBs so

und wofür Array-DBs?- keine wirkliche Ahnung - die Notwendigkeit für das sinnlose THIS macht jede Schreibvereinfachung kaputt, ich denke es war anders geplant und war dann in der Umsetzung schwierig und man musste es so lösen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi LowLevelMahn

bei mir gibt es eine sinnvolle Anwendung der Array-DB.
Ich brauche je nach Ausbaustufe verschieden lange FIFOs. Mal sind maximal 100 elemente drin, mal sind maximal 400 drin.
Mittels der ReadFromArrayDB() WriteToArrayDB() Funktionen kann ich mir Push und Pop Funktionsbausteine schreiben, die nicht wissen müssen wie lange die Arrays sind. Meine merken sich nur die Nummer des DB, als DB_ANY, und mal initialisiere ich einen 100er und bei der anderen Ausbaustufe einen 400er oder sonst wie langen ArrayDB of myUDT rein. Im FB arbeite ich mit einem Schreib und einem Lese Index, damit nix kopiert werden muss. Ein ArrayDB dient als Ringpuffer für eine Queue.

Die fürchterliche Schreibweise THIS[ #index ] verwende ich eigentlich nicht. Mir ist es lieber wenn der ReadFromArrayDB ohne STOP im Ausgang liefert, dass er hinten angestoßen ist. Ich spar mir inzwischen sogar die Länge an meine "Queue"s zu übergeben.

Mein Kollege, der sich mit der Visu rumschlägt, behauptet inzwischen könne er zähneknirschend doppelt variabel, auf meine Queues zugreifen.

'n schön' Tach auch
HB
 
Zurück
Oben