TIA TIA Portal V19 Wunschliste [Diskussion]

Status
Für weitere Antworten geschlossen.
STRUCT ist ein Relikt und gehört imho eigentlich verboten
Wenn ein Struktur nur intern in innerhalb von STAT in ein FB verwendet wird, dann sehe ich kein Grund es als ein UDT zu packen.
UDTs verwendet man wenn dieselbe Strukturen mehrmals verwendet werden. Ein UDT ist eigentlich eine Schnittstelle, ob zwischen Programmteile, zwischen Steuerungen, oder zwischen PLC und HMI.

Was aber eine katastrophe ist, dass viele Programmierer nach wie vor STRUCT an Schnittstellen einsetzen, oder STRUCT erstellen und dann innerhalb von Bausteinen mehrfach einsetzen und dazu diese STRUCT kopieren.
Einig. Genau wenn es eine Schnittstelle ist.

Siemens Programmierleitfaden empfielt auch UDTs anstatt STRUCTs für Bausteinschnittstellen.

Zum strukturieren von statischen Variablen innerhalb von Bausteinen ist STRUCT ok
Muss also nicht verboten sein ? ;)
 
Das Thema mit den Array-Grenzen kann man eigentlich recht gut abfangen, indem man konsequent mit PLC-Konstanten oder lokalen Konstanten arbeitet, die die auch im Code verwendet. Das Thema Array-Überläufe kenne ich seit TIA V13 eigentlich gar nicht mehr.

Zum Thema FOR EACH - das ganze Konstrukt setzt einfach auf der Idee der Objektorientierung auf, die S7 einfach fehlt. Es macht einfach einen riesen Unterschied, ob man
  • eine Funktion aufruft, welche über Datentypen bzw. deren Instanzen (also Variablen) iteriert oder
  • über Objekte iteriert, die ihren eigenen Code mitbringen
Das Konstrukt mit AT auf unterschiedliche STRUCT ist ein Ansatz, den man mit C-89 gemacht hat, und der damals schon nicht gerne gesehen war. STRUCT ist ein Relikt und gehört imho eigentlich verboten - kein Wunder dass es sowas bei Rockwell oder B&R nicht gibt.
:unsure:
IMHO ist doch ein UDT letztendlich auch nur eine global bekannt gemachte STRUCT.

Wenn man die Quelle davon exportiert, steht es ja auch am Beginn und Ende der eigentlichen Deklaration, z.B.:
...
Zunächst mal ein udt für die Motorendaten:
Code:
TYPE "typeMotorControl"TITLE = MOTOR CONTROL
VERSION : 0.1
   STRUCT
      ...
   END_STRUCT;


END_TYPE
...

Also ich sehe da jetzt nicht den Unterschied in der Verwendung, nur in der Deklaration. 🤷‍♂️


Davon ab, bei mir sind es immer UDT.
Im gewünschten Fall halt UDT, die reine (namentliche) Auflistungen eines anderen UDTs enthalten, aber eben kein ARRAY.
Das Array hat Vor- und Nachteile, genau wie die namentliche (Einzel-) Auflistung.
(Arraygrößen werden bei mir auch nur per Konstanten angegeben.)

Ich hab' statt der namentlichen Auflistung auch mit ARRAY und dann anstatt der Nummer mit "sprechenden" Konstanten für die einzelnen Member gearbeitet.
Aber die globalen Konstanten widersprechen wieder der Bausteinkapselung und die überall lokal zu deklarieren ist (zumindest für mich) auch nicht der Hit.
Die globalen Konstanten über die Bausteinschnittstelle zu übergeben geht auch nicht. Ganz davon abgesehen, dass man für Konstanten auch keine STRUCT/UDT deklarieren kann.

Per AT versuche ich nun mir ein wenig von beiden Vorteilen was zu ergaunern, nehme aber dafür wieder neue Nachteile in Kauf:
Warum muss ich mich z.B. um die Größe des überlagerten Arrays kümmern?
Könnte doch die Übersetzung genau wie bei Array[*] selbständig so groß festlegen, dass alle Daten reinpassen. Das findet ja schließlich alles außerhalb der PLC und nicht zur Laufzeit statt.
Und wenn die Größe der Originaldaten und die errechnete Größe des Array nicht zusammen passen, kann der Übersetzer einen Fehler rauswerfen, wie er es jetzt bei falscher Konstante für die Arraygröße auch nur macht.


Und wie gesagt, der Übersetzer kann IMHO doch schon offline prüfen: an der Stelle geht EACH - an der Stelle ist der Einsatz nicht möglich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Startdrive:
Für uns wäre die Möglichkeit das Einheitensystem umschalten zu können sehr wichtig (S120).
p505 = 2 (Einheitensystem Bezogen/SI).
Startdrive unterstützt zur Zeit nur p505 = 1 (Einheitensystem SI).
Unsere Scout-Projekte sind alle mit p505 = 2 aufgesetzt und solange Startdrive das nicht unterstützt, können wir nicht umsteigen!
 

Anhänge

  • p0505_Einheitensysteme.png
    p0505_Einheitensysteme.png
    60,1 KB · Aufrufe: 58
Zuletzt bearbeitet:
WinCC Unified Panels:
Gebt mir endlich das PLC Codeview wieder und die GRAPH-Anzeigen!!!!!
War ja schonmal für V18 versprochen, kann ich auf den HMIs aber nicht anlegen, da die Controls nicht vorhanden sind. Oder ist das ein Addon, das bezahlt werden muß? Würde zu Siemens passen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Möglichkeit, die im HMI aktuelle Sprache in die SPS zu bekommen, auch bei Basic Panels. (Ohne Skript, obwohl die "umschalten" Funktion genutzt ist)
 
Die "Implizite Konvertierung" müsste auch bei IN/Out möglich sein!
Die Funktion ist sehr nützlich, geht zur Zeit aber nur bei IN oder Out.
 
Die Möglichkeit, die im HMI aktuelle Sprache in die SPS zu bekommen, auch bei Basic Panels. (Ohne Skript, obwohl die "umschalten" Funktion genutzt ist)
Da für WinCc Basic, Comfort und Advanced mit V17 schon das Ende der Weiterentwicklung gekommen ist wird das kaum passieren.
Mir wurde auf einer der letzten Messen gesagt, dass mit V19 auch die Basic-Panels durch Skript-fähige Unified-Varianten abgelöst werden sollen. So könnte der Wunsch also über Umwege in Erfüllung gehen
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: van
weniger unsicherer ...
Aber schön das der updater bei dir wieder tut.
Bei mir ging es die letzte Zeit meistens. Aber irgendwann ging für Monate nix...
 
Weiss nicht, ob das hier schonmal stand, wünsche mir für SCL jeweils einen einfachen/kurzen Befehl für Setzten, Rücksetzen, Positive Flanke und Negative Flanke.
Leider muss man sich ja Flanken etc. immer noch bei TIA so basteln (in SCL) wie zu Step5-Zeiten. Andere Hersteller haben da EDGE_POS / EDGE_NEG etc... Vielleicht schafft es Siemens ja im TIA V19 auch :)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben