-> 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 BFB 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
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 BFB 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