Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 42

Thema: FC hat kein "Gedächtnis", warum?

  1. #21
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.642
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Perfektionist Beitrag anzeigen
    sag mir was, was FB im Gegensatz zu FC nicht können. Ausser Speicherplatz sparen.
    Sie sind halt auf eine Instanz angewiesen wenn man auf die Schnittstelle zugreifen will. Und einfach nur einen DummyDB zu verballern weil man keinen Speicher braucht nur um auf FCs verzichten zu können ist irgendwie Dekadent

    mfG René

  2. #22
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.582
    Danke
    63
    Erhielt 261 Danke für 221 Beiträge

    Standard

    Auch wenn man dieses Thema sehr emotional diskutieren kann, darf man nicht vergessen sachlich zu bleiben.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #23
    Registriert seit
    13.10.2007
    Beiträge
    12.063
    Danke
    2.793
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard

    ähm, mann könnte auch einen FB mit den Befehlen "UC" oder "CC" aufrufen, somit
    hat der Funktionsbaustein keinen Instanzdatenbaustein und damit auch keine Baustein-
    parameter, also keine statischen Lokaldaten.
    Mit der Aufrufanweisung "CC" und "UC" werden FCs und FBs gleich behandelt.

    Also geht es auch ohne Dummy DB. Meiner Ansicht nach sollte Siemens einfach den
    Nummernbereich (solange es erforderlich ist) erweitern. Somit könnte man in der Tat
    auf Funktionen verzichten.

  4. Folgender Benutzer sagt Danke zu rostiger Nagel für den nützlichen Beitrag:

    Perfektionist (04.10.2012)

  5. #24
    Miffi ist offline Benutzer
    Themenstarter
    Registriert seit
    24.09.2012
    Beiträge
    71
    Danke
    70
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke allen für die Erklärungen. Es hat lange gedauert, bis ich mich durch alle neuen Begriffe durchgearbeitet habe, aber dafür bin ich ein Stück weitergekommen.

    So wie ich es verstanden habe (bitte um Korrektur, falls nicht richtig), kann man FCs auch dazu benutzen Daten zu speichern, indem man Merker bzw. Speicherfunktionen (SR, RS) einsetzt. Dazu muss man Speicherplatz schon vorher fest reservieren und nicht erst beim Aufruf ???!!? Demzufolge würde aber die Aussage, FCs könnten keine Daten speichern, nicht ganz richtig sein, oder?

    So wie ich es herausgelesen und nachgelesen habe, bedeutet Merker/Speicherfunktionen zu benutzen, eine größere "händische" Arbeit, weil man dafür Sorge tragen muss, dass die Dateninhalte der verwendeten Merker wieder aufgeräumt werden, wenn man die betreffenden FCs wieder an einer anderen Stelle verwenden wollte, um unerwünschte Dateninhalte zu vermeiden?

    Bei Verwendungen von FBs würde das System dies für den Programmierer übernehmen, weil es durch die Instanzierung den Datenbereich automatisch zuordne. Eine Instanz1 könnte nicht aus Versehen auf Daten der Instanz2 zugreifen? Ist das der Hauptgund, vielleicht um Programmabstürze zu vermeiden?

  6. #25
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Zitat Zitat von Miffi Beitrag anzeigen
    Demzufolge würde aber die Aussage, FCs könnten keine Daten speichern, nicht ganz richtig sein, oder?
    Das stimmt.

    Ganz kurz erklärt:

    Das "FCs können keine Daten speichern", gelt nur für die Variabeln die in den Header für den FC deklariert sind. Alle die Daten die in ein FC Deklariert sind, sind TEMPs (temporäre = ohne speicherung).
    Ein FC kann auch Daten speichern wenn sie als IN_OUT deklariert sind. Es ist aber aufwendiger.
    Direkten Zugriffe zu DBs oder Merkers innerhalb von den FC ist auch möglich. Aber dann kann den FC nicht als "wiederverwendbare" Baustein verwendet werden.

    In ein FB werden die Daten die als STATs deklariert sind (statische = mit Speicherung) automatisch gespeichert in den Instanz-DB (IDB) den mit den FB verknüpft werden muss.
    Man kann auch TEMP Daten in ein FB deklarieren, die werden dann nicht in den IDB gespeichert.
    Also, mit ein FB + IDB bekommt man einfach und automatisch gespeicherte Daten, auch wenn den FB für viele Instanze verwendet werden.

    edit: Für 100% Korrektheit, muss gesagt werden, das es gibt noch weitere Verfahren womit man in ein FC Daten schreiben kann. Man kann mit Pointern fast alles machen.
    Geändert von JesperMP (04.10.2012 um 10:10 Uhr)
    Jesper M. Pedersen

  7. #26
    Registriert seit
    13.10.2007
    Beiträge
    12.063
    Danke
    2.793
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard

    Zitat Zitat von Miffi Beitrag anzeigen
    So wie ich es verstanden habe (bitte um Korrektur, falls nicht richtig), kann man FCs auch dazu benutzen Daten zu speichern, indem man Merker bzw. Speicherfunktionen (SR, RS) einsetzt. Dazu muss man Speicherplatz schon vorher fest reservieren und nicht erst beim Aufruf ???!!? Demzufolge würde aber die Aussage, FCs könnten keine Daten speichern, nicht ganz richtig sein, oder?
    ist jetzt ein bischen Wortspielerei, aber ein FC hat keine möglichkeit Daten zu speichern, aber man kann mit den FC Daten speichern. Als
    Speicherbereich werden dann Globaldaten genutzt, zb. Merker oder Datenbausteine.

    ein FB hat durch verwendung von Instanzdatenbausteine, für den jeweiligen Aufruf ein Gedächnis.

  8. #27
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.344
    Danke
    28
    Erhielt 131 Danke für 118 Beiträge

    Standard

    Zitat Zitat von Miffi Beitrag anzeigen
    So wie ich es verstanden habe (bitte um Korrektur, falls nicht richtig), kann man FCs auch dazu benutzen Daten zu speichern, indem man Merker bzw. Speicherfunktionen (SR, RS) einsetzt. Dazu muss man Speicherplatz schon vorher fest reservieren und nicht erst beim Aufruf ???!!? Demzufolge würde aber die Aussage, FCs könnten keine Daten speichern, nicht ganz richtig sein, oder?

    So wie ich es herausgelesen und nachgelesen habe, bedeutet Merker/Speicherfunktionen zu benutzen, eine größere "händische" Arbeit, weil man dafür Sorge tragen muss, dass die Dateninhalte der verwendeten Merker wieder aufgeräumt werden, wenn man die betreffenden FCs wieder an einer anderen Stelle verwenden wollte, um unerwünschte Dateninhalte zu vermeiden?

    Bei Verwendungen von FBs würde das System dies für den Programmierer übernehmen, weil es durch die Instanzierung den Datenbereich automatisch zuordne. Eine Instanz1 könnte nicht aus Versehen auf Daten der Instanz2 zugreifen? Ist das der Hauptgund, vielleicht um Programmabstürze zu vermeiden?
    Also ich sage einmal Global, Du hast es noch nicht richtig verstanden .
    Du musst Dich tioefer mit dem System SPS Programmierung und Funktion befassen!

    Merker müssen nicht unbedingt aufgeräumt werden. Kommt ja auch darauf an, was man damit machen möchte!
    Man kann zwar Merker durch DB's ersetzen (auch umgekehrt) aber früher war es z.B. so das halt der Zugriff auf einen DB die doppelte Befehlslaufzeit hatte!

    Beim FC wird halt der lokale Speicherbereich (Stack) nicht am Bausteinende gespeichert, was beim FB der Fall ist (darum auch der DB).
    Beim FC könnte man dies selbst realisieren und seinen alocierten Speicher in z.B. einen DB (DatenBaustein) speichern.
    Da man nicht bei jeder Funktion zwingend bein neuen Auruf diese alten Daten benötigt, wird wohl daher der FB mit seinem DI entstanden sein

    Im Prinzip ist ein DB eh nix anderes als ein Merkerbereich! Nur halt in einer definierten Struktur ...
    Geändert von Boxy (04.10.2012 um 10:30 Uhr)

  9. #28
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.642
    Danke
    787
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    ähm, mann könnte auch einen FB mit den Befehlen "UC" oder "CC" aufrufen, somit
    hat der Funktionsbaustein keinen Instanzdatenbaustein und damit auch keine Baustein-
    parameter, also keine statischen Lokaldaten.
    Mit der Aufrufanweisung "CC" und "UC" werden FCs und FBs gleich behandelt.
    Aber man hat dann ja auch keinerlei Schnittstelle mehr, welche man beschalten könnte.

    mfG René

  10. #29
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von Miffi Beitrag anzeigen
    Bei Verwendungen von FBs würde das System dies für den Programmierer übernehmen, weil es durch die Instanzierung den Datenbereich automatisch zuordne. Eine Instanz1 könnte nicht aus Versehen auf Daten der Instanz2 zugreifen? Ist das der Hauptgund, vielleicht um Programmabstürze zu vermeiden?
    genau das ist es. nur haben das viele Lehrer und Oberlehrer noch nicht begriffen.

  11. #30
    Registriert seit
    13.10.2007
    Beiträge
    12.063
    Danke
    2.793
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vollmi Beitrag anzeigen
    Aber man hat dann ja auch keinerlei Schnittstelle mehr, welche man beschalten könnte.

    mfG René
    Das stimmt auch wieder, die sind aber auch blöd bei Siemens.

Ähnliche Themen

  1. "Fehler 3740: Unbekannter Typ FbDALI_Joblist" wieso, warum, weshalb?
    Von KingHelmer im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 31.08.2012, 11:20
  2. Antworten: 9
    Letzter Beitrag: 15.06.2012, 16:17
  3. Ich finde kein "WinAC MP" Ordner im HW Katalog.
    Von JesperMP im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.01.2010, 14:54
  4. Fehlermeldung: "Kein Parameterbaustein"
    Von Hightowerxxx im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 06.02.2006, 15:19
  5. Antworten: 2
    Letzter Beitrag: 29.10.2005, 17:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •