TIA 1500er Merkwürdigkeiten

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
folgende Meldung nach dem Übersetzen erscheint " Ausgangsparameter xy wird möglicherweise nicht geschrieben !

Habe folgendes geschrieben

O "A"
SPB M00

O "B"
SPB M01

O "C"
SPB M02
BEA


M00 : L Irgendwas A
T in irgendwas A
BEA

M01 : L Irgendwas A
T in irgendwas B
BEA

M02 : L Irgendwas A
T in irgendwas C

Offensichtlich schmeckt ihm nicht mehr das BEA, weil nicht zwangsläufig alle Netzwerke durlaufen werden
Muss ich jetzt wegen einer 1500er alles neu überdenken.
Gruß
 
Nö das hat nix mit der 1500er zu tun. Aber Ausgangsparameter bedingt zu beschreiben ist halt unschön. Wenn womöglich keine der Bedingungen erfüllt ist bleibt dein Ausgangsparameter unbearbeitet was zu ungewolltem Verhalten führen kann.

Also entweder den Parameter zwingen initialisieren am Bausteinanfang
Code:
L 0
[COLOR=#333333]T in irgendwas A
[/COLOR][COLOR=#333333]T in irgendwas B[/COLOR]

oder IN/OUT nutzen.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, den Fehler hatte ich bisher nur wenn wenn ich vor eine Zuweisung (=) nicht explizit das VKE gesetzt habe durch set z.b.. Einzige was mir auffällt sind die "Oder" Anweisungen, versuch mal die durch "Und" zu ersetzen.
 
Hallo, den Fehler hatte ich bisher nur wenn wenn ich vor eine Zuweisung (=) nicht explizit das VKE gesetzt habe durch set z.b..
Das VKE hat keinen Einfluss auf =

Einzige was mir auffällt sind die "Oder" Anweisungen, versuch mal die durch "Und" zu ersetzen.
Das hat keinen Einfluss darauf ob ein Sprung bedingt durchgeführt wird, nur die Bedingung ist dann anders. Und das Oder hat womöglich einen Grund, wenn das mit Und auf einmal funktioniert verschleiert man damit vermutlich nur ne VKE verschleppung.

mfG René
 
@Outrider
"in Irgendwas A/B/C" wird kraft deiner Programmierung u.U. überhaupt nicht beschrieben, und ist imho somit bei optimierten Bausteinnen imho Default 0, oder bei nichtoptimierten Bausteinen dann halt eben wirklich "irgendwas".
Wenn du das vermeiden willst, muss In Irgendwas A/B/C ein IN-OUT Parameter werden.

TIA versucht halt in gewisser Weise den Programmierer vor seiner eigenen Unsauberkeit zu schützen, was mal sinnvoller wie hier, und mal unsinnvoller ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Offensichtlich schmeckt ihm nicht mehr das BEA

Nein, es liegt nicht direkt am BEA, sondern an den bedingten Sprüngen zu den Ausgangszuweisungen, welche auch alle nicht erfüllt sein könnten und dann gäbe es gar keine Ausgangszuweisung.

TIA-gerechte Programmierung bei bedingten Ausgangszuweisungen ist, zunächst Zuweisungen an lokale Variablen (z.B. Static) vorzunehmen und am Ende ein immer durchlaufenes Kopieren von der lokalen Variable auf den Ausgangsparameter. Dann gibt es auch keine TIA-Warnung mehr.


Also entweder den Parameter zwingen initialisieren am Bausteinanfang
Davon würde ich abraten. Wenn es ein Parameter ist der per Referenz (Pointer) übergeben wird, dann erhält er dadurch zwei Zuweisungen, was dazu führen kann, daß der Wert in einer HMI/Visu flackert.

Harald
 
Davon würde ich abraten. Wenn es ein Parameter ist der per Referenz (Pointer) übergeben wird, dann erhält er dadurch zwei Zuweisungen, was dazu führen kann, daß der Wert in einer HMI/Visu flackert.

Ein Parameter der per Pointer übergeben wird, wird von TIA ja nicht angemerkt wenn man ihn nur bedingt beschreibt.
Zumindest wäre mir bisher nix aufgefallen. Mit der HMI greift man ja auch auf ne Instanz oder einen DB zu die müssen ja nicht initialisiert werden.

Motzt TIA denn auch Ausgänge eines FBs an? Der wäre ja in der Instanz und somit nicht zufällig beim nächsten Zyklus.

mfG René
 
Hallo René, das Problem bei der S7-1500 ist, daß HMI-Kommunikation nicht im Zykluskontrollpunkt stattfindet, und deshalb Variablen (auch Instanz-Variablen!) zwischen der vorbeugenden/provisorischen Initialisierung und der endgültigen Zuweisung gelesen werden können, was auf dem HMI zu sichtbarem Flackern von Anzeigen führt. Darauf wollte ich eigentlich nur hinweisen - nicht, daß womöglich jemand denkt, generelles vorbeugendes Initialisieren von Ausgangsparametern wäre die perfekte immer passende Lösung.

Die nicht gute Doppel-Zuweisung kann sich auch negativ auswirken, wenn auf Variablen in unterschiedlichen OB-Ebenen (Tasks) zugegriffen wird.

Harald
 
Zurück
Oben