TIA TIA Portal V18 Wunschliste [Diskussion]

Status
Für weitere Antworten geschlossen.
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte dafür eine FC spendieren. Innerhalb ein Array[*] of xyz (ich hoffe der Datentyp ändert sich nicht?). Darin UPPPER- und LOWER_BOUND verwenden und die Ober- und Untergrenze dann ausgeben.
Man könnte auch einfach die Funktion UPPER_BOUND und LOWER_BOUND für Arrays freigeben die nicht über Variablen definiert werden. Dann kann man sich als Programmierer angewöhnen die Grenzen eines Arrays grundsätzlich über diese Funktionen zu ermitteln um niemals das Problem einer Grenzüberschreitung zu haben.
Das man das ganze über Umwege lösen kann oder über Konstanten nur an einer Stelle gesammelt ändern muss ist mir klar. Würde man aber die Funktionen für oben genannte Arrays ebenfalls freigeben und nicht statt dessen einen Fehler generieren, würde man sich wieder einiges an "Handarbeit" sparen.
Der Vorschlag von MFreiberger ist doch DIE Lösung und macht nicht wirklich mehr Arbeit. Um den Compiler dazu zu bringen, die Arraygrenzen automatisch irgendwo auslesbar hinzuschreiben, braucht man das interessierende Array nur an einen Baustein mit Array[*] übergeben. Der Baustein kann dann die Arraygrenzen zurückgeben:
Code:
FUNCTION "FC_GetBounds_Int" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT
      ARR : Array[*] of Int;
   END_VAR

   VAR_OUTPUT
      LB : DInt;   // Lower_Bound
      UB : DInt;   // Upper_Bound
   END_VAR

BEGIN
    #LB := LOWER_BOUND(ARR := #ARR, DIM := 1);
    #UB := UPPER_BOUND(ARR := #ARR, DIM := 1);
    
END_FUNCTION

Code:
#LowerB := LOWER_BOUND(ARR := "DB_Data".iArray, DIM := 1); //so nicht zulässig
#UpperB := UPPER_BOUND(ARR := "DB_Data".iArray, DIM := 1); //so nicht zulässig

"FC_GetBounds_Int"(ARR := "DB_Data".iArray, LB => #LowerB, UB => #UpperB); //so funktioniert es

Wo macht diese Lösung "einiges an Handarbeit"?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das kann ja wie in C/C++ funktionieren. Der Aufruf von "LOWER_/UPPER_BOUND" wird, bei bekannten Arrays, beim Übersetzen durch die Konstante der Array-Größe ersetzt. Der Compiler weis ja wie lang das Array ist.
Die Array-Grösse bzw. die Anzahl der Array-Elemente ist aber
UpperBound - LowerBound +1
und diese Info allein genügt nicht.
Wäre als LowerBound per Definition entweder immer nur 0 oder immer nur 1 möglich/zulässig, dann könnte man gut auf die Funktion LowerBound verzichten.

hier noch ein Auszug zu dem Verhalten der verschiedenen CPU Typen aus der TIA Hilfe:

...
(S7-300/400) In SCL haben Sie zusätzlich die Möglichkeit, in den Bausteineigenschaften das Attribut "ARRAY-Grenzen prüfen" zu aktivieren. Es bewirkt, dass bei ARRAY-Zugriffsfehlern der Freigabeausgang ENO auf FALSE gesetzt wird.
...
(S7-1500) Der Freigabeausgang ENO wird nicht auf den Signalzustand FALSE gesetzt, wenn bei der Ausführung einer Anweisung die ARRAY-Grenzen überschritten werden. Eine Ausnahme bilden nur SCL-Bausteine auf CPUs der Baureihen S7-300/400, für die die Bausteineigenschaft "ARRAY-Grenzen prüfen" gesetzt ist.
...
Ausnahmen, Ausnahmen, Ausnahmen.
Mag doch in SCL der ENO-Ausgang bei ARRAY-ZugriffsFehlern auf FALSE gesetzt werden.
Wer denkt schon beim Programmieren in SCL an das OK-Flag und fragt es immer gewissenhaft ab?
Die "HochsprachenProgrammierer" sind doch damit schon fast wieder überfordert. ;)
Der Eingang EN, der Ausgang ENO und das OK-Flag sind für meinen Geschmack in SCL viel zu "unsichtbar".
Eigentlich ist EN als praktischer SprungbefehlErsatz für KOP und FUP gedacht.
 
