Step 5 S5 Programmfehler analysieren

KN-Oliver

Level-1
Beiträge
112
Reaktionspunkte
25
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir betreiben einen Teil unserer Produktionsanlage noch mit S5 Technik. Leider hat sich kürzlich die CPU verabschiedet. Diese habe ich bereits ersetzt aber das S5-Programm macht nun Probleme. Dummerweise war weder ein RAM noch EPROM Modul gesteckt. Daher musste ich das Programm aus unserem Softwarearchiv einspielen.

Habe das Problem ein wenig analysiert (U- und B-Stack) aber bin leider nicht so tief in der S5 Welt drin. Vielleicht könnt ihr mir sagen was dort genau "krumm" ist beziehungsweise bei der Fehlersuche unterstützen?

Fragen:

  • Wie genau ist die U-Stack und B-Stack analyse?
  • Kann ich davon ausgehen das der Fehler im Baustein FB2, NW6 liegt?
  • Sollte ich mir evtl. auch den DX100 ansehen?


Technische Daten:
CPU 928 B
AG 135 U

Wäre super wenn ihr mir ein wenig helfen würdet ;)

Danke und Gruß
Oliver

01_U-Stack.jpg
02_U-Stack.jpg
03_U-Stack.jpg
04_B-Stack.jpg
05_FB2_NW6.jpg
 
Zuletzt bearbeitet:
Hallo,

Muss nicht sein. Sieht aus als wenn er sich in ner Schleife dreht. Die CPU streikt gleich im Anlauf? Hast du genau den gleichen Typ als Ersatz genommen?

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo André...

Sorry,

hätte ich dazu schreiben sollen. CPU ist in Hard- und Softwarestand indentisch.
Genau, CPU kommt nicht in RUN sondern STOP-LED blinkt.

Ich habe im U-Stack die Taste F2 (Editieren) gedrückt. Hatte gehofft, dass man da beim betreffenden Baustein rauskommt. Aber das wäre vermutlich zu einfach. ;)

Gruß
 
Hallo Oliver,

wie dringend ists denn? Wo steht das Teil? Also der FB ist schon schuld, nur muss es nicht unbedingt die Stelle sein. Das ist nur der Moment gewesen als er mit Zeitfehler ausgestiegen ist. Kannst ja mal das Programm mailen und den CPU-Typ. Könnt es ja mal in ne identische reinladen und schaun.

André
 
Also ich würde mal den DX100 anschauen.
Gibt es den?
Denn so wie schaut so aus, als ob er in die Endlosschleife geht wenn er die Adresse berechnet.
Hängt da noch eine WF 4xx oder ähnliches dran?
Die Umwandlung lässt darauf schliessen.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend André,

habe gerade noch mal das AG135U Handbuch und das Tabellenheft gewälzt. Ich muss den B-Stack also von unten lesen?

Beispiel:
- OB20 (Neustart OB) ruft FB2 auf
- FB2 erzeugt Laufzeitfehler und ruft OB32 (Transfer- oder Ladefehler OB) auf
- OB32 enthält den Befehl STP und SPS geht daher in STOP

Für die Analyse und Behebung des Fehlers habe ich ca. noch ein bis zwei Wochen Zeit. Werde mit den Tipps mal weiter suchen und das Handbuch bemühen. Sollte ich dann nicht weiter kommen würde ich dir das Programm zukommen lassen.
Morgen Nachmittag bin ich vielleicht schlauer oder nicht :D. Werde dann auf jeden Fall Rückmeldung geben.

Vielen Dank für die schnelle Hilfe bisher...

Gruß Oliver

P.s. : Das Programm läuft auf einer SPS die den realen Betrieb der eigentlichen Anlage simuliert. Damit wird getestet wie sich Änderungen am Produkt in der realen Anlage verhalten. Daher ist das ganze nicht so zeitkritisch. Allerdings muss die Simulation auch irgendwann wieder laufen. ;)
 
Zuletzt bearbeitet:
Hallo bike,

werde den DX100 auch genau unter die Lupe nehmen. Muss aber leider fast jede Operation im Tabellenheft des AG135U nachschlagen und den Aufbau der Datenbausteine erlesen. Bin mit STEP5 leider nicht aufgewachsen. ;)

Mit WF 4XX meinst du ein SIEMENS Encoder bzw. Positionierungsmodul?

Gruß
Oliver
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das laden aus Dx100 geht via indirecte adressierung, OB180 verschieb dass anfang adresse mit die wert welche in akku 1 steht. Mit dieser OB180 kan mann auch data lesen welche in adresse stehn welche grosse sind dan 255.

Joop
 
