Step5 und Motten

mariob

Level-3
Beiträge
2.052
Reaktionspunkte
276
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
da ich in einem hypermodernen Unternehmen arbeite, wo es noch gedruckte Telefonbücher gibt und das Wort Internet gänzlich unbekannt ist (es soll zwar dort auch Leute geben, die sowas haben, aber die darf man nicht ansprechen), stelle ich das ganze mal hier privat ein. Also, Step 5 CPU S5100-U ist eine 103 8MA03, also von denen die größte. Programmiersystem ist ein PG2000 V3.99 auf einem PC. Es geht um das Fahren eines Bandes über mehrere anwählbare Container, dort gibt es Abwurfpunkte. Diese sollten geändert werden. Im Original kein Problem, nur eben sehr zeitaufwendig. Es sollten neue Punkte eingegeben werden. Ich entschied mich für eine komplette Neuprogrammierung mit einer Lernroutine für eben diese Aufgabe, da mache ich mich selbst überflüssig. Infolge der etwas komplexeren Aufgabe habe ich alle wichtigen Aufgaben in parametrierbare FBs ausgelagert. Leider reagierten Teile des Programms bereits beim Test eigenartig (CPU ging in Stop, DBs wurden falsch beschrieben). Soweit sogut. Heute also Fehlersuche. Es kristallisierte sich immer mehr heraus das irgendwie die Variable namens CONT im Programmlauf manipuliert wird, trotz das keine Schreibbefehle auf dieser liegen. Ausnahme ist hier nur der aufrufende FB, wo ich natürlich einen Wert übergeben muß. Im Verlaufe des Nachmittags habe ich durch Tests im Programm die fehlerhafte Stelle im Programm ausgemacht:



Kopf des FB:


Netzwerk 1 von 5 Bib =
Bez :FRGI E/A/D/B/T/Z: E BI/BY/W/D: BI
Bez :FRGO E/A/D/B/T/Z: A BI/BY/W/D: BI
Bez :ERRO E/A/D/B/T/Z: A BI/BY/W/D: BI
Bez :CONT E/A/D/B/T/Z: E BI/BY/W/D: W
Bez :ZDRE E/A/D/B/T/Z: E BI/BY/W/D: W
Bez :ZVER E/A/D/B/T/Z: E BI/BY/W/D: W
Bez :DBFB E/A/D/B/T/Z: B
:***
Netzwerk 2 von 5
:U =FRGI Initialisierung
:SPB =NW1E


Schnipp


:BEB
:***
Netzwerk 4 von 5 Schreiben Datenwort Drehkranz
Monitorstelle 1
:L =CONT
:L KH 0000
:><F Anwahl Container 1?
:SPB =CNT2 nein, zum Container2
:A DB 10
:L DW 0 Adresszaehler laden
:T MW 250
:A DB 11
:L =ZDRE Drehkranzwert laden
:B MW 250
:T DW 0 und ins addressierte DW schreibe
Monitorstelle 2
:SPA =NW3E
CNT2 :
:L =CONT
:L KH 0001


usw. etc.pp


Der Hase liegt scheinbar bei dem Bearbeitungsbefehl im Pfeffer. Wenn ich mittels eines hilfsweise eingesetzten Merkerwortes am Beginn des Netzwerkes die Variable CONT monitore (Monitorstelle 1) so steht diese auf dem übergebenen Wert (gegenwärtig 0000), an der Monitorstelle 2 hat sie den Wert 0001 angenommen, aber nur bei bestimmten Programmzuständen..... :sw10:Ich kriege hier noch die Motten, vielleicht hat jemand eine Idee. Da ich keine Erklärung habe woher das Problem kommt, kann ich mir auch nicht hilfsweise ein Werkzeug schreiben, mit dem ich die Grenzen oder Fehler ermitteln kann. Da soll mal noch jemand was gegen Möller sagen, ich kenne die Dinger nur vom Anschauen, aber schlimmer können die bestimmt auch nicht. Ich habe für meinen Syncstripper die Abstandshülsen für die Platine vergessen, da hätte ich wenigstens noch was sinnvolles für mich tun können.


Gruß
Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
dieser FB wird aus einem weiteren FB und dieser wiederum aus dem OB1 aufgerufen. CONT durch den vorhergehenden FB mittels eines Merkerwortes durchgereicht, ZDREH und ZVER sind im vorhergehendem FB direkt angebunden (Zählerbaugruppen 500khz) EW63 und 75, der Rest sind Merker.
Aufruf dieses Fb nur einmal wie oben beschrieben. Ich denke, entweder habe ich selbst gepennt oder es ist ein spezifisches Problem dieser Büchse.

