TIA TIA Portal V14

Zuviel Werbung?
-> Hier kostenlos registrieren
Ist schon Komisch, Siemens hat immer Kommuniziert "Wir haben verstanden ....",
...

Das sie verstanden haben, heißt bei Siemens leider noch gar nichts, Und schon lange nicht das sie es deswegen ändern ...
Wenn ich mir nur diese riesigen F-DI/DO Baugruppen von der 1200F CPU ansehe. Was haben die alles da drin versteckt? Warum können andere alles in 45-60 mm Baugruppen verpacken und Siemens nicht, die brauchen 140mm? Arbeiten die noch mit Röhren? Die hätten sicher alle F-DI/DO auch in 1 einziges Modul bekommen können.
 
So hier mal noch ein paar Infos was bei mir ärger macht:

Wer mit dem CDK arbeitet sollte darauf achten das TIA_V14 parallel zu TIA_V13 installiert ist sonst können aktuell die Controls nicht verwendet werden.
Siemens hat da wohl nie mit einer TIA_V14 Standalone getestet.

Wer Passwort geschützte Bausteine in der Bilbiothek hat kann diese erst wieder öffnen wenn man den Bausteinen ein neues Passwort vergibt, welches aber das alte sein kann.

Legt man in einem Baustein (FUP/KOP) eine lokale Konstante vom Typ BOOL an kann man diese anlegen aber nicht nutzen.
Ist ja eigentlich sinnvoll wenn man z.B. TRUE und FALSE braucht aber nicht die Systemkonstanten nutzen darf weil der Baustein in die Bibliothek soll.


Gruß

Jens
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt will man einem schon den Variant schmackhaft machen, den es ja nur in den neuen CPUs gibt. Warum liest der dann nicht auch die neuen Datentypen aus?

B#16#00NILNullpointer
B#16#01BOOLBits
B#16#02BYTEBytes, 8 Bits
B#16#03CHAR8-Bit-Zeichen
B#16#04WORD16-Bit-Wörter
B#16#05INT16-Bit-Ganzzahlen
B#16#06DWORD32-Bit-Wörter
B#16#07DINT32-Bit-Ganzzahlen
B#16#08REAL32-Bit-Gleitpunktzahlen
B#16#0BTIMEZeitdauer
B#16#0CS5TIMEZeitdauer
B#16#09DATEDatum
B#16#0ATODDatum und Uhrzeit
B#16#0EDTDatum und Uhrzeit
B#16#13STRINGZeichenkette
B#16#17BLOCK_FBFunktionsbaustein
B#16#18BLOCK_FCFunktion
B#16#19BLOCK_DBDatenbaustein
B#16#1ABLOCK_SDBSystemdatenbaustein
B#16#1CCOUNTERZähler
B#16#1DTIMERZeit

Da fehlt doch z.B. LREAL, LWORD, LINT und WSTRING wieso verzichtet man auf diese Datentypen im Variant?
Warum nicht gleich komplettieren mit den näher definierten Datentypen UINT, SINT etc?

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Unterschied zwischen "Software (komplett übersetzen)" und "Software (Bausteine komplett übersetzen)"... :ROFLMAO:

https://support.industry.siemens.com/cs/ww/de/view/109742169
Ist denn schon der 1. April?
Was sich bei der TIA-Entwicklung in deren Köpfen abspielt...vielleicht ist es besser das nicht zu wissen.

---
Neuheiten in TIA V14:
Die Benutzerschnittstelle wurde durch eine neue sinnlose Funktion ergänzt.
 
Du musst auch jeden neumodischen Scheiss gleich auprobieren? :)
Obwohl der alte Scheiss funktioniert ja auch nicht mehr ;)
Gruss

Nunja Funktionieren tut die Variantfunktionen. Allerdings nur wenn man LREAL z.B. in der TYPEOF auswertung als LREAL angibt. Da ich aber die einen Bausteine mit dem angegebenen Hexcode erstellt habe musste ich die Funktionen jetzt etwas umbauen und alles ausschreiben. Nicht schlimm aber nervig.

mfG René
 
Du musst auch jeden neumodischen Scheiss gleich auprobieren? :)