Ja, das ist wie immer bei Siemens, so einfach ist das alles nicht mal eben in 5 Minuten... 😂
Aber was will man machen.
Entweder nicht drüber nachdenken, also mir doch alles scheißegal... Oder eben selbst was ausprogrammieren, wenn man meint, es brauchen zu müssen.
Am einfachsten habens die Leute, die garnicht wissen, dass man da drüber nachdenken könnte 😂
 
Im Zeitalter der Navis kein Problem.
Nur, dass man heutzutage solche und andere HilfsMittel benötigt und bedienen können muss, ohne verstehen zu müssen, wie sie funktionieren, das ist das Problem.
Welchen Baustein benötige ich hierfür und welchen dafür? So lauten viele Fragen in diesem Forum.
Und das, um z.T. so simple Aufgaben zu lösen, dass man sich nur wundern kann. Irgendwie hat sich der Schwerpunkt des Knowhows auf manchmal wunderliche Weise doch sehr verschoben ...
Ich fühle mich sehr daran erinnert, wie sich die Lego-Bauklötzchen im Laufe der Jahrzehnte entwickelt haben. Zuviele Bausteine für zuviele SpezialZwecke.
Kann man damit noch lernen, selbständig etwas zu erarbeiten, ohne immer wieder nur auf die neuesten Bausteine warten zu müssen?
Und vor allem, ohne durch die Vielzahl der verschiedenen Bausteine dermaßen erschlagen zu werden, dass man den Spass an der Freude verliert?
Im Bereich Automatisung ist halt KOP FUP SCL etc der große Unterschied wie Programmiere ich, der Ansatz ist eigentlich doch recht begrenzt. in anderen Bereichen gibt es bei Hochsprache etliche mehr Philosophien und Möglichkeiten wie ich Programmiere
 
Ich hab noch ein Anliegen, ob einstellbar oder vielleicht ist es auch schon da und ich finde es nicht.

Englisch als Leitsprache sowie die Entwicklungs-Sprachen für SPS Programm und HMI getrennt einstellbar.
Zur Erklärung: Ich habe oft Projekte deren Zielland Deutschland oder das EU Ausland ist. Die Sprache sollte in der WinCC Entwicklungsumgebung "you get what you see" mäßig umschaltbar sein, um ohne Simulation zu sehen, ob alles passt.

Zusätzlich gehört es heute ja zum guten Ton in Englisch zu programmieren und Kommentare etc ebenfalls. Ein TIA Projekt für einen Kunden in Deutschland steht aber oft bei "Sprachen & Ressourcen" auf Deutsch, somit sind die Kommentare alle Deutsch. Verwende ich jetzt einen Baustein eines Kollegen, der in Englisch programmiert hat, sehe ich die Kommentare nicht. Wenn ich dann bei einem zukünftigen Projekt die Sprache Englisch habe, sehe ich bei dem Baustein aus dem deutschen Projekt natürlich ebenfalls die Kommentare nicht.

Die ganze Problematik entfällt bei SCL natürlich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zur Erklärung: Ich habe oft Projekte deren Zielland Deutschland oder das EU Ausland ist. Die Sprache sollte in der WinCC Entwicklungsumgebung "you get what you see" mäßig umschaltbar sein, um ohne Simulation zu sehen, ob alles passt.
Das kannst du aber jetzt schon einstellen/umschalten:
1667915238938.png
 
Das kannst du aber jetzt schon einstellen/umschalten:
Aber eben nicht getrennt für CPU und HMI.

Ich würde das auch besser finden.
Schon alleine, weil die CPU-Bausteine beim Ändern der Editiersprache (z.B. für HMI-Check der Texte) geschlossen und dann an neuer Position in der Tableiste wieder geöffnet werden. Einfach nur nervig. 🤷‍♂️
 
Aber eben nicht getrennt für CPU und HMI.

Ich würde das auch besser finden.
Schon alleine, weil die CPU-Bausteine beim Ändern der Editiersprache (z.B. für HMI-Check der Texte) geschlossen und dann an neuer Position in der Tableiste wieder geöffnet werden. Einfach nur nervig. 🤷‍♂️
+1000

