TIA TIA Portal V18 Wunschliste [Diskussion]

Status
Für weitere Antworten geschlossen.
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich ein Array von 1 bis 16 in der SPS anlege ist es auch so in der HMI.
Nein, bei Siemens war das noch nie so!

SPS-Array[0..15] = HMI-Array[0..15]
SPS-Array[1..16] = HMI-Array[0..15]
SPS-Array[-8..8] = HMI-Array[0..16]

Egal, ob optimiert oder nicht.


Und wenn ich (warum auch immer) in der SPS gerade ein Array-Index von -8 bis +8 brauche und auch einrichten kann, dann möchte ich eigentlich, dass es im HMI ganz genau so ist.
Wenn ich dieses Array 0-basiert einrichten muss bzw. am HMI habe, muss ich immer mit einem Offset des Index rechnen. Genau das will ich mir bei so einem Fall ersparen, weil es eine mögliche Fehlerquelle ist.

Meine Meinung. 🤷‍♂️
 
was man halt bei nichtoptimierten DBs machen kann, wenn das Array in der SPS nicht am Anfang des DBs steht, wäre im HMI mit einer Adresse früher zu beginnen...

Also in der SPS beginnt das Array[1..16] of Byte bei Adresse DB1.DBX10.0 dann könnte man im HMI Das Array[0..16] of Byte bei der Adresse DB1.DBX9.0 beginnen lassen... aber schön ist das nicht...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wenn ich (warum auch immer) in der SPS gerade ein Array-Index von -8 bis +8 brauche und auch einrichten kann, dann möchte ich eigentlich, dass es im HMI ganz genau so ist.
Wenn ich dieses Array 0-basiert einrichten muss bzw. am HMI habe, muss ich immer mit einem Offset des Index rechnen. Genau das will ich mir bei so einem Fall ersparen, weil es eine mögliche Fehlerquelle ist.

Meine Meinung. 🤷‍♂️
Da gebe ich dir Recht. Macht halt keinen Sinn es an einer Stelle zuzulassen und an der anderen zu verbiegen.
 
Nein, bei Siemens war das noch nie so!

SPS-Array[0..15] = HMI-Array[0..15]
SPS-Array[1..16] = HMI-Array[0..15]
SPS-Array[-8..8] = HMI-Array[0..16]

Egal, ob optimiert oder nicht.


Und wenn ich (warum auch immer) in der SPS gerade ein Array-Index von -8 bis +8 brauche und auch einrichten kann, dann möchte ich eigentlich, dass es im HMI ganz genau so ist.
Wenn ich dieses Array 0-basiert einrichten muss bzw. am HMI habe, muss ich immer mit einem Offset des Index rechnen. Genau das will ich mir bei so einem Fall ersparen, weil es eine mögliche Fehlerquelle ist.

Meine Meinung. 🤷‍♂️
Also, ich stimme zu, dass die Grenzen eines Array frei wählbar sein sollten. Im HMI (KTP900 basic) ist das nicht so. Auch, wenn ich hier manuell ein Array anlege, muss ich die untere Grenze zwingend bei 0 beginnen (Vielleicht hat das seine Ursache im Win CE?).

ABER: Ich verstehe trotzdem nicht, wofür man ein Array benötigt, das nicht bei 0 beginnt.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, ich stimme zu, dass die Grenzen eines Array frei wählbar sein sollten. Im HMI (KTP900 basic) ist das nicht so. Auch, wenn ich hier manuell ein Array anlege, muss ich die untere Grenze zwingend bei 0 beginnen (Vielleicht hat das seine Ursache im Win CE?).

ABER: Ich verstehe trotzdem nicht, wofür man ein Array benötigt, das nicht bei 0 beginnt.

VG

MFreiberger
Wenn ich z.B. 10 Arbeitsstationen habe und z.B. die Stationen 5 bis 10 ganz genau gleich funktionieren, dann möchte ich dort ein Array[5..10] und nicht [0..5] oder [0..10], damit Programmierung und Realität halt die gleichen Bezeichner haben.
Es vereinfacht IMHO Denk- und Vergleichsprozesse.
 
