Kai Schulz
Level-2
- Beiträge
- 139
- Reaktionspunkte
- 3
-> 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
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