Step 7 SFC22-CREAT_DB - Fragen

SPS-Fee

Level-1
Beiträge
81
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Grüßt Euch.

Ich arbeite mich seit gestern in die Erzeugung eines DB´s ein und hätte da zum Erzeugen und zum SFC22 ein paar Fragen, da ich weder in den Büchern, hier im Forum noch in der S7-Hilfe das Richtige gefunden habe:

Zu Testzwecken habe ich mal den SFC22 in den OB1 eingebunden.
(Hinweis: Ich arbeite mit der 315-2DB (in der Harware konfiguriert), mit S7 v5.5 und PLCSIM V5.4)

Wenn ich alles richtig verstanden habe, dann gebe ich dem SFC22 vor, dass

1. der DB50 erzeugt werden soll (weil up und low den Wert 50 bekommen)

2. 3 Werte angelegt werden sollen (Count=3)

Und der SGC22 zeigt mir, dass

3. kein Fehler anliegt (MW14 zeigt "0")

Leider verstehe ich nun nicht, warum der Ausgang "DB_Nr_ausgabe" "0" anzeigt und nicht 50.
Wenn ich die 3 Werte abfrage, steht auch nur "0" drin und nicht irgendwelche Werte (so, wie es in den Büchern beschrieben ist).

Was mache ich falsch?

Und nun noch zwei Fragen:
Wie kann ich während der Laufzeit einen DB erzeugen, der dann auch offline besteht?
(also im SIMATIC-Manager in meinem Prog in Bausteine unter OB1, SFC22 zu finden ist)

und

warum finde ich in der Bibliothek keine -in den Büchern beschriebene- SFC82 und SFC85 ?
Liegt es evtl. daran, dass das diese CPU (315-2DB) nicht kann?

Besten Dank im Voraus.

LG SPS-Fee
SFC22.jpg
 
Zuletzt bearbeitet:
Hallo SPS-Fee,

Dein Bild zeigt einen Fehlerstatus mit der Info, dass die Anzahl der zu erstellenden Bytes (MW12) gerade sein soll.

Ein DB wird im Arbeitsspeicher der CPU erzeugt. Offline verfügbar wird er erst, wenn die Online-Version geöffnet und gespeichert wird.

Grüße

Ralph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke dir.
Da war zuvor eine 30 gestanden, hatte aber das gleiche Ergebnis (keine DB-Nr).

Hier das Bild:
SFC22_1.jpg

Wo kann ich eigentlich zu der angezeigten Fehler-Nr. die dazugehörigen Fehler in Klartext nachlesen?

Kannst du mir das bitte mit dem Speichern (öffnen und speichern der Online-Version) an einem Beispiel erklären?

Besten Dank
 
Zuletzt bearbeitet:
Die Doku zu der SFC kann z.B. durch Markieren des SFC-Aufrufes und Drücken von <F1> geöffnet werden. Der zweite Weg ist die Siemens-Dokumentation und da das Dokument "System- und Standardfunktionen für S7-300 und 400".

Das Bild in Beitrag #3 zeigt eine andere Fehlernummer und besagt, dass die DB-Nummer nicht mehr frei ist. Ein zyklischer Aufruf dieser SFC macht keinen Sinn, da der DB nur einmal erzeugt werden kann.

Die Online-Ansicht erreicht man über die Schaltfläche Online im Simatic-Manager bzw. dem Menü Ansicht -> Online. Im geöffneten Fenster sollte der DB50 aufgeführt sein.

Grüße

Ralph
 
Ebenfalls laut der Hilfe:

COUNT:
Der Zählwert gibt die Anzahl der Datenbytes an, die Sie für ihren Datenbaustein reservieren möchten. Sie müssen hier eine gerade Zahl an Bytes (maximal 65534) angeben.

Am besten den SFC22 im OB100 Neustart aufrufen, dann wird er nur 1 mal beim Neustart der Steuerung durchlaufen ...


Wegen der Frage, SFC82 / SFC85
Sind diese Online vorhanden? Kann sein das diese evtl. vom BS eingerichtet werden bzw vorhanden sind.

Vorhanden sind diese jedenfalls in der Standrad Library (stdlib30) ... Die ist im Siematic Manager unter Datei -> öffnen -> Bibilotheken normal vorhanden ...
Von dort kann man sie sich in sein Projekt holen und verwenden wenn man diese benötigt ...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Doku zu der SFC kann z.B. durch Markieren des SFC-Aufrufes und Drücken von <F1> geöffnet werden.
Genau das habe ich noch benötigt. Besten Dank

Das Bild in Beitrag #3 zeigt eine andere Fehlernummer und besagt, dass die DB-Nummer nicht mehr frei ist. Ein zyklischer Aufruf dieser SFC macht keinen Sinn, da der DB nur einmal erzeugt werden kann.
Klar, der DB soll ja beim 2. Zyklus erneut erzeigt werden, was dann den Fehler erzeugt, weil der DB ja schon besteht.
Hätte man bei klaren Kopf selbst drauf kommen können/müssen ;-)

