Bereichsüberschneidung zwischen Outbereich und Ret_Val eines FC's

RONIN

Level-3
Beiträge
2.529
Reaktionspunkte
773
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute

Ich bin gerade dabei einen FC-für eine Messung zu schreiben und bin auf ein interessantes Problem mit der Return-Value gestoßen. Ist eigentlich nicht der erste FC den ich in meinem leben schreibe, habe das Problem aber noch nie gehabt.

Ich habe mal den Mess-FC (Siehe Anhang) bis auf das grundlegende Problem gestript, alles andere wäre zu lang, so ist das Problem auf besser sichtbar.

Er besteht aus:
1.) einem Eingang für ein Peripherie-Eingangswort (Wird in diesem Fall testweise über einen einfachen Zähler zwischen 0 und 27648 vorgeben)
2.) einem FC105-Scale Baustein zum umwandeln des Messwertes
3.) einem Ausgang zur Ausgabe des Messwertes
4.) einem Ret_Val-Wert vom Typ Int zum Ausgeben ob beim FC105 irgendein Fehler war.

Das Problem:

Der Zähler, der in diesem Versuch das PEW ersetzt, gibt einen Wert vor, der vom FC105 ohne Fehler umgesetzt und in einem temporären Wert geschrieben wird. Dieser temporäre Wert wird dann einfach auf den Ausgangswert geschrieben. Das Problem befindet sich jetzt in Netzwerk 4: In der ersten Zeile lade ich noch einmal die aktuelle Ret_Val (zum Vergleich), danach übergebe ich den temporären Messwert an den Messwertausgang. Wenn ich dann dahinter noch einmal die Ret_Val lade sehe ich aber das die Ret_Val von der vorangegangenen Transfer-Operation beinflusst wird. Als würde sich der Out-Bereich mit der Ret-Val überschneiden.

Woran kann das liegen??? :confused::confused::confused:

@EDIT@: Achja ist übrigens eine S7313C-2DP. Ist in dem Fall aber kaum relevant.
mfg RONIN
 

Anhänge

  • Mess_FC_Code.jpg
    Mess_FC_Code.jpg
    78,1 KB · Aufrufe: 22
  • Mess_FC_Schnittstelle.PNG
    Mess_FC_Schnittstelle.PNG
    23 KB · Aufrufe: 19
Zuletzt bearbeitet:
funktionalitätsbeeinträchtigend oder einfach nur eine beobachtung, also ein "online-modus" prob? das konnte ich nicht so recht raus lesen ... letzteres ist quasi normal, da die aktualisieungsrate und die tatsächliche abarbeitung einfach mal welten auseinander liegen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider auch funktionsbeinträchtigend

Ich hatt nähmlich auch schon den umgekehrten Fall wobei der Zugriff auf die Ret_Val ein Bit im Outbereich beeinflusste. (Dieses Bit habe ich vorher beim gekürzten Versuchs-FC weggelassen. Im Original wäre es im Outbereich hinter dem Messwertausgang)

Das sah so aus (Erstes Netzwerk im FC):

Code:
SET
= {Bit im Outbereich}

L 0
T Ret_Val

...

U {Bit im Outbereich} //<-- hier war in dem Fall das Bit schon Null
{tuhe dies und das}

wenn ich aber dann den Code so geschrieben habe...

Code:
L 0
T Ret_Val

SET
= {Bit im Outbereich}

...

U {Bit im Outbereich} //<-- hier war das Bit jetz wie gewünscht TRUE
{tuhe dies und das}

Also irgendwo muss da ein Zusammenhang bestehen.
 
Zuletzt bearbeitet:
Es gibt in diesem Fall keine letze Änderungen, da ich zum testen ein komplett neues Projekt erstellt habe, und darin den Test-FC ebenfalls neu eingetippt habe.

Um Probleme mit Instanzdaten oder ähnlichem auszuschließen, rufe ich den Test-FC auch direkt in OB1 auf.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
afaik liegen RETVAL + IN + OUT + TEMP eines FC auf dem
L-Stack.
Im Aufruf des FC wird der L-Stack mit IN-Variablen belegt...
Nach Beendigung werden die OUT + RETVAL vom L-Stack gelesen und
an die von aussen "angeflanschten" Parameter übergeben
(dies geschieht alles im Aufrufenden Baustein)

Wenn Du nun z.B. zusätzliche Temp-Variablen in Deinem FC einfügst und
den Aufruf nicht aktualisiert dann kann genau das passieren was Du beobachtest.

Ich hoffe das ich mich einigermaßen verständlich ausgedrückt habe. (ist schon spät) :)
 
Stell mal den Status in HEX-Anzeige um dann wirst Du sehen
das im NW4 der RETVAL das gleiche ist wie das Highword von #WERT
 
Ja, das ist soweit schon verständlich. Leider weiß ich nicht was ich bei einem völlig neu eingetippten FC noch aktualisieren könnte.

Stell mal den Status in HEX-Anzeige um dann wirst Du sehen
das im NW4 der RETVAL das gleiche ist wie das Highword von #WERT

Leider habe ich jetzt kein Versuchssystem mehr zur Hand, erst morgen ähhh verdammt heute wieder. Ich seh mir das dann morgen ähh heute mal an.

Na dann guten Morgen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Entscheidend ist der Aufruf im OB1.
Vielleicht hast Du nachdem Du den Aufruf im OB1 geschrieben hast noch was geändert in den TEMPs des FC.
dann den FC überspielt aber vorher den Aufruf im OB1 nicht aktualisiert
oder nicht rübegespielt ...
 
Zurück
Oben