Step 7 SFB4 Timer läuft immer auf 2s48ms

tylerendicott

Level-2
Beiträge
89
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich hab in einem S7 Projekt einen Timer eingebaut. Der kriegt seinen Wert aus einem DB. Die Variable heißt DB60.DBD2.0, ist als TIME deklariert und hat meinetwegen 10S projektiert (Ziel soll 14 Tage sein, zum Test hab ich aber weniger genommen). Nun hab ich beim SFB4 auf IN0 eine 1, auf OUT2 eine weiterführende Variable und auf OUT3 die Zeit. Nun ist das egal, welche Zeit ich in den DB schreibe, es laufen immer 2s 48ms ab. Kann mir jemand sagen, wie man das vernünftig macht?
 
Moin tylerendicott,

zunächst hört sich die Projektierung richtig an. Was nicht passt kann man aus der Beschreibung aber nur schwer herauslesen.
Hast Du mal einen Screenshot vom Aufruf des SFB4?

VG

MFreiberger
 
Nun hab ich beim SFB4 auf IN0 eine 1
Damit der TON-Timer SFB4 losläuft, benötigt er an IN eine steigende Flanke. So wie von Dir beschrieben wird der Timer nicht anlaufen, es sei denn er wird noch irgendwo im Programm explizit zurückgesetzt oder z.B. im OB100 initialisiert.

Harald
 
Zuletzt bearbeitet:
Ich hoffe das reicht so. M24.0 benutze ich nur temporär zur Ansteuerung des Timers.
 

Anhänge

  • 2022_04_29_SPS-Forum.jpg
    2022_04_29_SPS-Forum.jpg
    388 KB · Aufrufe: 106
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie sehr sich doch ein Bild der Realität von einer verbalen Beschreibung unterscheiden kann... ;)

Wie lange der Timer läuft wird in DB400.DBD2 vorgegeben.

PS: Arbeitest Du immer mit (kaputten?) Step7-Projekten, die aus der SPS zurückgeladen wurden? Repariere mal die Symbolik in Deinem Projekt.

Harald
 
Was willst Du denn eigentlich machen? Der SFB4 ist formal richtig projektiert. Du musst lediglich die Vorgabezeit in DB400.DBD2 eintragen (Remanenz beachten), oder direkt am IN1 (PT) des TON dranschreiben als festen Wert T#14D (14 Tage) oder die Variable, wo der Wert drin steht z.B. eine HMI-Variable.

Fehlende Symbolik: Falls in Deinem Projekt im Bausteineordner ein SFB4 vorhanden ist, dann lösche den mal und hole den neu aus der "Standard Library / System Function Blocks" ins Projekt, und/oder generiere die Referenzdaten neu, und/oder überprüfe die Bausteinkonsistenz des Projektes, damit die Symbolik des SFB4 und seiner Instanz-DB (und Deines restlichen Programms) wiederhergestellt wird. Und gib dem DB400 einen symbolischen Name, der zur Instanz passt.

Harald
 
Wenn ich das nun richtig verstanden habe, aktiviere ich den Timer mit IN0 und parametriere die Zeit mit IN1. Bei OUT2 steht ein BOOL der gesetzt wird und bei OUT3 muss eine Variable vom Typ TIME stehen, in der die Zeit läuft. Soweit funktioniert das zumindest bei mir, allerdings nur, wenn ich für OUT3 eine interne Variable nehme. Wenn ich eine als TIME deklarierte Variable aus einem beliebigen DB nehme, bekomme ich einen Compilerfehler. Woran liegt das?

?? Aus die visie ???
Was bedeutet das?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber in DB400.DBD2 steht ja als Startwert 0MS.
Der Startwert ist nur dafür da, wenn die Instanz im Step7-offline-Projekt initialisiert wird. Z.B. der DB400 im Projekt neu erzeugt/generiert wird. Startwerte von SFB kann man nicht ändern, nur bei eigenen FB kann man die ändern.

Woher kommen dann die 2S 48MS?
Hast Du den SFB4 mit DB400 selber ins Programm eingefügt oder war das schon in dem Programm?
Öffne den DB400 offline im Projekt. Steht der Wert da bei "Aktualwert"?
Suche mit den Referenzdaten nach Schreibzugriffen auf DB400.DBD2. Auch auf überlappende Zugriffe, zB. auf DB400.DBX4.3 - die 2048 sehen verdächtig aus, als ob sie versehentlich reingekommen sind.
Vielleicht kommt der Wert auch von einer HMI/Visu, evtl. von einer Rezepturverwaltung.
Oder ganz fies: ein Programmierer hat den Online-Wert mit einer Variablenbeobachtungstabelle eingetragen und "vertraut" auf die Remanenz und daß niemals Urlöschen ausgeführt wird.

PS: "visie" bedeutet sehr wahrscheinlich "Visualisation". (Deutsch ist nicht die Muttersprache von JoopB)

Harald
 
Ne, aber wenn man ein Programm zurück lädt dann kommt es sporadisch vor das man nicht die Hilfe zum Baustein bekommt sondern zur Call-Anweisung.
Bei Bausteinen die umbenannt wurden (FC105->FC5) mit Sicherheit, bei anderen in Abhängigkeit der Step7-Version.
Oder aber mein Step7 ist seit Jahren kaputt ^^
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

