TIA TIA Portal V18 Wunschliste [Diskussion]

Status
Für weitere Antworten geschlossen.
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich mir je Funktionsgruppe in der Instanz oder zugehörigen Global DB ein Array of Bool anlege für "Hilfsmerker" bzw. P/N_Trig etc. pp, dann ist es überall dort, wo ich bisher gearbeitet habe, NICHT üblich, die Verwendungsstelle im Kommentar zu vermerken - es raubt einfach Zeit. Das führt dazu, dass man jedes mal aufs Neue gucken muss, bis zu welcher Nummer im Array eigentlich schon belegt ist.
Tja, solche "Faulheit" muß einfach bestraft werden. Wenn man für jeden "Hilfsmerker" eine Variable mit Symbol anlegt, dann muß man das nicht nachgucken.
 
Und noch etwas, das Rockwell Pendant zum FC bei Siemens lässt online Änderungen in der Live Sicht am Programm zu ohne erneuten Download.
Wenn ich Rockwell erstmals kennengelernt habe (25 Jahren her) fand ich diese Verfahren, online programmieren und testen, sehr produktiv.
Es funktioniert allerdings nur mit 'klassichen' Programmierstil, d.h. keine wiederverwendbare Programmbausteine.
Die heutigen Rockwell Pendant zu FB+IDB ist die AOI, dies ist aber sehr eingeshränkt. Es gibt z.B. keine Online Programmänderungen, auch nicht wenn die Deklarationsteil gar nicht geändert wurde. Hier ist Siemens meilenweit besser.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Andere SPS Hersteller arbeiten an dynamischen Listen mit Objekten und Siemens bringt die Einfüge Taste als Neuerung. Ein Überbleibsel aus vergangenen Jahrzehnten Toll :LOL:
 
Ich möchte bei FOR-Schleifen auch trotz verwendeten unsigned Variablen eine negative Richtung programmieren können:

FOR: In Zählschleife ausführen schrieb:
Bei der Verwendung von vorzeichenlosen Ganzzahlen ist es zudem nicht möglich, eine Schleife mit negativer Richtung zu programmieren.
Was sollte denn da dagegen sprechen?
Subtrahieren geht doch auch mit unsigned.


Und ja, ich weiß wie ich das Problem umgehe.
Aber wenn ich nun mal schon unsigned verwenden kann...
🤷‍♂️
 
Ich möchte bei FOR-Schleifen auch trotz verwendeten unsigned Variablen eine negative Richtung programmieren können:
Was sollte denn da dagegen sprechen?
Nichts sollte dagegen sprechen!
Und ja, ich weiß wie ich das Problem umgehe.
Subtrahieren geht doch auch mit unsigned.
Verrätst Du uns, wie Du das meinst, Mario?
Vielleicht auf z.B. eine WHILE-Schleife ausweichen, so dass man mit der SchleifenVariable ohnehin selbst ggfs subtrahieren muss, was ja geht?
Vielleicht statt UINT DINT verwenden? Oder statt USINT INT?
Hat sich irgendwas geändert bezüglich zulässiger DatenTypen bzw. Minimal- und MaximalGrenzen ...
- als ZählVariable bei ForSchleifen
- als Index für Arrays?
Aber wenn ich nun mal schon unsigned verwenden kann... 🤷‍♂️
Mir ist es etwas "unwohl" bei dem Gedanken, UDINT oder UINT zu verwenden - jedenfalls solange ich's nicht ausgetestet habe - und würde für Berechnungen lieber auf den nächst grösseren signed Typ (LINT bzw. DINT) ausweichen wollen.
Die unsigned Typen halte ich eigentlich nur für sinnvoll, wenn man z.B. Daten in einem umfangreichen Array ablegen und viel Platz sparen möchte.
Oder wenn sie an einer Schnittstelle so vorgegeben sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Heinileini,

der Speicherplatz einer S7-1200 ist doch sehr arg begrenzt (größere CPU scheidet zumindest momentan platz- und kostenmäßig aus).
Daher bin ich froh, wenn ich schon nur Werte zwischen 0 und max. 255 benötige, dafür dann auch nur ein Byte "verschwenden" zu können. Ist ja meist nicht nur an der einen Deklarationsstelle sondern auch an allen weiteren Verwendungsstellen. Kleinvieh macht halt auch Mist.