Wenn ich z.B. 10 Arbeitsstationen habe und z.B. die Stationen 5 bis 10 ganz genau gleich funktionieren, dann möchte ich dort ein Array[5..10] und nicht [0..5] oder [0..10], damit Programmierung und Realität halt die gleichen Bezeichner haben.
Es vereinfacht IMHO Denk- und Vergleichsprozesse.
was stört Dich an [0..10]? schreib halt in den Kommentar, 0-4 gibts nicht...
 
Wenn ich z.B. 10 Arbeitsstationen habe und z.B. die Stationen 5 bis 10 ganz genau gleich funktionieren, dann möchte ich dort ein Array[5..10] und nicht [0..5] oder [0..10], damit Programmierung und Realität halt die gleichen Bezeichner haben.
Es vereinfacht IMHO Denk- und Vergleichsprozesse.
Also wenn schon, dann aber richtig :)
Station[5].Start ist doch nichtssagend.
Ich will ENUMS.
Station[Einpressen].Start ist doch gleich viel besser :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn schon, dann aber richtig :)
Station[5].Start ist doch nichtssagend.
Ich will ENUMS.
Station[Einpressen].Start ist doch gleich viel besser :)
Wieso geht das nicht in der SPS? Kannst doch der Variablen Einpressen den Wert 5 irgendwo zuweisen? Oder meinst Du im HMI? Gabs die Diskussion nicht schonmal hier irgendwo?
 
Also wenn schon, dann aber richtig :)
Station[5].Start ist doch nichtssagend.
Ich will ENUMS.
Station[Einpressen].Start ist doch gleich viel besser :)
Wenn die Station in real allgemein "Station 5" heißt, dann will ich die 5.

Wenn die Station 5 in real "Einpressen" heißt, dann wären die Enums für die Zukunft wirklich schön.
Jetzt hat sie trotzdem die 5 und ich momentan eine globale Konstante namens "Einpressen" die auf 5 eingestellt ist.
Und wieder hinkt das HMI hinterher, weil diese Konstante dort nicht gilt und auch nicht bekannt gemacht werden kann.
Und Variablen statt der Konstanten sind halt für die Deklaration der Arrays wiederum nicht verwendbar.
Irgendwas ist immer, Siemens! 😞
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab es mit einem Array of UDT gemacht. Dann legt er jeden Arrayplatz einzeln an.
:unsure: Was meinst Du damit bzw. woher weisst Du das und weisst Du, dass er nicht jeden ArrayPlatz einzeln anlegt, wenn nicht jeder ArrayPlatz ein UDT ist?

Da gebe ich dir Recht. Macht halt keinen Sinn es an einer Stelle zuzulassen und an der anderen zu verbiegen.
(y) verbiegen? verbieten?
Also, ich stimme zu, dass die Grenzen eines Array frei wählbar sein sollten. Im HMI (KTP900 basic) ist das nicht so. Auch, wenn ich hier manuell ein Array anlege, muss ich die untere Grenze zwingend bei 0 beginnen.
(y)
ABER: Ich verstehe trotzdem nicht, wofür man ein Array benötigt, das nicht bei 0 beginnt.
Dafür kann man sich sicherlich Gründe vorstellen/finden/konstruieren, je nachdem wofür man das so haben möchte?
Als ich gelesen habe, dass bei S7 negative Indizes möglich sind, habe ich nicht schlecht gestaunt. Das kannte ich (aus Unwissenheit?) von keiner anderen ProgrammierSprache. Aber warum eigentlich nicht? Das drängt sich bei dem einen oder anderen AnwendungsFall vielleicht sogar auf.
Fragen wir doch einfach mal @hucki:
Was hast Du Dir eigentlich bei Deinem Beispiel -8 .. 0 .. 8 gedacht? ;) pH-Wert ±1 für Unter-/Überlauf?
 
Was hast Du Dir eigentlich bei Deinem Beispiel -8 .. 0 .. 8 gedacht? ;) pH-Wert ±1 für Unter-/Überlauf?
Nö, ich hab' nur gedacht, dass "jeder" nur an 0 oder 1 als Array-Beginn (zweifellos beim Gros aller Arrays so) denkt und es doch aber so viele andere Varianten auch gibt/geben kann.
Da fielen mir spontan die negativen Indizies als komplett blödes, an den Haaren herbei gezogenes Beispiel ein und 8 wegen der 15/16er Arrays, die vorher hier rum geisterten.
🤷‍♂️ 😅 :p
 