Du musst zugeben, man kann lustige Sachen damit machen:
Ab und zu muss man auch seinen Spass haben.
Code:
FUNCTION "SKAL" : Void
TITLE = 'scaling Input'
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : VoR
FAMILY : Peripher
NAME : W_skal_R
VERSION : 1.8
// Input will be converted directly from IN to OUT allowed are Word, Int, Dint, Real, Lreal
// If Input is WORD. Function implies that it is a P: analog value
// the Linearity calculate from UGR_IN to UGR_Out and OGR_IN to OGR_OUT
   VAR_INPUT 
      EING : Variant;   // Input. IF Word then PEW scal unipolar
      OGR_IN : Real;   // Upper limit input in format REAL
      UGR_IN : Real;   // Lower limit input in format REAL
      UGR_OUT : Real;   // Lower Output = Lower Input
      OGR_OUT : Real;   // Upper Output = Upper Input
      INT_FACTOR : Real;   // Faktor for the Integer Input (Normaly 10.0) means 13.7 REAL out is 137 for INT
      OBJ_AH : Bool;   // Manualoverride aktiv inaktiv
   END_VAR


   VAR_OUTPUT 
      FE : Bool;   // Fehler bei PEW Wandlung
   END_VAR


   VAR_IN_OUT 
      AUSG : Variant;   // Output scaled (Format REAL)
   END_VAR


   VAR_TEMP 
      OGR_IN_MAX : Bool;   // Input >= Upper limit input
      UGR_IN_MAX : Bool;   // Input <= Upper limit input
      EING_REAL : Real;   // Input im format REAL
      EING_LREAL : LReal;
      EING_WORD : Word;
      EING_INT : Int;
      EING_DINT : DInt;
      LIMIT_R : LReal;   // limited input (for calculation)
      LIM_X_UG : LReal;   // temporary VAR for limiter
      LIM_X_OG : LReal;   // Dito
      Status : Word;
      Ausg_LREAL : LReal;
      EING_REAL_PEW : Real;
   END_VAR




