TIA SR FlipFLop speichert Werte nicht

matze93

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Ich habe ein Problem mit TIA V13.

Und zwar:
Ich habe ein SR-FF, dass mit dem "Taster Start" gesetzt und mit dem "Taster Stopp" oder der Static Variable "Störung" rückgesetzt werden soll.

Solange ich den Taster Start drücke, bleibt das FF gesetzt.
Sobald ich disen nicht drücke, ist das FF bzw. die Static Variable "Anlage läuft" nicht gesetzt, so als ob ich es zurückgesetzt hatte,
obwohl weder die Variable Störung gesetzt ist/war, noch der Taster Stopp gedrückt wurde.

Eigentlich sollte die Variable Anlage läuft (Typ Bool) true bleiben.
Sie wurde als remanent und im Baustein Hilfsfunktionen DB deklariert.

Woran kann das liegen?

Mein Programm besitzt insgesamt 12 FBs mit 12 DBs.
Jeder Ausgang wurde nur einmal zugewiesen.
Jedes Netzwerk besitzt nur eine Zuweisung.
In main-OB wurden alle FBs eingetragen. Sie und ihre DBs sind gültig (nicht rot hinterlegt).
Die FBs sind untereinander verknüpft, da sie gegenseitig auf ihre DBs zugreifen.

Z.B. die Variable Anlage läuft (Hilfsfunktionen DB) wird in fast jeder FB verwendet.

Die SPS wurde komplett resetet, das Programm neu übersetzt und neu geladen.

Dennoch liegt der Fehler vor.

Wie kann das sein?