Außerdem muss ich mich mit unsigned auch automatisch nicht mehr selbst darum kümmern, dass der Bediener keine negativen Werte vorgibt.
Erledigt dann das HMI für mich, ich muss mich meist nur noch um das Maximum kümmern.*
Und es ist halt auch ein Unterschied, ob mir 0-127 (weil ich nix Negatives möchte) oder 0-255 zur Verfügung steht.

FOR, ARRAYs & Co. können bei der S7-1x00 mit all diesen Datentypen umgehen.
Dann möchte ich das auch voll nutzen (können).




*Hier kommt wieder der Wunsch nach projektweiten Konstanten ins Spiel.
:rolleyes:
 
Zuletzt bearbeitet:
Ich möchte bei FOR-Schleifen auch trotz verwendeten unsigned Variablen eine negative Richtung programmieren können:
FOR: In Zählschleife ausführen schrieb:
Bei der Verwendung von vorzeichenlosen Ganzzahlen ist es zudem nicht möglich, eine Schleife mit negativer Richtung zu programmieren.
Wenn man ein ARRAY[0..49999] hat und das rückwärts durchsuchen will, dann kann man nicht schreiben: FOR #i := 49999 TO 0 BY -1 DO, wenn i unsigned ist (z.B. UINT)?

Bist Du der einzige Anwender der sich daran stört? Das hat man immerhin schon in TIA V16 eingeführt und in V17 ist es immer noch so verkrüppelt drin. Ich denke das wird Siemens nun nie mehr ändern... Wer bei Siemens denkt sich solche unsinnigen Implementierungen aus?

Und was meint Siemens eigentlich mit:
Eine Kombination aus vorzeichenlosen und mit Vorzeichen versehenen Ganzzahlen in einer FOR-Anweisung ist nicht möglich.
??? :unsure:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das steht schon im TIA Handbuch von 2019 so drin.

Vielleicht meint Siemens auch einfach nur, daß Laufvariable und Anfangswert und Endwert vom selben Datentyp sein müssen, und der Inder der das implementiert hat, hat es erweitert, daß auch Schrittweite der selbe Datentyp sein muß???
 
Wenn man ein ARRAY[0..49999] hat und das rückwärts durchsuchen will, dann kann man nicht schreiben: FOR #i := 49999 TO 0 BY -1 DO, wenn i unsigned ist (z.B. UINT)?
So ist es.


Bist Du der einzige Anwender der sich daran stört?
Keine Ahnung.

Ich verwende ja sonst auch eher (D)INT für die Schleife.
Dann habe ich in diesem Fall halt USINT_TO_INT für den TO-Wert verwendet, aber übersichtlicher werden die Schleifenaufrufe dann auch nicht gerade.
Zum Sparen & Testen habe ich dann auch mal den Index selbst in USINT gewandelt und stand saß somit vor dem neuen, für mich unverständlichen Problem.
🤷‍♂️



Vielleicht meint Siemens auch einfach nur, daß Laufvariable und Anfangswert und Endwert vom selben Datentyp sein müssen, und der Inder der das implementiert hat, hat es erweitert, daß auch Schrittweite der selbe Datentyp sein muß???
Sowas Derartiges vermute ich auch.
Daher sollte das für V19/20 auch IMHO behebbar sein.
 
Tja, solche "Faulheit" muß einfach bestraft werden. Wenn man für jeden "Hilfsmerker" eine Variable mit Symbol anlegt, dann muß man das nicht nachgucken.
Die Verwendung von Array of ... ist nicht unbedingt Faulheit. Würde TIA nicht bei jeder noch so kleinen Änderung (und wenn es nur der Kommentar ist) die DBs reinitialisieren und die CPU in Stop schicken, dann bräuchte ich die Platzhalter nicht. So aber habe ich keine andere Wahl, außer vielleicht auf Merker auszuweichen. Zumindest bei nachträglichen Änderungen, wenn die Anlage nicht abgeschaltet werden kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Verwendung von Array of ... ist nicht unbedingt Faulheit.
Das hat Harald ja auch gar nicht gesagt...

