Bin verzweifelt

linuxluder

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

ich kriege meine anlage nicht mehr zum laufen.

Code:
Ereignis 1 von 100:  Ereignis-ID 16# 4562
STOP durch  Programmierfehler (OB nicht geladen oder nicht möglich, bzw. kein FRB vorhanden ) 
Unterbrechungstelle im Anwenderprogramm:  Zyklisches Programm (OB 1)  
Prioritätsklasse:    1
FC-Nummer:   100
Bausteinadresse:    112 
Bisheriger Betriebszustand: RUN
Angeforderter Betriebszustand: STOP (intern)
interner Fehler, kommendes Ereignis
19:24:22:276   16.10.08


Was soll ich machen ???

'Danke Jo
 
Da gibts doch die Stacks (UStack, BStack, ..) und dort den Button "Gehezu". Einfach mal nachsehen, was die eigentliche Ursache im FC 100 ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mich würde mal noch Ereignis 2 und 3 im Diagnosepuffer interessieren, da sollte dann drinstehen, was im FC100 den STOP verursacht hat und wo.
 
öffne er den baustein FC100 und gehe zur bausteinadresse 112 ... wenn das nicht weiterhilft, also du es nicht selber siehst, einfach mal den FC100 hier posten
 
@4L: ... oder eben wie schon von Rainer beschrieben ...

Ich tippe auf Zykluszeit-Überschreitung - ich kann aber nicht erklären warum ...
 
Ich löse mal auf, Linuxluder hat mir mal die ganzen Diagnosemeldungen der CPU geschickt:

Ereignis 2 von 100: Ereignis-ID 16# 2522
Bereichslängenfehler beim Lesen
Global -DB ,Bitzugriff, Zugriffsadresse: 2
Angeforderter OB: Programmierfehler-OB (OB 121)
OB nicht vorhanden oder gesperrt oder nicht startbar im aktuellen Betriebszustand
interner Fehler, kommendes Ereignis
20:17:35:457 16.10.08

Im FC 100 war dann ein Zugriff auf DB200.

U DB200.DBX2.3

Interessanterweise stand in der Diagnosemeldung nicht, daß DB200 das Problem verursacht, aber das findet man ja mit obiger Meldung trotzdem. DB200 war nur 1 Wort lang, also gab es dann obigen Fehler.
 
hi,

ich kriege meine anlage nicht mehr zum laufen.

Code:
Ereignis 1 von 100:  Ereignis-ID 16# 4562
STOP durch  Programmierfehler (OB nicht geladen oder nicht möglich, bzw. kein FRB vorhanden ) 
Unterbrechungstelle im Anwenderprogramm:  Zyklisches Programm (OB 1)  
Prioritätsklasse:    1
FC-Nummer:   100
Bausteinadresse:    112 
Bisheriger Betriebszustand: RUN
Angeforderter Betriebszustand: STOP (intern)
interner Fehler, kommendes Ereignis
19:24:22:276   16.10.08


Was soll ich machen ???

'Danke Jo
Ich habe immer die vorherige Version (und wenn es auch nur die bisher funktionierende Masch. Kopie ist, gespeichert. Bei Problemen [vor allem, wenn die Anlage schon 'läuft'] kann ich immer auf den 'Vorher'- Status zurückgreifen.

Welche CPU hast Du, die Dir das Leben vertrübt ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich löse mal auf, Linuxluder hat mir mal die ganzen Diagnosemeldungen der CPU geschickt:



Im FC 100 war dann ein Zugriff auf DB200.

U DB200.DBX2.3

Interessanterweise stand in der Diagnosemeldung nicht, daß DB200 das Problem verursacht, aber das findet man ja mit obiger Meldung trotzdem. DB200 war nur 1 Wort lang, also gab es dann obigen Fehler.
____________________________________________________________
Anlehnend an dieses Problem:

Folgende Frage:
- Ich definiere DB200...
Der 1. Datensatz ist WORD ( also DB200.DBW0 )

Danach definiere ich ein BOOL. Trotzdem wird dieses speichertechn. wie WORD behandelt
2. Datensatz: DB200.DBX 2.0 => z.B. ein Merker, sonst nix ( ist zwar Unfug, geht aber)

Die nächste Adresse ist die 4 !! (Das eine Bit verursacht nachfolgend eigentlich WORD- Format)

Danach z.B.
3. Datensatz => BYTE = DB200.DBB 4

WARUM ist das so ?
Eine Bit- Def. benötigt ein komplettes BYTE... das würde ich ja noch verstehen.... aber ein Doppel- Byte ( auch WORD genannt) ???
=> Für mich müßte die nächste logische Adresse nach einem Bit eigentlich
so aussehen:
DB200.DBW0 // irgend ein WORD
DB200.DBX2.0 // irgend ein Bit, der Bereich ist für 1 Byte reserviert
danach...
DB200.DBW3 // irgend ein Byte, WORD oder DWORD
 
Bei Siemens beginnen alle Worte oder Doppelworte an geraden Adressen im DB. Wenn Du also ein Bit definierst (DBX0.0) und danach ein Wort, hat dieses automatisch die Adresse DBW2. Dasselbe gilt übrigens auch für die Lokaldaten. Nur bei den Merkern kann der Programmierer machen was er will.
 
____________________________________________________________
Anlehnend an dieses Problem:

Folgende Frage:
- Ich definiere DB200...
Der 1. Datensatz ist WORD ( also DB200.DBW0 )

Danach definiere ich ein BOOL. Trotzdem wird dieses speichertechn. wie WORD behandelt
2. Datensatz: DB200.DBX 2.0 => z.B. ein Merker, sonst nix ( ist zwar Unfug, geht aber)

Die nächste Adresse ist die 4 !! (Das eine Bit verursacht nachfolgend eigentlich WORD- Format)

Danach z.B.
3. Datensatz => BYTE = DB200.DBB 4

WARUM ist das so ?
Eine Bit- Def. benötigt ein komplettes BYTE... das würde ich ja noch verstehen.... aber ein Doppel- Byte ( auch WORD genannt) ???
=> Für mich müßte die nächste logische Adresse nach einem Bit eigentlich
so aussehen:
DB200.DBW0 // irgend ein WORD
DB200.DBX2.0 // irgend ein Bit, der Bereich ist für 1 Byte reserviert
danach...
DB200.DBW3 // irgend ein Byte, WORD oder DWORD
nanana! wer wird denn hier ungerade adressen verwenden
step7 verwendet automatisch immer die nächste gerade adresse
dazwischen entstehen dann lücken.
wenn man den db vernünftig anlegt und z.b. bool-variablen zusammenhängend
definiert und nicht kreuz und quer verteilt
kann man diese lücken vermeiden und auch speicherplatz sparen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@crash

Die Lücken sind nur "virtuell". Man kann da tatsächlich was reinschreiben, bekommt keinen Fehler und es funktioniert auch, da ein Datenbaustein immer aus einem zusammenhängenden Stück Speicher besteht. Nur ein Symbol hat man dann nicht. Aber das soll bitte niemand machen ;)!
 
... vielleicht noch als Nachsatz dazu :

In der Siemens-Doku steht auch an mehreren Stellen, dass die Grund-Orientierung immer WORD-Breite ist - also das kleinste-gemeinsame-Vielfache (kgV).

Gruß
LL
 
@Ralle: das da keine Lücken im Datenbaustein sind ist klar. :ROFLMAO:
ich meinte die "Lücken" die bei der deklaration entstehen
was ja auch die frage von mega_ohm war.
 
Zurück
Oben