Hallo Oliver,

interessant wäre der Teil des FB2 zwischen M002 und dem Sprung darauf. Sieht aus als wenn er dort 100 mal durchlaufen soll. Kannst den Baustein ja mal in die nonamels.ini drucken und den Text hier reinkopieren.

André
 
Hallo,

habe den Baustein FB2 mal über die S5 Dokumentation ausgedruckt.

Scheinbar liegt der Fehler dann in NW6. Denn nur hier wird der bedingte Aufruf (SPB) des M002 ausgeführt. Da der FB2 im OB22 aufgerufen wird, gehe ich davon aus, dass es durch den Aufruf des OB32 (LZF) gar nicht zur regulären Programmbearbeitung kommt. Aufgerufen wird der Baustein nämlich nur im OB22.

Leider habe ich für die Bausteine keine Symbolik mehr. :confused:


FB 2 -FBANL_2 C:TEST06ST.S5D BIB=52002 LAE=189
Blatt 1
Netzwerk 1
Name :ANLAUF2

0005 :***
Netzwerk 2
0006 :A DB 208 -DB_CODE
0007 :L KF +948
0009 :T DW 0
000A :L KF +928
000C :T DW 1
000D :L KF +1
000F :SPA OB 180
0010 :L DW 0
0011 :A DB 208 -DB_CODE
0012 :T DW 80
0013 :
0014 :L KF +79
0016 M001 :T MW 200
0017 :L KH 0000
0019 :B MW 200
001A :T DW 0
001B :L KF +0
001D :L MW 200
001E :L KF +1
0020 :-F
0021 :SPP =M001
0022 :SPZ =M001
0023 :L KC **
0025 :T DW 30
0026 :T DW 31
0027 :T DW 36
0028 :T DW 37
0029 :T DW 38
002A :T DW 39
002B :***

DB 208 = DB_CODE DB Codes und Daten fuer Meldungen

Netzwerk 3
002C :SPA FB 125 -STD_SYNC
002D Name :SYNCHRON
002E SSNR : KY 0,200
002F BLGR : KY 0,0
0030 PAFE : MB 250
0031 :
0032 :A DB 208 -DB_CODE
0033 :L MB 250
0034 :T DW 34
0035 :***

DB 208 = DB_CODE DB Codes und Daten fuer Meldungen
FB 125 = STD_SYNC Standard HTB-FB: Synchron
Netzwerk 4
0036 :SPA FB 125 -STD_SYNC
0037 Name :SYNCHRON
0038 SSNR : KY 0,216
0039 BLGR : KY 0,6
003A PAFE : MB 250
FB 2 -FBANL_2 C:TEST06ST.S5D BIB=52002 LAE=189
Blatt 2
003B :
003C :A DB 208 -DB_CODE
003D :L MB 250
003E :T DW 44
003F :***

DB 208 = DB_CODE DB Codes und Daten fuer Meldungen
FB 125 = STD_SYNC Standard HTB-FB: Synchron
Netzwerk 5
0040 :A DB 210 -DB_TXKL
0041 :U D 5.7
0043 :R D 5.7
0045 :U D 65.7
0047 :R D 65.7
0049 :A DB 211 -DB_RXKL
004A :U D 5.7
004C :R D 5.7
004E :U D 65.7
0050 :R D 65.7
0052 :***

DB 210 = DB_TXKL DB CP Sendedaten an KLS2
DB 211 = DB_RXKL DB CP Empfangsdaten von KLS2
Netzwerk 6
0053 :L KF +100
0055 M002 :T MW 200
0056 :L KF +100
0058 :-F
0059 :SLW 4
005A :AX DX 100
005C :SPA OB 180
005D :L DD 0
005E :T MD 210
005F :L DD 2
0060 :T MD 214
0061 :L DW 4
0062 :T MW 218
0063 :L MD 214
0064 :T MD 250
0065 :L KH 0030
0067 :T MB 250
0068 :L MD 250
0069 :SPA FB 248 -ASCII-KF
006A Name :ASCII-KF
006B :L MW 200
006C :!=F
006D :SPB =M001
006E :SPA FB 249 -KF-ASCII
006F Name :KF-ASCII
0070 :T MD 250
0071 :A DB 208 -DB_CODE
0072 :L MW 200
0073 :T DW 35
0074 :L MD 210
0075 :T DD 36
0076 :L MD 214
0077 :T DD 38
0078 :L MB 251
0079 :T MB 215
FB 2 -FBANL_2 C:TEST06ST.S5D BIB=52002 LAE=189
Blatt 3
007A :L MW 252
007B :T MW 216
007C M001 :B MW 200
007D :A DB 0
007E :L MD 210
007F :T DD 6
0080 :L MD 214
0081 :T DD 8
0082 :L MW 218
0083 :T DW 109
0084 :L KF +203
0086 :L MW 200
0087 :I 1
0088 :>=F
0089 :SPB =M002
008A :***