Würde TIA nicht bei jeder noch so kleinen Änderung (und wenn es nur der Kommentar ist) die DBs reinitialisieren und die CPU in Stop schicken
Die Zeiten sind doch vorbei, außer du hast irgendeine uralte 1200ér / alte TIA Version / alte Firmware.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Verwendung von Array of ... ist nicht unbedingt Faulheit. Würde TIA nicht bei jeder noch so kleinen Änderung (und wenn es nur der Kommentar ist) die DBs reinitialisieren und die CPU in Stop schicken, dann bräuchte ich die Platzhalter nicht. So aber habe ich keine andere Wahl, außer vielleicht auf Merker auszuweichen. Zumindest bei nachträglichen Änderungen, wenn die Anlage nicht abgeschaltet werden kann.
Die Zeiten sind doch vorbei, außer du hast irgendeine uralte 1200ér / alte TIA Version / alte Firmware.
Wäre schön wenn es so wäre. Passiert mir bei aktuellen 1200ér + 1500er CPUs
Naja, die CPU geht ja nicht direkt in Stop, die DBs werden "nur" reinitialisiert, was bedeutet, dass alle Variableninhalte darin halt anders sind als vorher. Dadurch läuft halt die Maschine/Anlage nicht sauber weiter wie zuvor.
 
Bei Kommentaränderungen wird die SPS in STOP geschickt? Welche Kommentare meinst du denn? Kommentare im Programmcode oder z.B. im der FB-Deklarationsteil?
Bei Kommentaränderungen wird nichtmal reinitialisiert. Nur Bei Änderung des Variablennamens. bzw. beim Einfügen von Variablen mittendrinn... Am Ende könnte man ja theoretisch anfügen, wenn man die Speicherreserve nutzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deshalb wundert mich ja die Aussage von Schwimmer. Schwimmer, erzähl mal was du damit genau meinst.
"Umgangssprachlich" wird bei uns hier auch gesagt, die geht in Stop, bzw. TIA sagt, dass man wegen Initialisierung die selber in Stop nehmen soll... Die Wahrheit ist, nur die Variableninhalte von z.B. Flankenerkennungsbits oder Bits die Gesetzt/Rückgesetzt werden gehen verloren. Diese kann man vorher auch nicht durch Momentaufnahme der Aktualwerte sichern...
 
Deshalb wundert mich ja die Aussage von Schwimmer. Schwimmer, erzähl mal was du damit genau meinst.
Also ich kann es leider nicht richtig nachvollziehen.
Manchmal will TIA schon reinitialisieren wenn ich nur den Kommentar im DB ändere, manchmal wenn ich den VariablenNamen ändere. Wenn neue Variablen eingefügt werden, dann auf jeden Fall.
Und mit CPU in Stop, meine ich genau das. TIA überträgt nur wenn die CPU im Stop ist. Ich habe da allerdings noch keine nachvollziehbare Regelung erkannt.
 
Also ich kann es leider nicht richtig nachvollziehen.
Manchmal will TIA schon reinitialisieren wenn ich nur den Kommentar im DB ändere, manchmal wenn ich den VariablenNamen ändere. Wenn neue Variablen eingefügt werden, dann auf jeden Fall.
Und mit CPU in Stop, meine ich genau das. TIA überträgt nur wenn die CPU im Stop ist. Ich habe da allerdings noch keine nachvollziehbare Regelung erkannt.
naja, Kommentaränderung in nem DB führt weder zu Reinitialisierung noch zu CPU-Stop
Variablennamenänderung bzw. Variablenhinzufügung führt zu Reinitialisierung dieses DBs aber nicht zu CPU Stop.
Sehr sehr selten hab ich aber manchmal trotzdem eine CPU-Stop Anforderung, aber irgendwie 1 mal im Monat vielleicht.

Die Einzige erklärbare Ursache ist, wenn die Speicherkarte weniger als 51% Platzreserve hat... Dann kann TIA bei großen Änderungen nicht alles neues auf die Karte schieben und kann nur über Stop laden.

Wenn die Karte bei Dir nicht voll ist, dann stimmt irgendwas anderes nicht... Evtl. nutzt Du irgendwas "exotisches", Safety, CFC, Graph, Prodiag, irgendwelche Monsterspezialbausteine etc... da kann ich nix zu sagen...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben