CPU zeigt Systemfehler

Zuviel Werbung?
-> Hier kostenlos registrieren
... dafür ist das Forum doch da ...

Also grundsätzlich :
Ich würde mein Programm in funktionsbezogene Einzelsegmente unterteilen. Jedes davon ist ein Baustein für sich. Diese werden dann im OB1 aufgerufen und nicht als Instanzen in einen FB integriert, denn dann erhälst du ja wieder sehr schnell ein Riesen-Ding.
Vielleicht hilft dir das ja ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuche mal dein Programm so umzubauen, das du keine Multiinstanzen verwenden musst. Das macht es am Anfang etwas übersichtlicher und du kannst dein Programm auch besser diagnostizieren
 
Ich habe jetzt den kompletten FB ausgepackt und in den OB1 eingepflanzt! Das hat auch nichts geholfen, er hängt noch immer am selben Baustein! Das merkwürdige ist, dass dieser FB (anderer DB) ein Netzwerk früher auch schon einmal durchlaufen wird, die Simatic diesen aber nicht bemängelt!
 
Was für eine Fehlermeldung bekommst du denn jetzt. Benutzt du irgendwelche indirekte Adressierung in dem FB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß langsam nicht mehr was ich tun soll, jetzt habe ich mal zwei der drei gleichen Bausteine weggemacht, dann springt die PLCSIM-CPU nicht mehr auf SF.


Mit den anderen zwei FBs hatte ich wieder die Meldung 2522

Bereichslängenfehler beim Lesen
Instanz-DB, Doppelwortzugriff, Zugriffsadresse: 22
OB-Nummer: 1



Ich habe jetzt allen FBs, die vorher in dem FB waren, den ich ausgepackt und in den OB 1 gelegt habe, einen eigenen DB gegeben!


Wiede
 
Was hast du denn in deinem Baustein programmiert. Kannst du mal einen pdf-Ausdruck hier rein setzen. Was passiert wenn du nur 2 aufrufst. Hast du alle DB neu erzeugt oder nur kopiert.
 
Bei dem Baustein handelt es sich um ein Zeitglied, das beim Überfahren eines Endschalters gestartet werden soll. Das ganze wird in einer Art Förderanlage verwendet. Es kann vorkommen, dass der Wagen die Haltestelle zu der das Zeitglied gehört verlässt, bevor die Zeit abgelaufen ist, dann muss die verbleibende Zeit an das nächste Zeitglied übergeben werden.
Bricht man die Zeit ab, benötige ich eine boolsche 1 um ein Tor freizugeben.
Es kann auch sein, dass die Temperatur beim Überfahren des Endschalters (Startsignal-Zeit) noch nicht erreicht ist, dann darf die Zeit noch nicht gestartet werden, das Startsignal muss aber gespeichert werden.

Ich hoffe ich habe jetzt alles erwähnt!

Ach ja, ich hatte das schon mal mit Simatic-Zeiten programmiert und ich weiß dass das viel einfacher ist, aber dann ist es halt nicht mehr multiinstanzfähig und ich muss immer einen Timer zuweisen.
Andererseits funktionierts so ja auch nicht!!! :)
 

Anhänge

  • FB22.pdf
    13,7 KB · Aufrufe: 29
Die Zeitvorgaben bekomme ich zum Beispiel von der Visu, diese ist im Moment aber nicht angeschlossen, bzw. ich lasse die Runtime nicht laufen, da es so oder so nicht läuft. Da ich alle Daten über einen DB austausche, haben ja alle Operanden einen Zustand, auch wenn die Visu nicht angeschlossen ist, in dem Fall halt 0.
 
Was hast du denn in deinem Baustein programmiert. Kannst du mal einen pdf-Ausdruck hier rein setzen. Was passiert wenn du nur 2 aufrufst. Hast du alle DB neu erzeugt oder nur kopiert.


Ich habe alle DBs neu erzeugt und ich habe es auch schon mit nur 2 von den FBs versucht, klappt trotzdem nicht!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...

Ach ja, ich hatte das schon mal mit Simatic-Zeiten programmiert und ich weiß dass das viel einfacher ist, aber dann ist es halt nicht mehr multiinstanzfähig und ich muss immer einen Timer zuweisen.
Andererseits funktionierts so ja auch nicht!!! :)
Du kannst auch in jedem Zyklus den OB1_Prev_Cycle aufaddieren und in einer stat Variablen im DB speichern. Daraus kann man auch einen Timer bauen und man bleibt multiinstanzfähig und man braucht auch keine Timer
 
Du kannst auch in jedem Zyklus den OB1_Prev_Cycle aufaddieren und in einer stat Variablen im DB speichern. Daraus kann man auch einen Timer bauen und man bleibt multiinstanzfähig und man braucht auch keine Timer


Was ist OB1_Prev_Cycle genau, bzw wie wird es angewendet? Dann kommt es doch auch auf die Zykluszeit an?

Wiede
 
Was ist OB1_Prev_Cycle genau, bzw wie wird es angewendet?

Das ist eine TEMP-Variable aus dem OB1 in der die Dauer des letzten Programm-Zyklusses in Millisek. hinterlegt ist.

Ich habe mir deinen FB22 angesehen und konnte daran erstmal nichts Schlimmes erkennen. Wie sieht denn der ausrufende Baustein (OB1 ?) aus ?
Woher kam die Längenangabe von vorhin ? Selbst 10 von diesen FB's ergeben nicht eine Länge > 3000 Byte ...

Gruß
LL
 
? ... ich nutze PLCSim 5.3.1.1
Der Baustein, den ich simulieren wollte lief dann in der CPU einwandfrei ... seine Größe (im Arbeitsspeicher) war ca. 5k. Ich hatte dann mal testweise den Code reduziert (ein paar Funktionen herausgenommen) und nachdem ich dann unter 3k war, spielte PLCSim dann auch mit.
Was folgerst du daraus ?

Das hat allerdings nichts mit dem aktuellen Problem von Wiede zu tun ...
 
Gute Frage, ich habe die gleiche Version, allerdings inzwischen mit HotFix 1...
Das Größenproblem ist mir allerdings werder vorher noch nachher begegnet.

Daher folgere ich daraus, dass dein Problem zu 90% nicht an der Größe des Bausteins lag...wie bei dem aktuellen Problem auch.
 
Zurück
Oben