Danke Mario
 
Hast du mal versucht der Variable CONT einen anderen Namen zu geben ? Ich meine mich dran zu erinnern das CONT irgend ein Befehl war/ist. Das ist aber alles schon soooooooooo lange her ;)
 
Hallo,
danke Lipperlandstern, ich habe mal das T weggelassen, das Ergebnis war dasselbe. Der Gedanke war, das das Problem auch von anderen FBs kommt, die denselben Eingang gleicher Funktion haben, jedoch ohne Erfolg. Im übrigen hat das Ding nicht sooviel Befehle, ist aber für eine S5 recht schnell.

Mario
 
Hallo Hadi,
ich hatte auch schon sowas im Hinterkopf, da ich schonmal in irgendwelchen Siemens Handbüchern gelesen habe das der Merkerbereich oberhalb 200 als Schmiermerkerbereich zu verwenden ist, was auch immer Siemens damit sagen will. Ist das vielleicht auch Dein Gedanke oder hast Du da einen anderen Hintergrund oder vielleicht eine Erklärung? Probiert hatte ich das jedenfalls noch nicht. Wenn es aber so wäre, wäre es ein dickes Ding, das sich hier Speicherbereiche überlappen.

Mario
 
Siemens will damit sagen, dass sie in ihren FBs die Merker oberhalb 200 als Schmiermerker benutzen. Sicherlich nicht alle, aber man tut gut daran, unter 200 zu bleiben, es sei denn, man will sie selber als Schmiermerker benutzen. Aber so lange unter 200 Platz ist, würde ich es vermeiden.

Grüße von HaDi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
und danke nochmal, so kommt etwas mehr Licht ins Dunkel, lesen alleine reicht eben nicht unbedingt. Hat noch irgendjemand dazu Ideen oder was ähnliches gehabt? Im übrigen werde ich das ganze eventuell morgen mal auf der richtigen Steuerung ausprobieren, um Hardwareprobleme auszuschließen.

Mario
 
Hallo nochmal,
und danke an alle, die hier geholfen haben. Besonderen Dank dem eNDe, es ist so wie von ihm beschrieben. Ich habe das ganze heute früh gleich nochmal neu geschrieben, soviel wars dann doch nicht. Infolge der noch kommenden Anpassungen habe ich das Programm danach vorläufig noch etwas anders gestaltet, es reagiert jetzt nicht mehr so unkontrolliert wie eine Frau :ROFLMAO:. Richtig angenehm. Irgendwann kommen dan schon Selbstzweifel auf.

Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hadi,
hier mal ein Ausschnitt:
FB's in STEP5 bergen eine sehr große, aber weitgehend unbekannte Gefahr.
Wird ein FB geschrieben, kommt zuerst der Kopf und dann der Rumpf. Dabei werden Formaloperanden im Rumpf im Moment des
Abschlusses der jeweiligen AWL-Zeile hineingerechnet, danach nie wieder!!!
Werden also nachträgliche Änderungen am FB durchgeführt, kann es zu völlig unerklärlichen und auch unauffindbaren Funktionsfehlern
kommen, obwohl alles richtig aussieht. Möglicherweise ist das bei dir der Fall.

Ich hoffe, das mir der eNDe nicht böse deswegen ist, Neuschreiben des Codes hat jedenfalls geholfen. Für mich sind zwar damit nicht alle Fragen geklärt, das Ergebnis war jedenfalls entscheidend. Wie ich schon schrieb, Entwicklung des FB findet jetzt unter etwas anderen Voraussetzungen statt, wenn alles richtig läuft mache ich den dann schön. Kostet zwar mehr Zeit aber wenigstens die habe ich.

Mario
 
D.h. du hast Änderungen an den Formaloperanden (Bausteinkopf) gemacht und im Programm selber (Rumpf) wird, wenn man die betroffenen Befehle nicht "erneuert", weiter so gearbeitet, als hätte es diese Änderung gar nicht gegeben. Das ist aber tricky...
Schade finde ich aber, dass der Kollege eNDe das nicht hier reinstellt.

Grüße auch an eNDe von HaDi
 
Zurück
Oben