Einer von die dummsten und nervigsten 'Features' von TIA.
Unsere Anlagen sind immer mit multisprachen, so ich muss immer mit dies kämpfen. Nicht nur ist die Umschaltung von das Editier-Sprache über die Dialog idiotisch umständlich (WARUM KEIN HOTKEY FÜR DIESE FUNKTION !!), aber dazu die lästige Umschaltung von das Editiersprache in die CPU wenn man mit die HMI arbeitet. Völlig unnötig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einer von die dummsten und nervigsten 'Features' von TIA.
+1
Warum müssen überhaupt Programmbausteine umschaltbare mehrsprachige Kommentare haben? Wer braucht denn sowas?? Und welcher Programmierer schreibt tatsächlich Kommentare wenn überhaupt dann auch noch mehrmals in mehreren Sprachen?
Als nächstes sollen vielleicht auch noch die Bausteinnamen je nach Sprache anders heißen? Vor Jahrzehnten hatte Excel schon mal solchen Schwachfug eingeführt...

Harald
 
+1
Warum müssen überhaupt Programmbausteine umschaltbare mehrsprachige Kommentare haben? Wer braucht denn sowas?? Und welcher Programmierer schreibt tatsächlich Kommentare wenn überhaupt dann auch noch mehrmals in mehreren Sprachen?
Als nächstes sollen vielleicht auch noch die Bausteinnamen je nach Sprache anders heißen? Vor Jahrzehnten hatte Excel schon mal solchen Schwachfug eingeführt...

Harald
Naja, ich habe öfter Kunden die auf den Kommentaren in Landessprache bestehen und da hast du dann gar keine andre Wahl als mehrsprachig zu arbeiten.
@L4sr73k
Es mag wohl sein, dass viele denken Englische Kommentare gehören zum guten Ton, doch es gibt noch sehr viele Firmen im deutschsprachigen Raum die keine englischen Kommentare sehen wollen, da brauchst du auch wieder die umschaltung.

Was mich dabei viel mehr nervt, ist die Tatsache dass nur durch Umschaltung der Sprache TIA oftmals alle Bausteine gleich wieder übertragen will und dann auch noch anfängt die DB´s zu reinitialisieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, ich habe öfter Kunden die auf den Kommentaren in Landessprache bestehen und da hast du dann gar keine andre Wahl als mehrsprachig zu arbeiten.
(...)
es gibt noch sehr viele Firmen im deutschsprachigen Raum die keine englischen Kommentare sehen wollen, da brauchst du auch wieder die umschaltung.
Darf man in demselben Kommentarfeld oder derselben Kommentarzeile nicht zwei Kommentare in zwei Sprachen schreiben? ;) Also einmal in der Sprache in der Du denkst + einmal die Sprache die der Kunde vorschreibt? So macht es Siemens ja auch in ihren Beispiel-Programmen. Da braucht man nicht umschalten und sieht den Kommentar trotzdem, egal in welcher Sprache der geschrieben ist.

Harald
 
Darf man in demselben Kommentarfeld oder derselben Kommentarzeile nicht zwei Kommentare in zwei Sprachen schreiben? ;) Also einmal in der Sprache in der Du denkst + einmal die Sprache die der Kunde vorschreibt? So macht es Siemens ja auch in ihren Beispiel-Programmen. Da braucht man nicht umschalten und sieht den Kommentar trotzdem, egal in welcher Sprache der geschrieben ist.
Das wäre durchaus mal einen Versuch wert, wobei ich mir nicht sicher bin wie das dann mit den Übersetzungen durch ein Übersetzungsbüro klappt. Besonders dann nicht, wenn die Übersetzung nur über den Umweg englisch geht, dann müsste entweder der Kommentar 3-sprachig sein oder es müssten alle deutschen Kommentare rausgelöscht werden.
 
Was mich dabei viel mehr nervt, ist die Tatsache dass nur durch Umschaltung der Sprache TIA oftmals alle Bausteine gleich wieder übertragen will und dann auch noch anfängt die DB´s zu reinitialisieren.
:unsure:
Das ist doch aber nur beim Ändern der Referenzsprache, oder?