Die Online-Ansicht erreicht man über die Schaltfläche Online im Simatic-Manager bzw. dem Menü Ansicht -> Online. Im geöffneten Fenster sollte der DB50 aufgeführt sein.
Grüße Ralph
Jawoll, da ist er ;-)
Kann ihn aus dem Online-Fenster in mein Offline-Fenster ziehen und öffnen.
Folgendes wird dann angezeigt:
DB50.jpg
Ist das so Ok ?


Ebenfalls laut der Hilfe:
COUNT:
Der Zählwert gibt die Anzahl der Datenbytes an, die Sie für ihren Datenbaustein reservieren möchten. Sie müssen hier eine gerade Zahl an Bytes (maximal 65534) angeben.
War mir klar, hatte sich ein Tippfehler eingeschlichen.

Am besten den SFC22 im OB100 Neustart aufrufen, dann wird er nur 1 mal beim Neustart der Steuerung durchlaufen ...
Ja klar, einmal erzeigen reicht ja voll und ganz ;-)

Wegen der Frage, SFC82 / SFC85
Sind diese Online vorhanden? Kann sein das diese evtl. vom BS eingerichtet werden bzw vorhanden sind.
Vorhanden sind diese jedenfalls in der Standrad Library (stdlib30) ... Die ist im Siematic Manager unter Datei -> öffnen -> Bibilotheken normal vorhanden ...
Von dort kann man sie sich in sein Projekt holen und verwenden wenn man diese benötigt ...
Jep, sie sind vorhanden.
Ich ging auf urlöschen und habe alles neu geladen, dann war alles gesuchte da.


Besten Dank an Euch Beiden.

Weiter gehts im dreivierteltakt ;-)

LG SPS-Fee
 
Folgendes wird dann angezeigt:
Anhang anzeigen 32486
Ist das so Ok ?
Ja, das ist normal so. Unter anderem weil ein mit SFC22 erzeugter DB so ein unstrukturiertes Byte-Array ist, macht man das Anlegen von DB zur Laufzeit normalerweise nicht. Es gibt nur sehr wenige Fälle wo das wirklich nötig ist.


Will man einen SFC im Programm einfügen, dann muß man den nicht vorher in der Bibliothek suchen. Man kann im AWL-Editor direkt tippen "call sfc82" - dann wird er automatisch ins Projekt eingefügt. Beim Laden in die CPU prüft dann die CPU ob aufgerufene SFC überhaupt vorhanden sind und lehnt ggf. das Laden des Bausteins ab.


Die SFC82 und SFC85 siehst Du online, weil Du mit PLCSIM arbeitest und PLCSIM unterstützt vorsichtshalber alles. Den SFC82 haben nur CPU, welche eine MMC haben. Und den SFC85 - ich kann mich auf Anhieb nicht erinnern, welche reale CPU den wirklich hat. Eventuell findet man die Angabe im Operationshandbuch der CPUs

Harald
 
Ja, das ist normal so. Unter anderem weil ein mit SFC22 erzeugter DB so ein unstrukturiertes Byte-Array ist, macht man das Anlegen von DB zur Laufzeit normalerweise nicht. Es gibt nur sehr wenige Fälle wo das wirklich nötig ist.
Harald
Danke Harald.

Mein Grundgedanke war (als ich mich etwas mit DB´s auseinandersetzte), dass ich, wenn ich z.B. einen DB mit 100 Werten benötige, den DB nicht von Hand, also Zeile für Zeile eingeben möchte, sondern ihn bequem von einem kleinen Prog erstellen lasse.
Aber ich sehe schon, man kommt mit dem SFC22 nicht wirklich vernünftig weiter.
Ich muss mich da weiter in Strukturen etc. einarbeiten, weil in so einen DB ja diverse Werttypen stehen können, wie z.B. 5x Int, 10x real, 20x Word etc.

Da gibt es bestimmt geeignete Wege um solche DB sinnvoll zu estellen.

Da muss ich mich aber selbst reinarbeiten, denn von Nichts kommt Nichts ;-)

LG
SPS-Fee
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss mich da weiter in Strukturen etc. einarbeiten, weil in so einen DB ja diverse Werttypen stehen können, wie z.B. 5x Int, 10x real, 20x Word etc.

Da gibt es bestimmt geeignete Wege um solche DB sinnvoll zu estellen.

Da kann man sich ggf einen UDT welchen man zB mittels Array und Struct's aufbaut erstellen.
Dann in der Symboltabelle entsprechend den DB als Typ von UDT deklarieren ...

Somit hat man Offline die Symbolik und Kommentare zum Programmieren ohne das der DB zB eingerichtet ist.
 
Zurück
Oben