Ein paar Fragen, die mir weiterhelfen können:
1. Können mit Static deklarierte Variablen Merker ersetzen? Das versuche ich zumindest..
2. Müssen Static Variablen besonders konfiguriert werden, wenn andere FBs darauf zugreifen sollen?
(Vergleiche mit: https://support.industry.siemens.co...ktmerkerbits-vermieden-werden-?dti=0&lc=de-WW)

Vielen Dank
Matthias
 
1. Ja, geht problemlos.
2. Mit anderen FBs in der Instanz rumworschteln ist möglich, aber in meinen Augen absolut unschön, und nach Möglichkeit zu vermeiden.
Wobei TIA mit seinen manchmal zum Glück, manchmal leider vorhandenen Konsistenzzwang hier ein paar Problematiken ausgeräumt hat.
Aber um nur die Frage zu beanworten: Ja, geht, und ohne besondere Tätigkeiten.

Zu deinem eigentlichen Problem:
Screenshot FB + Schnitstelle
Screenshot Aufruf
Alernativ kannst du auch dein Projekt anhängen.
Offengestanden muss ich zugeben, verstehe ich nicht ganz, was du mit "Hilfs-DB" meinst, bzw. wie du den verwendet hast.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das muss jetzt gar nichts mit deinem Problem zu tub haben ... aber ... hast du es mal mit Programm komplett neu übersetzen und dann übertragen in die CPU versucht.
Bei TIA landet nicht unbedingt immer alles, so wie du es programmiert hast, in der CPU ... eine Status-Anzeige bekommst du dann aber trotzdem ...

Gruß
Larry
 
@Larry:
Ja, wie gesagt, habe die SPS komplett resettet, die DBs gelöscht, neu erzeugt, Programm neu übersetzt und neu übertragen.

@MSB:
Ich kann morgen während der Arbeit paar Bilder hier posten.

Zum klareren Verständnis:
Ich mache nur eine Zustandsabfrage von Variablen wie "Anlage läuft" in anderen FBs.
Ich schreibe nicht am Wert von Variablen rum.

Wie gesagt, die Zuweisung jedes Ausgangs, findet nur einmal statt.
Genauso mache ich das auch mit "Status-Variablen".

Kurzes Beispiel:
Der FB Kamera besitzt ein Kamera DB mit Variable Fehler,
der FB Höhenmessung besitzt ein Höhenmessung DB mit Variable Fehler.

Mit Kamera.Fehler oder Kamera.Höhenmessung wird das FF Störung (Hilfsfunktionen FB mit Hilfsfunktionen DB) gesetzt,
mit Reset oder Grundstellung erreicht resettet.

Ist Störung gesetzt, werden alle Motoren gestoppt.

Ist keine Störung vorhanden und Start gedrückt, wird Anlage gestartet.

Das hat nicht funktioniert. Daher habe ich den Baustein ersteinmal umgebaut und festgestellt,
dass das FF gar nichts macht.
 
Als ich dein Problem gelesen habe, war mein erster Gedanke, "Da wird er irgendwo die Variable neu zuweisen".

Auch jetzt nachdem ich alles gelesen habe, glaube ich, dass es sowas in der Art sein muss.
Mit Symbolischer Adressierung kann es ja schonmal nicht sein, dass du die Variable mit einem Word überschreibst, aber kann es sein, dass du in einem anderen Baustein diese Variable "aus Versehen" überschreibst? Du also anstatt einer Abfrage mit Strg+F2 eine Spule/Zuweisung mit Strg+F7 benutzt hast?

Was noch sein könnte ist, dass du die Variable im Temp Bereich des FBs deklariert hast?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

nein, Variable ist als Static definiert, Querverweise zeigen nur noch lesende Abfragen, keine schreibenden.

Ich habe irgendwie das Gefühl, dass es irgendwie mit den DBs kracht.

Mein Versuch heute morgen wird jetzt über einen global DB führen.
Verliert mein Programm an Übersicht.

Kommen viele Variable zusammen
 
Bei den Querverweisen in TIA bekommt man da nur die lokalen Verwendungsstellen oder auch die vollqualifizierten externen Zugriffe auf die DB-Adressen? In Step7 classic würde ich mal nach der kompletten Adresse suchen (z.B. DB12.DBD34) und nach der Verwendung des DB (z.B. DB12) - geht das auch in dem TIA?

Harald
 
Irgendwie hab ich immer noch so den Eindruck, das du entweder etwas grundsätzlich missverstehst oder falschmachst.
Ja, es wird mit den DBs krachen, aber eher weil du, der Programmierer, diese nicht richtig nutzt ... egal was man jetzt von TIA halten möge, so grundsätzliche Fehler würde ich jetzt mal ausschließen.

Aber gut, führen wir halt noch ein wenig esoterische Diskussionen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Fehler gefunden und behoben.

Hat nicht mit meinem Programmierstil, sondern mit ein Problem von TIA zu tun.

Neues Projekt anlegen. Hardware-Konfig komplett neu schreiben.
FBs neu erstellen, Variablen neu deklarieren, Netzwerke reinkopieren, DBs neu erstellen.
Übersetzen und in SPS laden. Funktioniert.

Kopieren von FBs funktionierte nicht. Auch wenn nichts rot markiert wurde und übersetzen klappt.
FBs und Variablen müssen wie bei einem neuen Programm erzeugt werden, sozusagen TIA bekannt werden,
aber das Kopieren von Netzwerken eines alten in ein bestehendes Projekt funktioniert.

Dasselbe mit der Hardware-Konfig. Neuschreiben und deklarieren der In-/Outputs funktioniert.
Kopieren von einem alten Projekt nicht.

Sowohl die Hardwarekonfig als auch die Bausteine machen eigentlich genau dasselbe wie vorher.
Der Unterschied, da kein Übersetzungsfehler angezeigt und alle Variablen im DBs vorhanden und von FBs erkannt,
ist eigentlich nicht ersichtlich.

Aus einen mir unerklärlichen Grund hat TIA beim Laden eines neuen Programms in die SPS,
trotz zuvor ausgeführten Reset/Urlöschen der SPS, nicht nur die vorhandenen Variablen, sondern auch alte,
aber nicht mehr verwendete und gelöschte Variablen erzeugt.

Das heißt, sie stehen nicht mehr in irgendeinem FB oder DB drin, sind nach dem Urlöschen auch nicht mehr in der SPS,
werden aber beim Laden (bzw. beim Übersetzen) unsichtbar und unerwünscht miterzeugt.

Urlöschen hat allerdings funktioniert gehabt. Das habe ich mit einem anderen Testobjekt zwischendurch getestet.

Aufgefallen ist mir das, nachdem ich das Programm von der SPS auf meinen Rechner geladen habe,
was ich gewöhnlicherweise nicht mache. Ich vertraue da eigentlich auf den On-Offline-Vergleich.

Warum das so ist, weiß ich ehrlich gesagt auch nicht.
Öfters mal schauen, was tatsächlich geladen ist und notfalls ein neues, unverbrauchtes Projekt erstellen.

Besser ist vielleicht zwischendrin immer wieder mal das Projekt zu archivieren,
damit man nicht von "ganz vorne" anfangen muss.

Neben dem Programm für die SPS musste ich auch das Programm für das HMI-Touchpanel neuschreiben.
Auch hier gilt wieder: reinkopieren geht nicht.

Auch wenn alle DBs und alle Variablen gleich benannt sind, jedes Bild und jede Aktion musste neu erzeugt werden.
Hier gibt's leider kein Trick mit Netzwerke kopieren. War also ziemlich zeitintensiv heute.

Aber das wichtigste ist, alles läuft fehlerfrei. Zwei, Trei Kleinigkeiten musste ich anpassen.


Dennoch mal danke fürs mitdenken und für eure Hilfe!

Lg
Matze
 
Das ist aber schon komisch.
Wenn ich TIA programmieren "darf" kopiere ich sehr viel aus anderen Projekten, sowohl HMI-Teile, als auch Programmblöcke und FB/FC.
Das hat bisher immer rel. klaglos funktioniert, von einigen Totalabstürzen mal abgesehen.
So einen Supergau hatte ich noch nie. Nicht dass es mich wundern würde, TIA ist eine Haufen Sch.... und wunderbar daran ist am ehesten, dass es überhaupt läuft (ab und zu :) )
Wenn das bei dir nochmal passiert, würde ich raten, TIA komplett neu aufsetzen, denn irgendwie könnte ja auch die Installation defekt sein.
 
