TIA Problem mit Querverweisen auf IEC-Timer

M-Ott

Level-3
Beiträge
1.774
Reaktionspunkte
375
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin bei der Suche zwar schon auf ähnliche Probleme gestoßen, aber nicht auf exakt dieses:
SW ist TIA V13 Upd 6 Basic. Bei der Suche nach den Verwendungsstellen eines IEC-Timers in SCL in einem Programm für S7-1200 ist mir aufgefallen, dass nicht alle Verwendungsstellen aus der Auflistung im Info-Fenster heraus angesprungen werden.

z.B.
Code:
IF "Step16" OR
  "Step17" AND
   "IEC_Timer_Y4minRelease".Q = true THEN
wird angesprungen,
Code:
"IEC_Timer_Y4minRelease".TON(IN:="Q0.4",PT:=t#50ms);
wird nicht angesprungen.

Diese beiden Codestellen befinden sich im selben Baustein, ich bekomme für den Baustein zwei Verwendungsstellen des Timers aufgelistet, eine mit Zugriff lesend, eine mit Zugriff Instanz-DB, das ist völlig korrekt. Allerdings springt der Cursor bei beiden Verwendungstellen in die gleiche Programmzeile, nämlich die Stelle im ersten Beispiel, nur einmal auf den Bausteinname und einmal auf Q.

Dieses Verhalten lässt sich mit allen Timern reproduzieren, die einen Zugriff lesend und Instanz-DB im selben Baustein haben.

Gibt es noch mehr Leute, die dieses fehlerhafte Verhalten reproduzieren können?
Gibt es dafür eine Lösung oder muss ich das einfach hinnehmen?
 
Ergänzung:
Ich habe das Verhalten gerade noch ein wenig untersucht:
  • Es tritt bei jedem FB auf, nicht nur bei "System"-FBs
  • Bei Klick auf den Instanz-DB-Zugriff springt der Cursor immer auf die erste Verwendungsstelle im aufrufenden Baustein, unabhängig davon, wie oft der FB im jeweiligen Baustein verwendet wird.
 
Hallo M-Ott,

wurde die Problematik schon behoben ? Oder gibt es Abhilfe?

Ich habe das selbe Problem bei TIA V16 mit einer S7-1516-3PN/DP.
Der Querverweis geht nur auf meine verwendeten Timerausgänge (z.B. Timer[x].TON.Q)

Gruß
Dantical
 
Hallo M-Ott,

wurde die Problematik schon behoben ? Oder gibt es Abhilfe?

Ich habe das selbe Problem bei TIA V16 mit einer S7-1516-3PN/DP.
Der Querverweis geht nur auf meine verwendeten Timerausgänge (z.B. Timer[x].TON.Q)

Gruß
Dantical

Du kannst immerhin mit Ctr F F die Textsuche über ALLES öffnen und nach allen Textvokommen mit dem gewünschten Text suchen. Da sind dann zwar auch Deklarationen IN und OUT mit gleichem Text etc drin, aber man findet so eigentlich alles.
 
Also ich hab in einem Global DB ein array of iec timer angelegt. Im FC wird dann
DB. Timer(x). TON.(IN:= Y, PT:=T#5S),
aufgerufen. Ebenso woanders
DB. Timer(x). Ton. Q.
Wenn ich im DB bei dem jeweiligen Timer nun auf IN oder PT klicke wird mir kein Querverweis angezeigt. Beim Q schon.

Von dem Problem hab ich jetzt schon oft gelesen, jedoch keine Lösung.

Ich dachte auch das das schon mal funktioniert hätte 😭
 
.. Wenn ich im DB bei dem jeweiligen Timer nun auf IN oder PT klicke wird mir kein Querverweis angezeigt. Beim Q schon...
Das ist bei mir auch so, wäre mir jedoch nie aufgefallen. Ich würde mir die Querverweise der Instanz anzeigen lassen. Wenn ich allerdings "IN" oder "PT" im Programm separat verwende, dann erhalte ich auch hier Querverweise wie bei "Q".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Dagobert,

Die Variante dass ich die beiden Parameterversorgungen IN und PT einzeln aufrufe also
Timer (x). TON (IN:= y) ;
und
Timer (x). TON(PT:=T#5s) ;
Funktioniert bei mir leider auch nicht.
Da wird immer beim übersetzen ein Fehler generiert das man diese Parameter nicht alleine versorgen kann.

🤐
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Variante dass ich die beiden Parameterversorgungen IN und PT einzeln aufrufe also
Timer (x). TON (IN:= y) ;
und
Timer (x). TON(PT:=T#5s) ;
Funktioniert bei mir leider auch nicht.
Für Letzteres gibt es die Anweisung:
Code:
PRESET_TIMER(PT:=_time_in_, TIMER:=_iec_timer_in_);
Für das Erste gibt es auch eine Anweisung in FUP/KOP aber scheinbar nicht in SCL.
 
Man könnte das Programm auch so schreiben, daß man die Parameterversorgung der Timer nicht zerpflückt, sondern nur den angeschalteten Variablen Werte zuweist. Dann kommt man auch weniger in Versuchung, die Timer-Instanzen nur bedingt aufzurufen. Anscheinend hat Siemens es aber aufgegeben, Programmierer zu ordentlichem Programmierstil zu zwingen und erfindet immer mehr unnötige Anweisungen und Verhaltensweisen (wie z.B. Timer-Instanz wird aktualisiert nur bei Zugriff auf Q), damit die komischen Programmierer-Konstrukte rund um Timer trotzdem funktionieren ;) :ROFLMAO:

Harald
 
Man könnte das Programm auch so schreiben, daß man die Parameterversorgung der Timer nicht zerpflückt, sondern nur den angeschalteten Variablen Werte zuweist. Dann kommt man auch weniger in Versuchung, die Timer-Instanzen nur bedingt aufzurufen. Anscheinend hat Siemens es aber aufgegeben, Programmierer zu ordentlichem Programmierstil zu zwingen und erfindet immer mehr unnötige Anweisungen und Verhaltensweisen (wie z.B. Timer-Instanz wird aktualisiert nur bei Zugriff auf Q), damit die komischen Programmierer-Konstrukte rund um Timer trotzdem funktionieren ;) :ROFLMAO:

Harald

Harald, warum schreibst du heute hellgrau oder silbern? Weil Sonntag ist?
 
So sieht das bei mir aus (TON im FB deklariert):
Code:
IF #Step16 OR
    #Step17 AND
    #IEC_Timer_Y4minRelease.Q = TRUE THEN
Code:
#IEC_Timer_Y4minRelease(IN:="Q0.4",PT:=t#50ms);

So sieht das bei mir aus (TON im globalem DB deklariert):
Code:
IF #Step16 OR
    #Step17 AND
    "DatenbausteinFuerTimer".IEC_Timer_Y4minRelease.Q = TRUE THEN
Code:
 "DatenbausteinFuerTimer".IEC_Timer_Y4minRelease(IN:="Q0.4",PT:=t#50ms);

Deklaration TON_Time.jpg

Alle Querverweise funktionieren korrekt (15.1.0.2).

Ich gehe davon aus, dass der Timer anders deklariert ist:
Deklaration IEC_Timer.jpg


Wahrscheinlich hat das TIA-Portal mit dieser Deklaration ein Querverweisproblem?


Gruß
Robert
 
Moin,

Weil der Beitrag nicht direkt das angefragte Querverweis-Problem beantwortet, also möglicherweise etwas off topic ist.

Harald

Könnte man bei dem neuen SPS-Forum vielleicht zu einem Betrag Attribute setzen (OffTopic, Frage, Beschreibung, Vermutung, WISSEN, ...), so dass Beiträge mit entsprechenden Attributen vom lesenden herausgefiltert werden können?
Im Prinzip macht Harald ja genau das. Aber es ist komfortabler, mit einem Klick ein Attribut zu setzen. Dann kann man das auch sinnvoll nutzen (Filter).

VG

MFreiberger


Mir ist gerade noch so ein Attribute wie: "Information an einen Moderator" eingefallen.
 
Zuletzt bearbeitet:
Zurück
Oben