DB 208 = DB_CODE DB Codes und Daten fuer Meldungen
FB 248 = ASCII-KF FB ASCII in KF wandeln
FB 249 = KF-ASCII FB KF in ASCII wandeln

Netzwerk 7
008B :A DB 90 -FIFO_SHL
008C :L KF +20
008E :T DW 0
008F :L KF +3
0091 :T DW 1
0092 :L KF +4
0094 :T DW 2 -DW_ZIEL
0095 :
0096 :A DB 91 -FIFO_SHM
0097 :L KF +20
0099 :T DW 0
009A :L KF +3
009C :T DW 1
009D :L KF +4
009F :T DW 2 -DW_ZIEL
00A0 :
00A1 :A DB 92 -FIFO_SHR
00A2 :L KF +20
00A4 :T DW 0
00A5 :L KF +3
00A7 :T DW 1
00A8 :L KF +4
00AA :T DW 2 -DW_ZIEL
00AB :
00AC :A DB 93 -FIFO_TX
00AD :L KF +254
00AF :T DW 0
00B0 :L KF +3
00B2 :T DW 1
00B3 :L KF +4
00B5 :T DW 2 -DW_ZIEL
00B6 :***
DW 2 = DW_ZIEL Zieladresse der Quelle
DB 90 = FIFO_SHL Datenspeicher fuer Auftraege SHL
DB 91 = FIFO_SHM Datenspeicher fuer Auftraege SHM
DB 92 = FIFO_SHR Datenspeicher fuer Auftraege SHR
FB 2 -FBANL_2 C:TEST06ST.S5D BIB=52002 LAE=189
Blatt 4
DB 93 = FIFO_TX Datenspeicher fuer Sendeauftraege
Netzwerk 8
00B7 :BE



Gruß
Oliver
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

interessant wäre der Code von OB32. Gibts den überhaupt oder wieso geht die CPU dann in STOP? Ok und die Schleife startet mit 100 und unten wird auf KF203 verglichen.

André
 
Zuletzt bearbeitet:
Hallo Oliver,

im FB2 wird vor Aufruf des OB180 die Verschiebung des Bausteinoffsets des DX100 berechnet. Beim anschließenden Zugriff mittels "L DD 0" liegt das Datendoppelwort außerhalb des DX100. Wäre also interessant, was im MW200 steht und wie lang der DX100 tatsächlich ist. Wo wird der Inhalt des MW200 zugewiesen/berechnet?

Vielleicht hilft dir das weiter.
Grüße
Billhearts

P.S.: Habe gerade die Seite neu geladen und festgestellt, dass du den FB2 mittlerweile eingestellt hast.
Der OB32 wird aufgerufen, weil dein "L DD0" die Grenze des DX überschreitet. im U-Stack steht die Länge des DX mit "0001", also bleibt durch die Offsetverschiebung des OB180 nur noch ein Byte übrig, das adressiert werden kann. Da hat wohl mal jemand den DX100 online vergrößert und die Anlage wurde seither nicht mehr neu gestartet.
 
Zuletzt bearbeitet:
...DXe werden nicht umsonst verwendet.Zum Teil sind sie so groß, das Step5 sie nicht handhaben sowie übertragen kann. Gibt es an der Anlage eine Visualisierung und da ein Funktion zur Initialisierung der Datenbasis? Ich kenne Anlagen, da wurden die DXe im ersten Anlauf selbst erzeugt und erst beim 2.Stop-Run lief alles. Dies kann man aber nur am kompletten Programm herausfinden. Eventuell den DX100 löschen und dann die CPU nochmals versuchen 2x zu starten...


PS: kannst du aus einer anderen CPU den DX100 herunterladen und in deine CPU einspielen?
Thomas
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

sorry ich hab mich mit OB32 etwas verhauen. Wenn dieser aufgerufen wird wenn ein Fehler in der Adresse vorliegt ist es naheliegend dass an dem DX was nicht passt. Aber wenn es nur die Testanlage ist danns chau doch mal am Original..

André
 
Die schleife wurde 103 x durchlauffen, und DX100 wurde jede mal mit ein offset von 16 (SLW4) angesprochen, Die DB musst minest 104 * 16 worte lang sind , dass ist ein lange von 1652 worte + 6 worde fur die kopf.

Joop
 
Zurück
Oben