Also, ja, TIA ist sicherlich nicht perfekt, gar keine Frage, manchmal sogar ziemlich eigenartig.
Aber sooo viel Müll auf einmal hatte ich definitiv noch nie, noch nicht mal bei TIA V11 SP nix, und die war ggü. V13 wirklich mies.

Verwendest du V13 wenigstens in der aktuellen Version, also V13 SP1 Upd.9?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mangels 1500er habe ich noch nicht geprüft wie das funktioniert, aber bei meiner Test-1200 mit FW2.2 wird obwohl das TIA-Portal behauptet "die Binärkomponente ist identisch", überhaupt kein Codevergleich mit der CPU vorgenommen. Und meine Steuerung hat nicht einmal eine Blockprüfsumme, d.h. da werden so wie es aussieht nur ein paar Zeitstempel abgeglichen und wenn die stimmen sagt dir TIA "alles gleich". Das ist natürlich extrem wackelig, vor allem weil bei TIA alles davon abhängt dass Off- und Online konsistent sind.
Mich würde es nicht wundern, wenn jemand ein Programm mit gefaktem Zeitstempel in die Steuerung schieben kann, und jemand anderes mit dem falschen Programm online geht und das nicht merkt.
 
Mangels 1500er habe ich noch nicht geprüft wie das funktioniert, aber bei meiner Test-1200 mit FW2.2 wird obwohl das TIA-Portal behauptet "die Binärkomponente ist identisch", überhaupt kein Codevergleich mit der CPU vorgenommen. Und meine Steuerung hat nicht einmal eine Blockprüfsumme, d.h. da werden so wie es aussieht nur ein paar Zeitstempel abgeglichen und wenn die stimmen sagt dir TIA "alles gleich". Das ist natürlich extrem wackelig, vor allem weil bei TIA alles davon abhängt dass Off- und Online konsistent sind.
Mich würde es nicht wundern, wenn jemand ein Programm mit gefaktem Zeitstempel in die Steuerung schieben kann, und jemand anderes mit dem falschen Programm online geht und das nicht merkt.

Jo. was passiert denn, wenn die Zeitstempel in der Steuerung neuer sind als im Offline-Projekt, z.B. wegen falsch eingestellter PC-Uhrzeit?

Gruß.

PS: aber ich glaube eigentlich auch, dass hier beim "Neuschreiben" ein vorhandener unbemerkter Programmierfehler mit ausgemerzt wurde. Oder evtl. auch die Geschichte mit dem "unbemerkten forcen". Prinzipiell kopiere ich auch viel zwischen TIA-Projekten hin und her. Normalerweise funktioniert das reibungslos, ausser dass es 5 Sek dauert ;)
 
Zuletzt bearbeitet:
Zurück
Oben