TIA Eigenartiges Verhalten eines Array imTIA-Portal

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.414
Reaktionspunkte
4.043
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte heute ein nettes TIA-Erlebnis.
SPS: 1512F
TIA: V15.0 UPD4


Screenshot 2018-12-12 um 13.47.41.png

Bild1: Der untere Zweig ist nur zur Darstellung, normalerweise ist da nur der zweite Schließer vorhanden.
Leider hab ich den Cursor falsch stehen lassen. Schließer 1 ist hier jedenfalls "True".
Axis_Horizontal ist eine TEMP-Var und wird NUR im NW 1 des FB mit 2 beschrieben.
Also müße ja auch der zweite Schließer "True" sein, issssssser er aber nicht!

Screenshot 2018-12-12 um 13.49.58.png

Bild2: Sieht doch genauso aus, wie Bild1 oder? Nun ist auch der 2. Schließer "True".
Was habe ich gemacht? Ich habe die Temp-Var #Axis_Horizontal zu einer statischen Variable gemacht.


Hat irgendwer eine Erklärung dafür?
Mein Frustlevel ist gerade wieder recht hoch, denn in meinen an TIA angepaßten Programmen sind recht viele Array und eben auch mehrdimensionale. Besser ich verzichte in Zukunft ganz auf Temp-VAR...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das sieht arg aus... eine untaugliche/verunglückte Code-Optimierung des KOP-Compilers? Schade daß man den compilierten Code des Netzwerks nicht sehen kann. (Oder kann man den Code in PLCSIM für eine S7-300 laden und als AWL wieder herausladen?)

Wie sieht das Netzwerk davor aus? Könnte eine VKE-Verschleppung vorliegen (VKE davor nicht abgeschlossen)?
Hast Du vor dieser Stelle eine Zuweisung von Axis_Horizontal an eine andere Variable oder einen Baustein-Übergabeparameter?
Wie sieht die Zuweisung an Axis_Horizontal aus? Wird da vielleicht von einer anderen Ursprungs-Variable kopiert und danach der Ursprungs-Variable ein anderer Wert zugewiesen? (z.B. "Axis_Horizontal := xyz; xyz := 0;")
Wie ist Axis_Horizontal deklariert - als Int?

Harald
 
Ralle, programmierst du optimiert oder standard? Teste ggf. mal, ob der Fehler in standard auch auftritt.
Eventuell gibt es Parallelen zu diesem Bug. Dann sollte es in der V15.1 behoben sein.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab Alles, bis auf den HMI-Bit-Meldungs-DB auf optimiert umgestellt.

Definition der Arrays von Null bis zu einer Konstante.

PosPosOK Array[0..MaxAxis, 0..MaxPos] (Warum hab ich das eigentlich PosPosOk Genannt :confused: )

Leider konnte ich nicht viel weiter probieren, war auf einer Inbetriebnahme, die SPS ist brandneu, also max. 1-3 Monate alt.
Verschlepptes VKE ist es nicht, auch davor gibt es en KOP-Netzwerk, allerdings nutze ich in diesem FB auch SCL-Netzwerke, hier kann TIA wenigstens einmal (nach vielen Jahren) was wirklich Gutes!
Aber wer weiß schon, ob da nicht wieder neue Baustellen aufgerissen wurden.
Danke für den Hinweis auf das bereits besprochene Problem mit Temp-Var, ich hatte das irgendwie auch im Hinterkopf, hab deshalb direkt als Erstes die Temp zu eine Stat gemacht.
Da nun optimiert (LOL, mein Browser hat das gerade zu "deprimiert" verbessert :) ) und symbolisch programmiert wird, ist man ja viel mehr auf Arrays angewiesen, als früher ... und dann sowas.
 
Zuletzt bearbeitet:
@Thomas

Da sind nur ganz normale Und/Oder mit einer Spule am Ende, daher hab ich nur den Ausschnitt gewählt. Nichts Rechnen, Schieben, Vergleichen, also völlig harmlos.
Das ganze ist eine Freigabe für einen Motor, das mache ich ganz gerne in KOP/FUP. Dadurch, dass man nn SCL-Netzwerke in KOP/FUP-Bausteine einfügen kann, ist das übersichtlicher, als eine AND/OR-Orgie in SCL.
Auf #AXIS_Horizontal wird auch definitiv nur im NW 1 schreibend zugegriffen. Durch Änderung in eine STAT, war ja dann auch alles gut, also der Code wurde nicht weiter verändert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um das Nachzustellen ist es schon relevant, ob dort weitere Array-Zugriffe erfolgen, ob Zugriffe über Parameter oder über Absolutadressen.
Das was man in deinem Screenshot sehen kann, funktioniert zumindest mit der V14 in Plcsim problemlos.

Ein Vorteil von FUP gegenüber KOP ist übrigens, dass du im Online-Modus bei jedem Array-Zugriff über eine Variable als Index zusätzlich den Variablenwert mit angezeigt bekommst.
 
Um das Nachzustellen ist es schon relevant, ob dort weitere Array-Zugriffe erfolgen, ob Zugriffe über Parameter oder über Absolutadressen.
Das was man in deinem Screenshot sehen kann, funktioniert zumindest mit der V14 in Plcsim problemlos.

Ein Vorteil von FUP gegenüber KOP ist übrigens, dass du im Online-Modus bei jedem Array-Zugriff über eine Variable als Index zusätzlich den Variablenwert mit angezeigt bekommst.

Verstehe ich, ist aber schwierig, sind sicher 30 Netzwerke davor und 20 danach.
Ich geh mal einfach davon aus, in Zukunft für deratige Dinge besser statische Variablen zu nutzen. Hat auch den Vorteil, dass man im IDB online nachschauen kann.
 
Zurück
Oben