# Rezeptur Datensatz in die SPS übertragen



## Timey (12 Februar 2011)

Hy liebe Leser,

wollt mal fragen ob mir jemand bei meinem Problem auf die Sprünge helfen kann.

Ich habe in Winncc flexible 2008 eine Rezeptur angelegt.In dieser Rezeptur habe ich mehrere Rezeptur Datensätze angelegt.

Diese Datensätze werden mir mittels"einfache Rezepturanzeige" auf meinem Bediengerät (TP177A) angezeigt. Die Elemente die sich in einem Datensatz befinden kann ich nach belieben mit dem Eingabefeld mit Werten versehen (z.B. Lötbadtemperatur= 50).

Nun möchte ich von der SPS (S7 300/CPU 315-2 pn dp) einen bestimmten Datensatz, der sich im internen Rezepturspeicher des TP's befindet,lesen und in die SPS schreiben bzw. in einem DB schreiben.

Bin bei meiner Recherche bin ich auf den "Steuerungsauftrag Nr.70 gestossen".
Mit dieser Funktion soll man Datensätze aus einem Rezept in die SPS schreiben können.Hab leider noch keine Erfahrung mit Steueraufträgen :neutral:
Kann mit Bereichszeiger "Steuerungsauftrag " und Statuswort usw. nicht viel anfangen


Ist es generell möglich einen Datensatz der auf dem Bediengerät gespeichert ist in die SPS zu schreiben?

oder gibt es eine elegantere Variante an Rezepturdatensätze zukommen?

Würde mich sehr freuen wenn mir jemand weiterhelfen könnte 

Danke schonmal im voraus


----------



## MCerv (12 Februar 2011)

Ich habe das "Rezept laden" auch schon über einen Steuerauftrag gelöst und kann sagen, dass das ganz gut funktioniert. 

In WinCC 'flex" unter Verbindungen mußt Du Variablen (vorzugsweise in einem DB) definieren, die Du von deinem Programm ansprichst. Wenn unter der WinCC Hilfe mal nachschaust, dann findest Du den genauen Aufbau dazu. Zu den Wörtern des Steuerauftrags kommen dann noch die Wörter des Datenfachs (? ich glaube so heißen die, hab grad kein WinCC hier) hinzu, die Du ebenfallst brauchst. 

Per Steuerflanke Steuerauftrag + Rezeptur + Datensatz hintereinander in die Variablen schreiben und alle Wörter im Datenfach löschen, fertig ist das Laden Deiner Rezeptur.

Du erhältst dann im Datenfach eine Bestätigung des Vorgangs (deswegen auch per Flanke vorher Inhalte löschen (Wert "0" !)


----------



## Timey (12 Februar 2011)

Danke für die schnelle Antwort 

werd das am Montag gleich mal ausprobieren.

Ist irgendwas im Winncc flexible noch zubeachten?

z.B, Bereichszeiger für Datensatz oder Steuerauftrag.

würde das so in etwa schreiben

U Merker1 

L 0   //                                                 lade 0  und Lösche Datensatz
T Statuswort                                       (z.B MW6)
L3                                                    // Rezept Nr.3 laden
T Rezepturwort                                     (z.B.MW10)
L 1
T Datensatz



.mal schaun obs klappt  danke nochmal für die schnelle antwort   :-D


----------



## Tigerente1974 (13 Februar 2011)

Du musst einen Variablenbereich (DB) deklarieren, in dem der Steuerungsauftrag abgelegt werden kann. (Bereichszeiger)
Die Deklararion erfolgt unter "Kommunikation" -> "Verbindungen" im Flex.


----------



## Tigerente1974 (13 Februar 2011)

Hier noch ein schöner link, der "Bereichszeiger" und "Steuerungsauftrag" ganz gut erklärt:

http://support.automation.siemens.c...extranet=standard&viewreg=WW&load=treecontent


----------



## Guste (13 Februar 2011)

Ich mach das immer so
Für jedes Rezept einen FC mit zugehörigen DB
z.B Programm 1 hat den FC1 mit DB 1
mit Aufruf FC 1 ein wird dann der DB 1 mit Move in den aktuell DB eingelesen.
DB100
dieser Aktual DB wird dann im WINCC mit Daten gefüttert. Die Daten dann wiederum mit Move in den Speicher DB 1 abgelegt.

Also 10 Rezepte mit 10 Fc und 10 DB


----------



## Ralle (13 Februar 2011)

Guste schrieb:


> Ich mach das immer so
> Für jedes Rezept einen FC mit zugehörigen DB
> z.B Programm 1 hat den FC1 mit DB 1
> mit Aufruf FC 1 ein wird dann der DB 1 mit Move in den aktuell DB eingelesen.
> ...



Wozu brauchst du die 10 FC? Die Repezte können doch auch so in beliebig viele DB und bei Bedarf auch in den DB noch einmal in beliebig viele Rezeptfächer gespeichert werden.


----------



## Timey (13 Februar 2011)

Vielen Dank für die Antworten :smile:


Also ich lege  in Step7 irgendein Datenbaustein an worauf der Bereichszeiger in Wincc zeigt z.B DB2.DW0.

IM SPS-Programm schreib ich in den DB meine Steuerungsauftrags- Paramater z.B 

L 6               (Rezept.Nr.6)
T DB2.DBW1
L 4               (Datensatz 4)
T DB2.DBW2  
L 70             (Steuerungsauftrag 70)
 T DB2.DBW0 
    ...
Bediengerät setzt erste Datenwort auf "0"


Und jetzt lädt er  im internen Rezepturspeicher Rezept 6 - Datensatz 4  und schreibt  die Werte in die Variablen (die dem Elementen eines  Datensatzes zugeordnet wurde)

müssen beide Bereichszeiger(Steuerungsauftrag und Datensatz) unter Verbindungen eingeschaltet sein ?

danke im voraus schnonmal für die antworten:wink:


----------



## Nordischerjung (13 Februar 2011)

Timey schrieb:


> L 6               (Rezept.Nr.6)
> T DB2.DBW1
> L 4               (Datensatz 4)
> T DB2.DBW2
> ...


Das wird nicht funktionieren, da Word immer +2

zB
L 6               (Rezept.Nr.6)
T DB2.DBW2
L 4               (Datensatz 4)
T DB2.DBW4
L 70             (Steuerungsauftrag 70)
 T DB2.DBW0 

DBW0 besteht aus DBB 0+1
DBW1 besteht aus DBB 1+2
DBW2 besteht aus DBB 2+3

so hättest du eine Überschneidung, man sollte sich angewöhnen, Word oder Doppelword immer gerade. zB DBW0, DBW2 usw


----------



## MCerv (13 Februar 2011)

Guste schrieb:


> Ich mach das immer so
> Für jedes Rezept einen FC mit zugehörigen DB
> z.B Programm 1 hat den FC1 mit DB 1
> mit Aufruf FC 1 ein wird dann der DB 1 mit Move in den aktuell DB eingelesen.
> ...



WinnCC flex kann bis zu 65536 Datensätze in einer Rezeptur haben, heißt das für Dich auch 65536 FC's?

Wozu dieser ganze Aufwandt? Während der Automatik ist in vielen Fällen das Rezept laden unerwünscht, also sperre ich einfach den Zugriff auf die Rezeptauswahl! Die Datensätze, die ich lade verteile ich direkt dorthin, wo ich diese benötige!


----------



## Timey (14 Februar 2011)

sooo hab's jetzt hinbekommen 

nochmals Danke für die vielen Ratschläge.


----------

