Array [1..12 , 1..31 , 0..23] of REAL
DB_Monatswerte_1_6[#Monat, #Tag, #Std]
Du mußt generell zwischen Variablen-Inhalt und Variablen-Namen zu unterscheiden lernen. Das Eine kannst du nicht so ohne weiteres für das Andere verwenden ...Hallo Larry,
vielen Dank für die schnelle Antwort. Wie wäre es wenn ich #Monat als String hätte? Und dann mit Jan,Febr,Mrz,April... beschriftet haben möchte?
Kleine Anmerkung: Zumindest Anfänger sollten Arrays immer bei 0 beginnen lassen. Auch wenn der Bereich leer bleibt, erspart das hässliche Bereichslängenfehler.
Ich würde auch gerne mal wissen woher das kommt ... (ich weiß doch was ich angelegt / dimensioniert habe)
Das wird sich sehr wahrscheinlich auch nicht ändern, da es u.A. direkt von Microsoft kommt. Ob nun VB-Script oder eine derv .Net-basierten Sprachen - alle arbeiten beim Dimensionieren mit "highest Index" und sind 0-basiert. Ein "Dim XYZ (100)" erzegut also ein Array mit 101 Elementen - eben 0 bis 100 ...Vielleicht, weil es TIA/Siemens immer noch nicht geraffelt bekommt und alle Arrays im HMI immer noch bei 0 beginnen lässt, egal wie sie in der PLC in Wirklichkeit deklariert sind?
Funktioniert in TIA V19 eigentlich mittlerweile UPPER_BOUND und LOWER_BOUND für alle Arrays?ich denke aber mal, dass einmal die meißten SPS-Arrays auch in der SPS bleiben ... und dann sollte man sich auch immer darüber im Klaren sein was man da macht ...
Bei den in den Scripten erzeugten Arrays sehe ich das ja noch ein, denn die haben ja max. indirekt mit der PLC zu tun.Das wird sich sehr wahrscheinlich auch nicht ändern, da es u.A. direkt von Microsoft kommt. Ob nun VB-Script oder eine derv .Net-basierten Sprachen - alle arbeiten beim Dimensionieren mit "highest Index" und sind 0-basiert. Ein "Dim XYZ (100)" erzegut also ein Array mit 101 Elementen - eben 0 bis 100 ...
Für welche Arrays funktioniert das denn nicht?Funktioniert in TIA V19 eigentlich mittlerweile UPPER_BOUND und LOWER_BOUND für alle Arrays?
Für welche Arrays funktioniert das denn nicht?
Es geht nur bei Arrays in "optimiertem" Speicher - meinst du das?
Deswegen verwende ich für die ARRAY-Deklaration und dann für Schleifen u.ä. immer (meist globale) Konstanten.Anhang anzeigen 74861
Leider nur für Arrays vom Typ [*]
Ich weiß, man sollte selber immer die Grenzen kontrollieren, aber so muss man immer das gesamte Programm kontrollieren.
Wenn ich z.B. eine UDT ändere und die in vielen verschiedenen FBs verwende wirds lustig. Würde UPPER_BOUND und LOWER_BOUND für statische Arrays funktionieren würde man sich so eine menge Fleißarbeit sparen.
Und zusätzlich dazu machen so schusselige Typen wie ich dadurch weniger Flüchtigkeitsfehler
Wie schon geschrieben - an der Stelle hat Siemens dann mal nichts Neues erfunden sondern die Standard-Microsoft-Objekte so übernommen wie sie sind. Das wäre aber nichts ungewöhnliches ...Bei den in den Scripten erzeugten Arrays sehe ich das ja noch ein, denn die haben ja max. indirekt mit der PLC zu tun.
Aber warum ist es bei den PLC-Variablen im HMI auch so anstatt die Deklarations-Vorgabe aus der PLC zu übernehmen?
Wenn das HMI das intern dann beim Kompilieren in ein 0-basiertes Array umwandelt, interessiert mich als Programmierer ja nicht.
Aber auch das kann doch alles erst beim Kompilieren geschehen. Ändert doch für die Ausführung auf dem HMI nix.Nein ... da vertust du dich - TIA (oder Flexibel früher oder auch ProTool noch früher) greifen einfach nur den Einstiegspunkt des Objektes auf und ordnen den dann dem internen Array zu - dabei ist es egal ob das Visu-Array von 1 bis 100 oder von 1000 bis 1050 ofer was auch immer geht ...
Für feste Arrays kann man dafür Konstanten verwenden.Anhang anzeigen 74861
Leider nur für Arrays vom Typ [*]
Ich weiß, man sollte selber immer die Grenzen kontrollieren, aber so muss man immer das gesamte Programm kontrollieren.
Wenn ich z.B. eine UDT ändere und die in vielen verschiedenen FBs verwende wirds lustig. Würde UPPER_BOUND und LOWER_BOUND für statische Arrays funktionieren würde man sich so eine menge Fleißarbeit sparen.
Und zusätzlich dazu machen so schusselige Typen wie ich dadurch weniger Flüchtigkeitsfehler
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?