IMHO auch ein Grund, die Umschaltung der Referenzsprache aus diesem Dialog von fausts screenshot herauszunehmen und an zentralere Stelle der Projekteigenschaften zu verschieben, um ein versehentliches Ändern durch Verwechslung der beiden zu vermeiden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Darf man in demselben Kommentarfeld oder derselben Kommentarzeile nicht zwei Kommentare in zwei Sprachen schreiben? ;) Also einmal in der Sprache in der Du denkst + einmal die Sprache die der Kunde vorschreibt? So macht es Siemens ja auch in ihren Beispiel-Programmen. Da braucht man nicht umschalten und sieht den Kommentar trotzdem, egal in welcher Sprache der geschrieben ist.
Ich persönlich find' das mit den umschaltbaren Kommentarsprachen z.B. bei KOP besser (und nutze dort auch DE und EN) und würde mir auch für SCL noch eine zusätzliche separate verschieb-, ausblend-, umschalt- sowie ex- und importierbare Kommentarspalte wünschen.
(Wer sie nicht braucht, muss sie ja nicht nutzen.)

Auch ein Grund, warum ich momentan lieber KOP mit SCL-Netzwerken nutze, als reine SCL-Bausteine.
Und das trotz des großen Nachteils:
Allerdings "gehen" dann Quellen nicht.
Irgendwas ist immer, Siemens! 😞
 
Zuletzt bearbeitet:
ein bisschen Offtopic, aber weils hier gerade diskutiert wurde:
In meinen Programmen werden viele Meldungen aus dem SPS-Programm heraus generiert, z.B. S7-Graph Meldungen, ProgrammAlarm mit Variablennamen z.B. vom Eingang etc.
Ich hab "nur" die HMI übersetzt, der Kunde war damit aber nicht einverstanden, sondern möchte alle Texte welche am HMI angezeigt werden übersetzt haben.
Wie macht ihr das? Theoretisch müsste ich jetzt alle EAs, Bausteinnamen, Schrittnamen und Transitionen etc. übersetzen (und Zielsprache ist nicht Englisch)
Ich kann dann kein Wort mehr lesen 🤷‍♂️
Und bei Variablen und Bausteinnamen etc. nutze ich natürlich viele Abkürzungen. Das macht das Übersetzen noch viel schwieriger.
 
Zuletzt bearbeitet:
Also sind wir uns an dieser Stelle fast komplett einig: Beim Sprachenmanagement bei Siemens muss sich was tun.
Ich für meinen Teil würde einfach sagen, dass soll je Gerät (SPS/HMI) umschaltbar sein und default nur eine Sprache zulassen bei der SPS. Schließlich gibt es auch nur undefinierten Text per doubleslash bei SCL. Die Sprachumschaltung in der HMI sollte per Tastenkombination gehen (Toggle language) oder whatever.

Ein lästiges Beispiel noch aus der Kategorie: Ich hab einen Kollegen, der hauptsächlich für die Bausteinentwicklung zuständig ist. So auch komplexe Antriebsbausteine. Er begann einen Baustein neu zu entwerfen, der vorher in Englisch war im TIA Portal auf Deutsch. Die Kommentare die er tatsächlich schreibt, sind größtenteils Englisch. Jetzt kopierte er Netzwerke etc pp. und irgendwann war er fertig und gab mir den Baustein. Ich hab das TIA Portal wieder auf Englisch stehen und die Kommentare und Netzwerktitel passen dann einfach gar nicht mehr.

@schwimmer
Die alten Zeiten der Maschinenprogrammierer ist langsam vorbei. Der Markt füllt sich mit Leuten, die teilweise von der Hochschule kommen und dort ab Minute 1 eingeprügelt bekommen, dass man englisch programmiert und kommentiert. So auch ich. Die Verweigerung von Englisch in diesem Fall hat, das muss man leider sagen, mit gewissen Defiziten in der Firma zu tun. Ich bin froh, dass ich für sowas nicht arbeiten muss.


Ich frage mich generell, wann und ob wir in den nächsten 10 Jahren vielleicht endlich mal, keine Ahnung, S9 CPUs bekommen, die in C/C++ oder whatever programmiert werden. Das wäre mal geil.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben