# Sfc 14/15



## Kunstblume01 (2 Dezember 2008)

Guten Tag,

ich bekomme die Kommunikation über die Bausteine SFC 14/15 nicht hin,
vielleicht kann mir jemand die wichtigsten Aspekte zusammen fassen oder mich auf nen Fehler hinweisen.
Für SFC14:
Am Eingang EN muss eine positive Flanke anliegen.
Laddr die Peripherieadresse des Slaves, in meinem Fall 256 --> w#16#100
Was an ret_val hin muss weiß ich nicht. An record hab ich bei mir DB2 genommen, Zustandswort.

Für SFC15:
EN pos. Flanke
Laddr wieder w#16#100
record DB1 bei mir Steuerwort
und was bei ret_val hin muss weiß ich nicht.

Ich hab die beiden Bausteine in eine Funktion geschrieben und sie im OB aufgerufen.
Warum funktioniert das nicht?

Mit freundlichen Grüßen
Gunnar


----------



## Lipperlandstern (2 Dezember 2008)

aus der Siemens-Hilfe



> Zweck der SFC 14
> 
> Sie benötigen die SFC 14 "DPRD_DAT", weil Sie mit den Ladebefehlen, die auf die Peripherie bzw. auf das Prozeßabbild der Eingänge zugreifen, maximal vier Bytes zusammenhängend auslesen können.
> 
> ...


----------



## FrankW (2 Dezember 2008)

Hallo,