Zuletzt bearbeitet:
was stört Dich an [0..10]? schreib halt in den Kommentar, 0-4 gibts nicht...
Was ist z.B. mit dem Fall 0..9999 gib's nich' ?
Bei einigen wenigen ungenutzten ArrayPlätzen kann man sicherlich den verschwendeten Platz im Speicher ignorieren/vernachlässigen, aber bei vielen?
Station[5].Start ist doch nichtssagend.
Ich will ENUMS.
Station[Einpressen].Start ist doch gleich viel besser :)
Au ja! Als Index Einpressen, Zweipressen, Dreipressen, ... Sorry - ist nicht ernst gemeint.
Wenn die Station in real allgemein "Station 5" heißt, dann will ich die 5.
Station fünf statt Station 5 wäre doch auch denkar? ;)
Und Variablen statt der Konstanten sind halt für die Deklaration der Arrays wiederum nicht verwendbar.
Irgendwas ist immer, Siemens! 😞
Männer und Frauen passen einfach nicht zusammen (sagte so oder so ähnlich mal Loriot). Na und? Wen kümmert's?

Bei Siemens sind es eben die SPS und HMI, die nicht zusammenpassen. Bei Siemens fehlt irgendwie der Schöpfer, der den Überblick hat und wenigstens versucht, eine einheitliche Linie zu schaffen.
Da fielen mir spontan die negativen Indizies als komplett blödes, an den Haaren herbei gezogenes Beispiel ein ...
Na ja, "komplett blöd" wird es doch erst dadurch, dass andere Systeme dies (noch?) nicht können.
Wären wir alle daran gewöhnt, dass z.B. Excel, andere SPS, periphere Geräte und sogar Siemens HMIs dies genauso selbstverständlich können, wer hätte nicht schon Anwendungen dafür gefunden und würde dies noch als blöd empfinden??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist z.B. mit dem Fall 0..9999 gib's nich' ?
Bei einigen wenigen ungenutzten ArrayPlätzen kann man sicherlich den verschwendeten Platz im Speicher ignorieren/vernachlässigen, aber bei vielen?
Klau' mir doch nicht meine noch nicht geposteten Beträge!
Jetzt musste ich alles wieder löschen und mir was Neues ausdenken.
😤 🤬 😤

:ROFLMAO: :ROFLMAO: :ROFLMAO:
 
aber um zu den Wünschen zurückzukommen: Die Traceaufzeichnung hat ja eine so tolle Funktion um Signale auszurechnen. Blöderweise kann sie kein ausmaskieren (Variable AND 16#xxxx), kein Modulo, und wenn man es rechnerisch lösen will klappt das auch nicht, weil bei der ungenauen Rechnerei mit REAL Zahlen ein Bit im Rauschen verschwindet. Extra in der SPS was zu Programmieren, nur um eine Aufzeichnung zu machen, kann ja auch nicht die Lösung sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist z.B. mit dem Fall 0..9999 gib's nich' ?
Ich will ja Siemens nicht verteidigen, das ist schon mist mit dem HMI Array. Aber das einzige was Du machen kannst, ist in der SPS auch mit 0 anzufangen!
Bei Siemens fehlt irgendwie der Schöpfer, der den Überblick hat und wenigstens versucht, eine einheitliche Linie zu schaffen.
👍 Das kannst Du laut sagen...
 
Aber das einzige was Du machen kannst, ist in der SPS auch mit 0 anzufangen!
Oder halt einmal mit und einmal ohne Offset den Index zählen (macht ja TIA auch automatisch so, wenn das PLC-Array nicht 0 basiert ist).

Das ist ja auch nur für die blöd, die sowohl PLC als auch Visu machen (müssen).
Wenn das eh' getrennte Leute sind, kann ja jedem egal sein, wie der auf der anderen Seite zählt.
 
Dafür, dass Siemens das auf dem HMI anders zählt, existiert überhaupt kein Grund. Denn natürlich sind dort die Array-Grenzen bekannt, und wenn man wollte dann könnte man das auch umsetzen damit es im SPS-Programm und im HMI identisch funktioniert. Also wenn man wollte und könnte, dann kann man auch.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben