Step 7 Bearbeitung von Formalparametern (IN, IN/OUT & OUT)

Kai Schulz

Level-2
Beiträge
139
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

mich bewegt gerade eine (sehr) komische Frage. Ich habe gerade eine Funktion (FC, S7-Programm, SIMATIC Manager) vorliegen, welche ich zuerst für einen schlechten Scherz gehalten hatte. Die Funktion hat 6 IN-Parameter, von denen 4 "echte" Eingänge sind, die FC-intern nur abgefragt werden.

Aber:
Die anderen beiden IN-Parameter verwundern mich ein wenig. Einer davon ist ein Hilfsmerker für die interne Bearbeitung und einer ist ein Zähler. Den Hilfsmerker hätte ich auf jeden Fall als IN/OUT-Parameter deklariert. Der Zähler geht nur als IN-Parameter, was mir ebenfalls neu ist. Ich benutze bei Formalbausteinen mit Zählern und Timern immer FBs und zähle den Zähl- oder Zeitwert im STATischen Datenbereich rauf oder runter.

Vorab:
Der FC funktioniert!

Nun ist es so (ich hatte etwas gelesen):

Aussage 1 (diverse Internetseiten und BigS):
Die meiste Literatur (auch Siemens) besagt, dass bei FCs und FBs zuerst die IN- und IN/OUT-Parameter, eingelesen und zwichengespeichert werden (bei FCs temporär / bei FBs im IDB), dann die Bearbeitung abläuft und dann die IN/OUT- und OUT-Parameter geschrieben werden. So kenne bzw. kannte ich das auch.

>> Wenn das so wäre, könnte der FC noch nichteinmal theoretisch funktionieren!


Aussage 2 (von BigS):
Es gibt noch eine widersprüchliche Aussage (komischerweise auch von Siemens!) die besagt, dass lediglich die Adressen der Formalparameter im IN-, IN/OUT- und OUT-Bereich in einem Register gespeichert werden. Im FC werden diese dann indirekt und sofort geschrieben.

>> Wenn es bei FCs so wäre, würde dies das Funktionieren meines FCs erklären!

Fazit?
Ich denke nun, dass die Aussage 1 falsch ist, da man das höchstens auf FBs beziehen kann. Das FCs die IN-, IN/OUT- und OUT-Parameter im Lokaldatenstack zwischenspeichern ist Bullshit! FCs verfahren so, wie es in Aussage 2 beschrieben wird.

Stimmt das?


Gruß Kai
 
Bei der FC werden die IN und OUT-Parameter nicht zwischengespeichert. Bestenfalls liegt in den temprären Daten des aufrufenden Bausteins ein Pointer auf die Parameter.

Unterm Strich wird bei der FC nur indirekt adressiert auf die Parameter zugegriffen. Das bedeutet, dass es im Prinzip egal ist ob du von einem IN- oder OUT-Parameter sprichst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok Danke,

hatte ich mir schon gedacht.

Aber:
Warum gehen COUNTER bei FCs und FBs nur im IN-Bereich. Das sollte doch dann, zumindest bei FBs, gar nicht funktionieren!? Beim FB wird der COUNTER ja, während der Bearbeitung (und auch sonst immer) im IDB zwischengespeichert, dann (am Ende der Bearbeitung) aber niemals auf den externen COUNTER übertragen, wegen IN-Bereich? - Wie schon erwähnt benutze ich Siemens-Zähler und -Timer so gut wie nie!


Gruß Kai
 
Oh, da haste recht!

Im IDB gibt es tatsächlich keinen Zählwert. D. h. bzgl. Formal-Zählern und -Zeiten verhalten sich FBs und FCs gleich.

Danke, Gruß Kai
 
Zurück
Oben