TIA Implizite Datentypkonvertierung

aleXandroW

Well-known member
Beiträge
51
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Ist es möglich einen eigenen FB zu erstellen, der für den Eingang eine Implizite Datentypkonvertierung macht wie das die Siemensbausteine (z.B. Limit) auch machen? Ich programmiere im FB ein Eingang vom Typ REAL mit dem ich eine Berechnung durchführe. Wenn ich den Baustein aufrufe kann ich ja nur eine Varible vom Typ REAL am Eingang verknüpfen. Hier würde ich gerne eine Variable DINT verknüpfen, die direkt konvertiert (dargestellt mit einem grauen Kästchen) wird.
 

escride1

Well-known member
Beiträge
725
Punkte Reaktionen
157
Zuviel Werbung?
->Hier kostenlos registrieren
Machbar wie @Mok_1988 dargestellt sollte es gehen.

Besser aber wäre es, aufgrund zu vermeidender Ungenauigkeiten und um auf verschiedenen CPUs (der Zukunft :D) lauffähig zu bleiben, einen Typ Variant zu erwarten und im FB anfänglich dann eine Abfrage zu erstellen was denn erhalten wurde (Typeof). Daraus kann dann die entsprechende genauere Umwandlung geschehen.
 

Olli_BS

Well-known member
Beiträge
314
Punkte Reaktionen
46
Wenn bei FBs das Attribut IEC-Prüfung aktiviert ist, funktioniert das einfache Beispiel wahrscheinlich nicht mehr ...
Ich persönlich mache nach schlechter Erfahrung mit der Siemens-Interpretation nur noch im Ausnahmefall implizierte Datenkonventierung, sondern fast nur noch IEC-Prüfung. Da gibt es klare Fehlermeldungen und nicht hellgelb (auf weiß!) unterkringelete Zeichen.
Langfristig ist das sauberer...
 

escride1

Well-known member
Beiträge
725
Punkte Reaktionen
157
wie bekomme ich die implizite Konvertierung im Programm hin? (Den Kasten vor IN_REAL)
Indem Du TIA-Portal und CPU (1200/1500) in der richtigen Version verwendest. Dann erscheint das Kästchen von alleine sofern es sich um eine Konvertierung handelt und erscheint nicht wenn der richtige Datentyp verlinkt wird.
 

Mok_1988

Well-known member
Beiträge
100
Punkte Reaktionen
18
Die implizite Datenkonvertierung wird nur von der 1200er und 1500er CPU unterstützt. Bei der 300er Reihe muss man noch Konvertierungsbausteine nutzen
 

Thomas_v2.1

Well-known member
Beiträge
8.128
Punkte Reaktionen
2.456
Die implizite Datenkonvertierung wird nur von der 1200er und 1500er CPU unterstützt. Bei der 300er Reihe muss man noch Konvertierungsbausteine nutzen
Das liegt aber nicht an der CPU, sondern an der Programmierumgebung. Das TIA Portal könnte bei FUP/KOP auch ganz einfach in diesen Sprachen unsichtbare Codebestandteile zur Umwandlung einfügen. Genauso wie es bei den 1200/1500er auch gemacht wird, nur bleibt dir das als Anwender verborgen.
 

NBerger

Well-known member
Beiträge
753
Punkte Reaktionen
173
Zuviel Werbung?
->Hier kostenlos registrieren
Das liegt aber nicht an der CPU, sondern an der Programmierumgebung.
Nö... das ist nicht richtig. Die 300er arbeitet mit MC7-Code (AWL) . Deshalb wird auch alles erstmal in AWL konvertieret.
"unsichtbare Codebestandteile" würden aber auch die Register und Accus ändern. Das Geschrei möchte ich nicht hören...
TIA arbeitet da mit Pseudocode, schlimm genug, was da auf der CPU wirklich steht ist von uns doch keinem bekannt.
 

Thomas_v2.1

Well-known member
Beiträge
8.128
Punkte Reaktionen
2.456
Nö... das ist nicht richtig. Die 300er arbeitet mit MC7-Code (AWL) . Deshalb wird auch alles erstmal in AWL konvertieret.
"unsichtbare Codebestandteile" würden aber auch die Register und Accus ändern. Das Geschrei möchte ich nicht hören...
TIA arbeitet da mit Pseudocode, schlimm genug, was da auf der CPU wirklich steht ist von uns doch keinem bekannt.
Auch wenn du in AWL programmierst, werden einzelne AWL-Anweisungen in mehrere MC7 Anweisungen im Hintergrund übersetzt. Manchmal wenn du Bausteine aus der SPS lädst und es da Unstimmigkeiten gibt, dann wird dir der MC7 Code angezeigt, wenn der Editor das nicht in AWL zurückübersetzen kann. Es gab da auch mal einen Trick im Simatic Manager mit dem man auf diese Ansicht umschalten konnte, aber nur Read-Only.
 

NBerger

Well-known member
Beiträge
753
Punkte Reaktionen
173
Ja das betrifft Datenbausteinzugriffe die in zwei Anweisungen zerlegt werden... ( L DB10.DBB0 => OPN DB10 und L DBB0)

Macht jetzt nicht wirklich den Braten Fett, oder?

Eigendlich ja auch egal, eh Schnee von gestern...
 
Zuletzt bearbeitet:

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
17.559
Punkte Reaktionen
5.165
Zuviel Werbung?
->Hier kostenlos registrieren
Ja das betrifft Datenbausteinzugriffe die in zwei Anweisungen zerlegt werden... ( L DB10.DBB0 => OPN DB10 und L DBB0)

Macht jetzt nicht wirklich den Braten Fett, oder?
Es gibt noch einige mehr MC7- Anweisungen, die unsichtbar ins AWL eingebaut werden, insbesondere für die Parameter-Übergabe an Bausteine.

"unsichtbare Codebestandteile" würden aber auch die Register und Accus ändern. Das Geschrei möchte ich nicht hören...
Was beim FUP/KOP-Compiler aber irrelevant ist. Wenn der Compiler dürfte, dann ließe sich durchaus auch automatische Datentyp-Konvertierung in die Baustein-Parameterübergabe einbauen.

Harald
 
Oben