BEGIN
	CASE TypeOf(#EING) OF
	    Word: // Wenn Wort, dann behandeln wie einen Analogeingang
	        VariantGet(SRC := #EING,
	                   DST => #EING_WORD);
	        #Status := SCALE(IN := WORD_TO_INT(#EING_WORD), HI_LIM := #OGR_OUT, LO_LIM := #UGR_OUT, BIPOLAR := 0, OUT => #EING_REAL_PEW);
	        #FE := (#EING_WORD = w#16#7FFF) OR (#EING_WORD = w#16#8000);
	        IF #FE THEN
	            #EING_REAL_PEW := 0.0;
	        END_IF;
	    Int: // Wenn Int dann in REAL wandeln
	        VariantGet(SRC := #EING,
	                   DST => #EING_INT);
	        #EING_LREAL := INT_TO_LREAL(#EING_INT);
	        #FE := 0;
	    DInt: // Wenn DINT dann in LREAL wandeln
	        VariantGet(SRC := #EING,
	                   DST => #EING_DINT);
	        #EING_LREAL := DINT_TO_LREAL(#EING_DINT);
	        #FE := 0;
	    Real: // Wenn Real dann So Uebernehmen
	        VariantGet(SRC := #EING,
	                   DST => #EING_REAL);
	        #EING_LREAL := #EING_REAL;
	        #FE := 0;
	    LReal: // Wenn LReal dann So Uebernehmen
	        VariantGet(SRC := #EING,
	                   DST => #EING_LREAL);
	        #FE := 0;
	    ELSE
	        #FE := 1;
	        #Status := 12; // Nicht unterstütztes Format
	END_CASE;
	
	(*sorting limits for calculation*) 
	IF #UGR_IN < #OGR_IN THEN
	    #LIM_X_UG := #UGR_IN;
	    #LIM_X_OG := #OGR_IN;
	    
	ELSIF #OGR_IN <= #UGR_IN THEN
	    #LIM_X_UG := #OGR_IN;
	    #LIM_X_OG := #UGR_IN;
	END_IF;
	
	(*input should be limited*)
	#LIMIT_R := LIMIT(MN := #LIM_X_UG, IN := #EING_LREAL, MX := #LIM_X_OG);
	
	(*calculating limited data*)
	IF NOT #OBJ_AH THEN
	    IF NOT (TypeOf(#EING) = Word) THEN
	        #Ausg_LREAL := ((#OGR_OUT - #UGR_OUT) / (#OGR_IN - #UGR_IN)
	        * #LIMIT_R
	        + (#OGR_OUT - (#OGR_OUT - #UGR_OUT)
	        / (#OGR_IN - #UGR_IN) * #OGR_IN));
	    ELSE
	        #Ausg_LREAL := #EING_REAL_PEW;
	    END_IF;
	    
	    CASE TypeOf(#AUSG) OF
	        Real:
	            VariantPut(SRC := LREAL_TO_REAL(#Ausg_LREAL),
	                       DST := #AUSG);
	        Int:
	            VariantPut(SRC := LREAL_TO_INT(#INT_FACTOR * #Ausg_LREAL),
	                       DST := #AUSG);
	        LReal:
	            VariantPut(SRC := #Ausg_LREAL,
	                       DST := #AUSG);
	        DInt:
	            VariantPut(SRC := LREAL_TO_DINT(#INT_FACTOR * #Ausg_LREAL),
	                       DST := #AUSG);
	    END_CASE;
	END_IF;
	
	
END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt will man einem schon den Variant schmackhaft machen, den es ja nur in den neuen CPUs gibt. Warum liest der dann nicht auch die neuen Datentypen aus?


Da fehlt doch z.B. LREAL, LWORD, LINT und WSTRING wieso verzichtet man auf diese Datentypen im Variant?
Warum nicht gleich komplettieren mit den näher definierten Datentypen UINT, SINT etc?

mfG René


Kannst du nicht einfach bei deinem Beispiel mit der Case Anweisung den Status von TypeOf beobachten um an den Hex Code des Datentyps zu kommen?
 
Zuletzt bearbeitet:
Neuheiten in TIA V14:
Die Benutzerschnittstelle wurde durch eine neue sinnlose Funktion ergänzt.
Vielleicht wollte man nur unterstreichen, daß diese Funktion eine der wichtigsten Funktionen überhaupt in TIA ist und hat den Aufruf gleich doppelt vorgesehen. Wenn man bei der 5-Minuten-Automatisierungs-Hetze nur irgendwas klickt, dann hat man nun die doppelte Chance, die richtige Funktion zu treffen ;) :ROFLMAO:

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
TypeOf gibt leider keinen Wert zurück und funktioniert nur im Zusammenspiel z.B. mit CASE OF oder Vergleichen.

mfG René

JA aber im Status von TypeOf steht immer ein Wert der Deckungsgleich mit den Werten aus der Datentypliste ist.

TypeOf(LReal).jpg


Hat sich erledigt der Tooltip zeigt das es die type_id ist.
 
Zuletzt bearbeitet:
Du musst zugeben, man kann lustige Sachen damit machen:
Ab und zu muss man auch seinen Spass haben.

Also ich würde den Variant niemals so einsetzen wie du es getan hast. Nämlich dass sich das Verhalten einer Funktion ändert, wenn ein anderer Datentyp angeschaltet wird. Bei Int, Real. LReal am Eingang wird nicht umgerechnet, bei Word schon. Bei Real, LReal am Ausgang wird nicht umgerechnet, bei Int, Dint schon. Stell dir vor jemand fremdes muss sich in den Programm einarbeiten, und trifft dann auf mehrere solcher Bausteine. Und wenn jemand die Funktion verwenden will, muss er schauen welche Datentypen diese überhaupt verarbeiten kann. Das sieht man ja nur wenn der Code in der SPS ist und etwas nicht funktioniert.

Wenn es unbedingt Variant sein muss, dann würde ich es nur einsetzen wenn sich die eigentliche Funktion nicht ändert. Z.B. einen Max-Wert aus mehreren Eingängen holen.

Als ich das erste Mal bei Siemens was von Variant gelesen habe hats mir schon davor gegraut, dass das wahrscheinlich inflationär an jeder noch so unsinnigen Stelle zu Einsatz kommt.

Gleiches gilt für den Passwortschutz, wo jetzt jeder meint er müsste seine trivialen Dreizeiler mit Passwort schützen. Das habe ich schon bei einer TIA WinCC Prof. Visualisierung gesehen, wo wirklich jedes kleinste Skript mit Passwort geschützt wurde. Sollen die Kunden mit solchen Firmen glücklich werden. Das wird in ein paar Jahren zu etlichen nicht mehr wartbaren Anlagen führen.
 
Also ich würde den Variant niemals so einsetzen wie du es getan hast. Nämlich dass sich das Verhalten einer Funktion ändert, wenn ein anderer Datentyp angeschaltet wird. Bei Int, Real. LReal am Eingang wird nicht umgerechnet, bei Word schon. Bei Real, LReal am Ausgang wird nicht umgerechnet, bei Int, Dint schon. Stell dir vor jemand fremdes muss sich in den Programm einarbeiten, und trifft dann auf mehrere solcher Bausteine.

Eine vernünftige Beschreibung sollte schon sein. Und wenn der Baustein funktioniert, ist es ja eigentlich egal wie komplex er wirklich ist.

Wenn es unbedingt Variant sein muss, dann würde ich es nur einsetzen wenn sich die eigentliche Funktion nicht ändert. Z.B. einen Max-Wert aus mehreren Eingängen holen.

Hättest du da mal n Beispiel damit man sich was drunter vorstellen kann?

Mir bringt übrigens der Knowhow schutz überhaupt nix. Meine Bausteine sind üblicherweise recht simpel gestrickt. Der Weg zum kompletten Programm ist das was üblicherweise richtig Zeit kostet. Und da nützt kaum jemanden wenn er das komplett sieht da eh jede Anlage andere Funktionen hat.

Ich kann mir vorstellen, das bei einem Maschinenbauer der das komplexe Programm z.B. eines Roboters schützen will, vielleicht ein Knowhow Schutz sinnvoll ist.
Aber da dürfte das Programm wieder so komplex sein, dass ein einfaches kopieren nicht wirklich viel bringt.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine vernünftige Beschreibung sollte schon sein. Und wenn der Baustein funktioniert, ist es ja eigentlich egal wie komplex er wirklich ist.
Ich bin kein Freund von solchen eierlegenden Wollmillchsäuen. Da bin ich eher bei der Unixphilosophie: Schreibe deine Programme so, dass diese nur eine Aufgabe erledigen, aber diese gut machen.

Ich würde erstmal nicht damit rechnen, dass wenn ich den Datentyp einer Variable verändere, ich das Programm zwar noch fehlerfrei übersetzen kann, aber es nachher etwas völlig anderes macht.

Hättest du da mal n Beispiel damit man sich was drunter vorstellen kann?
Bei Step7 die IEC-Funktionen für Limit, Min und Max.
In SCL werden diese Funktionen nicht verwendet sondern sozusagen aufgelöst (inline). Prinzipiell war die ganze Zauberei auch schon mit dem Any möglich, es hat nur glücklicherweise niemand großartig genutzt.
 
Sodala jetzt mal meine V14 Erfahrungen dieser Woche ...
Ein Testweise migriertes Projekt (Step7) war am nächsten Tag nicht mehr zu öffnen, bisher k.a. warum.

Ich hatte einen "älteren" Baustein aus dem migrierten Projekt kopiert, hatte dabei aber leider übersehen, das in dem Baustein 2 KOP-Netzwerke als AWL standen -nach der Migration-, was eine 1200er aber natürlich nicht kann.
Der Baustein wurde mit einem roten Symbol gekennzeichnet, jedoch das Übersetzen der Software führte dann nicht etwa zu einer sinnvollen Fehlermeldung, sondern zum Totalabsturz von TIA.

Der Hammer dann aber heute (CPU 1214C mit FW4.2 + ein paar Murr Profinet IP67 IOs):
- Von Gestern auf Heute habe ich ein paar Bausteine geändert
- Heute dann eingespielt ... Meldung von TIA CPU Stop nötig wg. Anzahl geänderter Bausteine ... bestätigt ... CPU rote Lampe, interner Systemfehler
- Einzige Abhilfe die noch half, über erreichbare Teilnehmer, die CPU vollständig auf Werkeinstellungen zurücksetzen
Okay, war zugegebenermaßen bei einer Neu-Inbetriebnahme nicht so tragisch ... aber an einer schon produktiven Anlage wäre das knapp vorm Supergau.

Fazit:
V14 scheint im Moment definitiv noch ein paar Alpha-Teile zu enthalten, also vor ernster Verwendung besser die nächsten 2-3 Updates noch abwarten.


P.S. Sekundärfrage:
SmartServer gibt es jetzt ja auch bei den Basic-Panels, scheinbar gibt es da jetzt auch eine eigene Lizenz dafür, (eine testweise aufgespielte "Smart Server for Simatic Panels" Lizenz führte immer noch zur Meldung der fehlenden Lizenz.
Hat da irgendwer eine Bestellnummer, im CA01 habe ich jetzt nämlich nur die bisher bekannten gefunden

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@MSB
ich finde es schon fast Masochistisch, mit der SW überhaupt noch zu arbeiten. Das Risiko eines Angestellten in einer Firma mit TIA
unter solchen Bedingungen zu Programmieren ist zumindest für den Mitarbeiter nicht finanziell ein Problem wenn er auf der Baustelle
ein Problem hat. Er muss dann vielleicht einen Tag länger bleiben. Aber für einen Freelancer ist es immer mehr (mit jeder vorangegangenen
TIA Zwischenversion in der er vielleicht etwas ändern muss und vorher gar nicht die ehemals verwendete Version weiß) ein großes
Problem die Risiken abzuschätzen. Ich habe zwar ne gute Firmenhaftpflicht, aber dennoch muss ja die Kiste nachher wieder laufen.
Ich empfinde es nahezu eine alptraumhafte Vorstellung, das kurz vor der Rückfahrt oder gar dem Rückflug die SPS crashed wegen
irgendeinem banalen Fehler, der in Classic folgenlos geblieben oder nie aufgetreten wäre.

Die Software ist Inkonsistent oder sollte man sagen Inkontinent? ;-)
 
Muss mal blöd Fragen. Habe die V14 jetzt im Rahmen meines SUS erhalten und wollte es auch direkt mal installieren. Leider nicht möglich, verlangt ein 64Bit System. Wird V14 tatsächlich nur als 64Bit Version herausgegeben oder habe ich die falsche Software erhalten? Nutze Win7/32Bit mit V12/V13.
 
Zurück
Oben