Funktionen in Funktionen aufrufen

Baldaro

Level-1
Beiträge
6
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle miteinander.

Folgendes Problem ist mir gerad übern Weg gelaufen:

Nachdem ich mein Projekt erfolgreich abgeschlossen hatte, wollte ich das Programm noch einmal umstrukturieren, das das etwas chaotisch aussah.

Also hab ich erstmal meine Funktionen verkürzt und einzelne Programmabschnitte in extra Funktionen gepackt. Dann hab ich versucht jeweils eine Reihe von Funktionen in einer Fnktion aufzurufen.

Beispiel:

Im OB1 steht an einer bestimmten stelle:
call FC1

Im FC1 steht:
call FC21
call FC17
call fC41

Wenn ich da Programm jetzt zu laden versuche kommt ne Fehlermeldung, das FC1 nicht kopiert werden konnte (gleiche Fehlermeldung bei jedem FC in den andere FCs aufgerufen werden) und die SPS geht aus Systemfehler.

Ich hab noch nicht lange mit Step7 gearbeitet und ich bin mir halbwegs sicher, dass das hier nen ziemlich offensichtlichen Fehler erhält :)

Kann mir jemand weiterhelfen?
Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

es könnte vlcht. die Verstachelungstiefe sein. Bei MicroWin liegt sie bei 8. Es könnte auch sein, dass du Pointer mit Lokalen Variablen gebildet hast, dass der Pointer irgendwann auf eine undefinierte Stelle Zeigt.

Gruß
com

PS: Ich hatte mal mit MicroWin ein Phänomen gehabt, den konnte mir der College Wissmühler und Hartwig von Simatic-Support auch nicht erklären (ich mag die beiden sehr, sind einfach Spitze die Jungs).
Ich hatte mal ein Unterprogramm mit nur lok. Variablen (einfache Funktion zum Umrechnen von ein paar Sachen) und auch mit lok. Pointer, obwohl ich dem Pointer eine Adresse angegeben hab (muss zugeben, es war eine Adresse vom lokalen String (eigntl. undefiniert klar)), hat er mir komischerweise die Adresse von EB7 (eingangsbyte 7) angezeigt :)
sehr sehr komisch.
Es ging dann weiter(nächste Geschichte, sehr ähnlich): irgendwann bekam ich eine Fehlermeldung auf unserem Panel-PC, dass die Druckluft fehlt. Es wurde beim Umrechnen in einer anderen Funktion das Eingangsabbild der Eingänge (genau gesagt E1.1) intern in der SPS geändert(zurückgesetzt), d.h, wenn dieses Unterprogramm aufgerufen wurde, wurde der Eingang für ein Zyklus lang zurückgesetzt und die Fehlermeldung erschien auf dem PC. Ich guck mir den Druckluftsensor an, alles ok, der Eingang der SPS high. hm... lange habe ich gebraucht(eingangsfilter standen auf max. 12.8ms), bis ich rausgefunden habe dass dieses verflikste Unterprogramm so etwas schreckliches anstellen kann :)
wegen lokalem Pointer, der eine adresse von einem lok. String zeigte, wurde der Eingang zurückgesetzt. Wissmühler hatte dann diese Funktion von mir bekommen und gleiches festgestellt. Wir haben lange gelacht :) hehe


Gruß
com
 
Zuletzt bearbeitet:
Danke für die Antworten Leute.

Ich hab gerade mal den Tipp mit der verschachtelungstiefe überprüft und was sehr interessantes herausgefunden.

wenn ich die FCs auf die FC1 verweist ändere, mekert er nicht mehr.
Also vielleicht doch ein Variablenproblem.

Die Fehlermeldung ist einfach: der Baustein FC... konnte nicht geladen werden
 
Zuletzt bearbeitet:
Ich habs Ich habs.

Das hätt ich ja im Leben nicht gedacht^^

Ich rufe ja FC41 auf^^

Das war der Fehler.
Offenbar ist ihn die Nummer zu hoch (vermutlich zu wenig Speicher)
wenn ich den FC30 nenne funktionierts^^
liegt wohl an der SPS
ist ne S7-312 IFM

wer da drauf kommt...

Aber danke nochmal an alle.
Der Hinweis hats gemacht.
 
Also das es eine S7-300 geben soll die nicht mindestens 127 FC adressieren kann, kann ich gar nicht glauben. Sie doch mal online unter Baugruppenzustand / Leistungsdaten was die CPU kann.
 
Ich habe mir angewöhnt als aller erstes vor dem Programmieren mir die technischen Daten der verwendeten CPU rauszusuchen und zu schauen, wo ich wie viel platz habe (Anzahl DBs, Merkerbereich, Anzahl Timer und Zähler, etc.).
Hab mich damit mal auf die Nase gelegt und mußte meine ganzen Merkerbereiche umstrukturieren.

Gruß Jan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin ja zugegebenermaßen kein Siemens Experte, aber würde man aus dem Dilemma nicht durch symbolische Programmierung und der Sepp7-Einstellung "symbolisch hat Vorrang" relativ einfach (durch Überarbeitung der Symbolliste) rauskommen?
 
Zurück
Oben