man kann ja an meinem ersten Screenshot sehen, dass der SFB4 nicht so aussieht, wie in der Dokumentation, aus der @asm zitiert hat. Den Bei mir zu sehenden SFB4 habe ich projektiert, weiß aber nicht mehr genau woher der kommt. Ich hab den gelöscht und, wie empfohlen, einen aus der standard library genommen. Dieser sieht auch gleich ganz anders aus und lässt sich entsprechend verwenden. Vielen Dank für die ganze Hilfe.

Ob das Programm mal zurückgeladen wurde, kann ich leider nicht sagen.
 
Den Bei mir zu sehenden SFB4 habe ich projektiert, weiß aber nicht mehr genau woher der kommt.
Du meinst, der war im originalen Programm noch nicht drin und Du hast ihn eingefügt?
Hast Du ihn vielleicht aus einem anderen Projekt kopiert?
Hast Du hier überhaupt ein Step7-Projekt oder arbeitest Du direkt ONLINE auf der CPU??


Ich hab den gelöscht und, wie empfohlen, einen aus der standard library genommen. Dieser sieht auch gleich ganz anders aus und lässt sich entsprechend verwenden. (...)
Ob das Programm mal zurückgeladen wurde, kann ich leider nicht sagen.
In Deinem Projekt ist die originale Symbolik kaputt und (teilweise) ersetzt worden. Sowas passiert z.B. wenn man ohne das passende/zugehörige offline Projekt Bausteine aus der CPU herauslädt. Oder über "Erreichbare Teilnehmer" online geht und Bausteine herauslädt. In beiden Fällen kann Step7 den herausgeladenen Bausteinen keine Symbolik zuordnen und vergibt Standard-Variablennamen IN0, IN1, OUT2, STAT3, ...

Bei S7-300/400 wird die Symbolik nicht mit in die CPU geladen, weil das kompilierte Programm die Symbolik für den Programmablauf nicht braucht. Trotzdem sollte man nicht schlampig mit dem Projekt und der Symbolik umgehen. Ein Programm mit korrekter Symbolik ist z.B. viel verständlicher (siehe hier z.B. Deinen SFB4), oder Step7 passt Variablenadressen bei Programmänderungen ggf. automatisch an, wenn man symbolisch programmiert. Schau mal in Deinem Projekt in die Bausteinkonsistenz (Rechtsmausklick auf den Bausteine-Ordner > Bausteinkonsistenz prüfen...) und da auf die Konflikte im Abhängigkeitsbaum.
Spätestens wenn man das Projekt "auf die Schnelle" nach TIA konvertieren soll, dann bekommt man viel Mehrarbeit, wenn das Projekt nicht konsistent ist.

Harald
 
Du meinst, der war im originalen Programm noch nicht drin und Du hast ihn eingefügt?
Hast Du ihn vielleicht aus einem anderen Projekt kopiert?
Hast Du hier überhaupt ein Step7-Projekt oder arbeitest Du direkt ONLINE auf der CPU??
Ich hab ihn nicht aus einem anderen Projekt kopiert und ich habe schon ein Offline Projekt.

In Deinem Projekt ist die originale Symbolik kaputt und (teilweise) ersetzt worden. Sowas passiert z.B. wenn man ohne das passende/zugehörige offline Projekt Bausteine aus der CPU herauslädt. Oder über "Erreichbare Teilnehmer" online geht und Bausteine herauslädt. In beiden Fällen kann Step7 den herausgeladenen Bausteinen keine Symbolik zuordnen und vergibt Standard-Variablennamen IN0, IN1, OUT2, STAT3, ...
Mir ist bewusst, dass die Symbolik kaputt ist. Ich hab etliche FCs mit irgendwelchen Merkern. Ich meine, dass das mal für eine Profibusanbindung für Stromzähler gemacht worden ist, weil das hardwareseitig vorhanden ist, im Programm aber nirgendwo ersichtlich ist - komplett oder Symbolik, deshalb schwer nachvollziehbar. Aktuell ist das aber einfach noch drin, weil ich mit der Steuerung erstmal die ursprüngliche Maschine wieder lauffähig machen möchte. Da kümmer ich mich wann anders drum.

Ich schau nochmal nach, woher ich den SFB4 habe, das mit den Standard-Variablen wusste ich auch nicht. Vielleicht kann ich das dann aufklären.

Bei S7-300/400 wird die Symbolik nicht mit in die CPU geladen, weil das kompilierte Programm die Symbolik für den Programmablauf nicht braucht. Trotzdem sollte man nicht schlampig mit dem Projekt und der Symbolik umgehen. Ein Programm mit korrekter Symbolik ist z.B. viel verständlicher (siehe hier z.B. Deinen SFB4), oder Step7 passt Variablenadressen bei Programmänderungen ggf. automatisch an, wenn man symbolisch programmiert. Schau mal in Deinem Projekt in die Bausteinkonsistenz (Rechtsmausklick auf den Bausteine-Ordner > Bausteinkonsistenz prüfen...) und da auf die Konflikte im Abhängigkeitsbaum.
Spätestens wenn man das Projekt "auf die Schnelle" nach TIA konvertieren soll, dann bekommt man viel Mehrarbeit, wenn das Projekt nicht konsistent ist.
Das ist mir bekannt, dennoch danke für den Tipp und vor allem allgemein für deine Hilfe!
 
Zurück
Oben