Step 5 Step5 neue Bausteine (FB,PB) erweitern

Daniela_1

Level-2
Beiträge
36
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, kann mir jemand helfen?
Ich habe ein bestehendes Programm mir verschiedenen Programmbausteinen (meist FB), und möchte dieses Programm und einen Baustein erweitern um die Übersicht zu verbessern. Eine Erstellung eines Bausteins ist möglich, doch jedesmal wenn ein Vorgang startet geht die CPU in gestört.
Der Aufruf im OB1 funktioniert einwandfrei, der Programmablauf startet normal, bis ein Merker im neuen PB gesetzt wird.
Was mache ich hier falsch ?
Gruß Dani
 
Tippfehler?
Fragst du beim Setzen/Rücksetzen vielleicht einen Eingang/Ausgang oder einen Merker/Timer den es (CPU Bedingt) nicht gibt?
Der Editor zeigt die nicht unterstützte Merker/Timer-Bereiche nicht an, weil z.B eine 135U mehr Merker hat als eine 115U

Wird dieser Merker vielleicht in einem der FB's indirekt als Word verarbeitet (L MWx, B MW0 ....) und generiert einen Zeiger der auf DB's oder DB-Adressen zeigt, die es nicht gibt?


Welche CPU?

Stell dein Code rein, damit man die Bedingungen für S/R des Merker sehen kann.

Während ich schrieb hat Mike UStack erwäht. Den Auslesen, dann weißt du mehr über den Verursacher.
 
Es ist eine CPU 943
Das Programm selbst kann eigendlich keinen Fehler haben, da es in dem Vorhandenen Baustein perfekt läuft ...
 
Die CPU (943) geht in Stop ...
Welche FB oder PB sollte ich vorranig benutzen ?
Was muss ich bei der Bausteinerstellung (Aufruf im OB1) besonders beachten ?
In dem vorhandenem FB läuft das Programm, in einem neuerstelltem (PB oder FB) nicht.
Möglicherweise liegt ein Fehler in meiner Bausteinerzeugung vor ...
Gruß Dani
 
UStack auslesen wäre der erste Schritt.
Muss aber nicht der erste Schritt sein.
Wenn der erste Schritt keine Erkenntnis gebracht hat, darf man auch im zweiten Schritt noch in den USTACK gucken.
Wenn der zweite Schritt auch noch keine Erkenntnis gebracht hat, darf man auch im dritten Schritt noch in den USTACK gucken.
U.s.w.
U.s.w.
U.s.w.
...

Ansonsten:
- Man darf den DB0 nicht öffnen.
- Man darf den Merker, der die Bedeutung "immer Eins" hat, nicht löschen.
- Man darf den Merker, der die Bedeutung "immer Null" hat, nicht setzen.
- Wenn man irgendwo eine Verknüpfung von Bits eingefügt hat, muss man darauf achten, dass diese Verknüpfung auch "VKE-begrenzend" abgeschlossen wird, um nicht die Funktion der folgenden Verknüpfung durcheinander zu bringen.
- Wenn man einen Sprung zurück im Programm programmiert hat, muss man prüfen, ob dies zu einer "EndlosSchleife" führt.
- u.s.w. ...
- Wo sollen wir denn anfangen zu erraten, was Du falsch gemacht haben könntest?
- Möglicherweise werden ständig neue Tricks erfunden, ein Programm zum Absturz zu bringen, die wir noch gar nicht kennen. ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung!
Bei der 115 SPS kommt es auch auf die Speicherkarte (das orange Speichermodul) an, wenn das ein EPROM ist, und due Daten in DB's verändern willst, musst du entsprechende DB's im RAM (Arbeitsspeicher) erst einmal erzeugen.
Das EPROM musst du im Simatic PG bzw. mit externem Simatic-Brenner beschreiben.
 
Hallo,
ich habe heute einmal folgendes ausprobiert:
1. Ein kleines Programm von FB 17 (Läuft hier) nach FB 11 kopiert, sobalt der Eingang kommt geht CPU in STOP BASP
2. Auslese Stack: Transferfehler bei Datenbausteinbefehl (Geladen soll ein Datenwort aus FB 17)
Kann das DW in FB 11 nicht verarbeitet werden ?
Gruß Dani
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung!
Bei der 115 SPS kommt es auch auf die Speicherkarte (das orange Speichermodul) an, wenn das ein EPROM ist, und due Daten in DB's verändern willst, musst du entsprechende DB's im RAM (Arbeitsspeicher) erst einmal erzeugen.
Das EPROM musst du im Simatic PG bzw. mit externem Simatic-Brenner beschreiben.
Danke für den Tip, eine Karte ist zZ nicht eingesetzt.
Gruß Dani
 
2. Auslese Stack: Transferfehler bei Datenbausteinbefehl (Geladen soll ein Datenwort aus FB 17)
Kann das DW in FB 11 nicht verarbeitet werden ?
Geladen werden soll ein Datenwort ... welches denn? Und aus welchem DatenBaustein?
Das DW kann in FB11 verarbeitet werden, aber es muss der richtige (= der gemeinte) DatenBaustein bekannt und geöfnnet sein (A DB xxx).
Ist der falsche DatenBaustein geöffnet, kann es sein, dass das adressierte DW in dem fälschlich geöffneten DB nicht vorhanden ist, wenn dieser DB kürzer ist und das DW hinter dem zulässigen Bereich liegt.
Ein DatenBaustein enthält immer alle DatenWorte 0..xxx. Greift man auf DatenWort >xxx zu, so gibt es das in diesem DB nicht und die CPU reagiert, indem sie in Stopp geht.
Das maximale DW, das man mit "normalen" Befehlen (L DW xxx, T DW xxx) adressieren kann ist das DW 255.
Das Öffnen des DatenBausteins muss nicht in demselben FB geschehen, in dem auf ein DW zugegriffen wird.
Der zuletzt geöffnete DB bleibt so lange geöffnet, bis ein anderer DB geöffnet wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Allerliebster Heinileini,
jetzt komme ich mir vor wie ..... dabei ist mein Haar nur gefärbt.
Das war der Fehler !!!! Der FB 11 läuft !!!
Ich danke Dir sehr, in der Anleitung habe ich es gelesen, und jedes Mal bei der Eingabe übersehen.
LG Dani
 
Ich musste den DB im FB 11 neu aufrufen !
Der DB war zwar schon bekannt, aber vermutlich beim Start von FB 11 nicht mehr korrekt....
Einfach im FB neu Aufrufen, und läuft !
Nun wünsche ich eine gute Nacht .... ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der USTACK sagt aus, wo im Programm etwas Unzulässiges passiert ist, das die CPU in Stopp geschickt hat.
Ob das gleichzeitig die Ursache für den Fehler ist, das können wir dann beginnen nachzuforschen, sobald wir Näheres erfahren und damit die Spur aufgenommen haben.
So habe ich das noch gar nicht betrachtet. Gut dass wir darüber gesprochen haben, allerliebster Heinileini 😂.
 
Zurück
Oben