die Bedeutung der Parameter erfährst du in der Online-Hilfe (SFC mit der Maus anklicken und F1 drücken. Ob es dann funzt hängt u.a. auch von der Hardware ab.
CPU-interne Schnittstelle --> geht
Schnittstelle über CP --> geht nicht.

Vielleicht stellst du mal hier deinen Code rein und ein paar Infos über den Kommunikationsweg wären auch nicht schlecht.


----------



## Kunstblume01 (2 Dezember 2008)

Danke erstmal die Siemenshilfe zu den Bausteinen hab ich allerdings schon gelesen. Hilft mir jetzt nicht unbedingt weiter, weil ich es im Detail nicht verstehe.
Die Kommunikation zu meinen Slave hat schon hingehauen indem ich das Steuerwort mittels move-Baustein direkt an den Slave übertragen hab, wenn ich aber mehr als 2 Worte übertragen möchte geht das ja irgendwie nicht mehr.
Also noch mal, kann mir irgend jemand ein paar nützliche Hinweise geben wie das von statten geht, jetzt kommt bei meinem Slave nichts an.
Hab mal ein Bild von der Funktion dran gehängt die ich geschrieben hab.
MFG Gunnar


----------



## Kunstblume01 (2 Dezember 2008)

Ich versuche eine Verbindung zw. CPU 314-2dp und Simoreg über Profibus herzustellen.

Was bedeutet:"CPU-interne Schnittstelle --> geht
Schnittstelle über CP --> geht nicht" ?

Außerdem ist mein Problem das ich aus der Hilfe zu den Parametern nicht schlau werd, wie zum Beispiel bei ret_val.


----------



## FrankW (2 Dezember 2008)

Was bedeutet:"CPU-interne Schnittstelle --> geht
Schnittstelle über CP --> geht nicht" ?

http://support.automation.siemens.com/WW/view/de/21628388 

Bedeutet: bei CP nicht mit SFC14/15!


----------



## Kunstblume01 (2 Dezember 2008)

Na gut da ich CPU314c-2dp hab müsste es ja gehen?!


----------



## SPSKILLER (2 Dezember 2008)

was steht denn im RET_VAL?


----------



## Kunstblume01 (2 Dezember 2008)

In der Hilfe zum SFC 15 steht zum beispiel

RET_VAL OUTPUT INT E, A, M, D, L Tritt während der Bearbeitung der Funktion ein Fehler auf, enthält der Rückgabewert einen Fehlercode.

Ret_val ist vom Datentyp Int.

Hab ich möglicherweise den record Parameter falsch bezeichnet, (datentyp any)?
mfg gunnar


----------



## SPSKILLER (2 Dezember 2008)

mich interessiert, was für ein *WERT!!!* in deinem MW (verschaltet an RET_VAL) steht.


----------



## Kunstblume01 (2 Dezember 2008)

weiß ich nicht, keiner, weiß ja nicht was da hin muss.

Sorry, hab das mit dem Baustein noch gemacht und kann mir auch keinen Reim drauf machen.


----------



## Kunstblume01 (2 Dezember 2008)

weiß ich nicht, keiner, weiß ja nicht was da hin muss.

Sorry, hab das mit dem Baustein noch gemacht und kann mir auch keinen Reim drauf machen.


----------



## SPSKILLER (2 Dezember 2008)

noch mal. Du hast doch hier schöne Screenshots veröffentlicht.
Du weisst, dass es nicht funktioniert. Deshalb nehme ich an, dass du eine Onlineverbindung zu Steuerung hast.

Der RET_VAL beschreibt dein MW256. In der Online Ansicht, oder einer Variablentabelle siehst du doch, was in MW256 für ein Wert steht.

Teile diesen bitte mal mit.

Gruß Micha


----------



## Kunstblume01 (2 Dezember 2008)

Da gibts kein Wert! MW 256 wird nirgens beschrieben, hab ich an der Stelle "frei" gewählt, weil mir der Zusammenhang an der Stelle überhaupt fehlt!!! Weiß nicht mal ob da MW 256 rein muss, hab das nur in Analogie zu einem Beispielprojekt gewählt.
Die online-Verbindung zur CPU steht allerdings.
Gruß Gunnar


----------



## SPSKILLER (2 Dezember 2008)

Geh mal in dort wo du die Screenshots gemacht hast online (Brille) und schreibe hier was im MW256 steht.


----------



## Kunstblume01 (2 Dezember 2008)

Da steht nichts hab das bild mal dran gehangen.


----------



## SPSKILLER (2 Dezember 2008)

Schau mal in einer Variablentabelle nach, was im MW256 steht.


----------



## Kunstblume01 (2 Dezember 2008)

Ok hab jetzt überhaupt erstmal ne Variablentabelle gefunden, die ist aber leer.


----------



## SPSKILLER (2 Dezember 2008)

na dann trag mal MW256 bei Operand ein und geh online (Brille).

Ich hoffe mal du willst mich nicht verarschen


----------



## Kunstblume01 (2 Dezember 2008)

Es steht
Mw256 Symbol:"mw256" Anzeigeformat:"Hex"

das wars,

Sorry wenn der Eindruck entsteht das die Fragen ein bisschen hol sind nur leider geht hier nichts und ich kotz maximal ab!!!!!!!!!!!!!!!!!!!!!!!!!!Gruss

Bei Statuswert steht noch der Operand kann nicht beobachtet werden.


----------



## Gerhard K (2 Dezember 2008)

auf die brille hast du geklickt??und HEX kannst du auch in BIN oder DEZ ändern.


----------



## SPSKILLER (2 Dezember 2008)

bitte Brille einschalten und screenshot machen...


----------



## Kunstblume01 (2 Dezember 2008)

bin wirklich verzweifelt


----------



## SPSKILLER (2 Dezember 2008)

? Wieviele Merker hat denn deine CPU?

Falls du nicht weisst wie du das rausfinden sollst, dann geh im Simatic Manager auf den Bausteinordner, drücke CTRL+D und geh dann im POP-UP Fenster auf den Reiter "Leistungsdaten".

Ansonsten kannst auch einfach mal ne temporäre INT Variable an den RET_VAL schreiben. Die soltest du dann auch im Netzwerk Online sehen können...


----------



## Kunstblume01 (2 Dezember 2008)

Bei Leistungsdaten steht
Merker 2048(Bit) Bereich von M0.0 bis 255.7


----------



## SPSKILLER (2 Dezember 2008)

merkst was?

wenn du weiterhin ein MW für den Status (RET_VAL) verballern willst, dann musst du ein niedrigeres MW nehmen.

Ich würde die Lösung mit temporärvariablen vorziehen.


----------



## Kunstblume01 (2 Dezember 2008)

Ok hab jetzt mal MW100 rein geschrieben jetzt sagt die Variablentabelle was anderes.

und in de online-Darstellung steht jetzt -32873, was sagt mir das?


----------



## SPSKILLER (2 Dezember 2008)

Das sagt dir, das was mit Parameter 2 (Record) des SFC 15 nicht stimmt.


----------



## SPSKILLER (2 Dezember 2008)

Wie sehen denn DB1&2 aus?


----------



## Kunstblume01 (2 Dezember 2008)

In Datenbaustein 2 hab ich das Zustandswort reingeschrieben + den Hauptistwert.
Datenbaustein 1 beinhaltet Steuerwort und Hauptsollwert.


----------



## SPSKILLER (2 Dezember 2008)

wie ist das Teil in HW-Konfiguration angelegt?
Mach davon bitte auch mal noch nen Screenshot.
So Gott will kriegen wir das zum laufen...


----------



## SPSKILLER (2 Dezember 2008)

und check mal noch den Status vom SFC14 ab.
am besten 2. MW ranschreiben und auch in die VAT damit. Screenshot nicht vergessen.


----------



## Dotzi (3 Dezember 2008)

Kunstblume01 schrieb:


> In Datenbaustein 2 hab ich das Zustandswort reingeschrieben + den Hauptistwert.
> Datenbaustein 1 beinhaltet Steuerwort und Hauptsollwert.


 
Deine Strukturen in den Datenbausteinen haben die Länge von 4 Bytes. Die Übertragung von 3 oder mehr als 4 Bytes wird vom SFC14/15 unterstützt.

Siehe http://www.sps-forum.de/showthread.php?t=23246


Gruß


----------



## JoopB (3 Dezember 2008)

Wie Dodzi sagt mit 4 byte's geht das nicht mit die sfc 14 und 15.
Sie muste die daten nach der FU stueren mit 
L DB1.DBD0     //DB mit steurword u.d.
T PAD256       // anfang adres Ausgangen von FU

und die daten abfragen von FU mit

L PED256      // anfang adres Eingangen FU
T DB2.DBD0   // DB mit statusword u.d.


----------



## SPSKILLER (3 Dezember 2008)

Wenn er die HW-Konfiguration mal zeigen würde, dann könnte man ne Aussage dazu machen, wie DB1 & 2 aussehen müssen.

Der Weg mit SFC14/15 ist meiner Meinung nach richtig.
Die DBs sind aber nicht nach HW-Konfig. aufgebaut und momentan zu klein für die SFCs.

Gruß Micha


----------



## Kunstblume01 (3 Dezember 2008)

Ich hab die DB jetzt erstmal vergrößert(siehe Bild).(auf 6Byte), da ich später ja mal mehr übertragen möchte.

Ein Bild von der HW-Konfig hab ich auch mal dran gehangen.
Hab jetzt dem anderen SFC mal noch ein anderen Merker gegeben.
Variablentabelle-->Bild

Ich denke mal es liegt irgendwie an der Adresszuweisung im SFC??
MFG Gunnar


----------



## Kunstblume01 (3 Dezember 2008)

Danke erstmal für deine Hilfe!!


----------



## SPSKILLER (3 Dezember 2008)

Deine Verschaltung an den RECORD - Parametern kommt mir spanisch vor. Hab ich so noch nie gesehen - einfach mit DB-NR.

Probier mal den Aufruf so wie in folgendem Beispielprojekt.

Sollte auf deine HW-Konfig passen.

Ist nur mit einem DB gemacht. Probiers mal aus.

Du musst auf jeden Fall mal von den 82xx, bzw. 83xx des RET_VAL wegkommen. Wenn 0 drin steht ists gut.

Gruß Micha


----------



## Gebs (3 Dezember 2008)

Hallo Kunstblume.

In Deiner VAT stehen die Fehlermeldungen 837F bzw. 827F. D.h. es gibt ein Problem mit dem
Parameter "RECORD". Versuchs mal mit:

P#DB1.DBX 0.0 BYTE 4
bzw.
P#DB2.DBX 0.0 BYTE 4

Wenn Du mehr als 4 Byte lesen/Schreiben willst, musst Du es so machen, wie JoopB es geschrieben hat.

Grüße
Gebs


----------



## Kunstblume01 (3 Dezember 2008)

Ein Wunder ist passiert..............
............es funktioniert!!!!!!!!!!!!!

Ich sage Danke.

Kurze Frage bleibt mir noch, ich habe doch den Datenbaustein 1 auf 6byte erweitert, warum kommt dann eine Fehlermeldung(80B1 Die Länge des angegebenen Zielbereichs ist ungleich der mit STEP 7 projektierten Nutzdatenlänge.), wenn ich"P#DB1.DBX 0.0 BYTE 6" eingebe??
Später möchte ich ja auch DB mit mehr Inhalt übertragen.


----------



## SPSKILLER (3 Dezember 2008)

... weil es nicht mit deiner HW zusammmenpasst.

Wenn du es mit den Strukturen aus meinem Beispiel machst, dann sollte das Problem behoben sein.


----------



## Kunstblume01 (3 Dezember 2008)

Kann ich dann wie in deinem Beispiel den Inhalt des Steuerwortes als Hex-Wert übertragen?


----------



## SPSKILLER (3 Dezember 2008)

Das Steuerwort müsste Wort 0 in der Struktur fürs senden sein (DBW12).

Du kannst die Strukturen ja auch umbauen wie du willst. Die Länge muss halt passen. (12Byte)
Du kannst z.b. deine 4Bytes die du schon angelegt hast in die Strukturen reinkopieren und dann die ersten beiden Worte von mir rauslöschen.

Die symbolische Verschaltung an den SFC dürfte das nicht interessieren.


----------



## Kunstblume01 (3 Dezember 2008)

Jo ich glaub ich komm der Sache näher, dickes Danke erstmal.
Gruss Gunnar


----------

