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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Fehler beim Laden eines FC Laden (294:6)

  1. #11
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von SPS-EK Beitrag anzeigen
    Ist es bei einem IDB nicht so das nur der Funktionsbaustein auf die Werte im IDB zugreifen kann?
    Denn eine andere Funktion müsste auch auf diese Werte zugreifen können.
    Jein, grundsätzlich ist ein IDB von außerhalb des zugeörigen FBs gesehen nix anderes als ein normaler DB.
    Wenn du einen IDB in Step7 öffnest und bei der Abfrage "Nein" drückst dann geht er auch im ganz normalen DB-Editor auf.
    Man kann im Programm auch normal mit L DB[IDB-DbNr].DBD123 darauf zugreifen, es ist wie gesagt von außen ein normaler DB.
    Der einzige Unterschied ist eben das er einem FB zugeordnet ist der darauf arbeitet. Oft gibt es auch Bausteine wo Parameter/Flags
    im IDB abgelegt werden wo man diese Einstellungen von außen setzt.

    Sollte man von außen auf einen IDB zugreifen (müssen)? Eigentlich nicht, vor allem nicht bei sowas was du vorhast.
    Zitat Zitat von SPS-EK Beitrag anzeigen
    Im Grunde habe ich vor einen fortlaufenden Zähler zu programmieren, der nicht beschränkt ist wie die aus der Bibliothek. Durch Dint könnte man dann ja bis 2147483648 zählen. Es kann gut sein, dass der Zähler mehrmals im Projekt auftauchen kann...
    Am Ende sind es also zwei Zählwerte, ein kontinuierlich fortgeführter und einer pro Stunde.
    Das ist ein Paradebeispiel für einen komplett abgekapselten FC/FB.
    Du möchtest schließlich einen Zähler bauen der als abgekapselter Block für sich zählt und die Ergebnisse dann abliefert. Der Baustein sollte einen Eingangs- und einen Ausgangsbereich haben. Am Eingangsbereich bekommt er Start,Impuls, Reset, am Ausgangsbereich liefert er die Zählerwerte. Das was dazu dazwischen benötigt wird (Flanken, Timer, Zwischenergebnisse) dass willst du außen gar nicht sehen, die soll der Zähler schön in seinem IDB ablegen. Oder besser als Multiinstanz im IDB des FBs der den Zähler-FB beinhaltet.

    Des weiteren ist es auch unschön wenn man einen abschlossen Block an einem Ende des Programms hat und am anderen Ende wühlt irgendjemand in dessen Daten rum und ändert Werte. Da wird die Fehlersuche lustig, am besten noch so dass man keine Querverweise hat.

    Ich hab dir mal ein Beispiel dafür gemacht. Sonst wir die Erklärung ewig lang. Da siehst du auch gleich wie FBs als Multiinstanzen verwendet werden könnten bzw. was ich mit abgekapselter Funktion meine.
    BSP_SimpleCount.zip
    Geändert von RONIN (23.10.2015 um 16:23 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  2. #12
    SPS-EK ist offline Benutzer
    Themenstarter
    Registriert seit
    23.10.2015
    Ort
    Hessen
    Beiträge
    51
    Danke
    12
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @ Ronin: Danke für die erklärung, den Denkanstoß und das Beispiel.
    Genau wie du beschrieben hast, habe ich vor den Zählbaustein zu nutzen.
    Meine Funktion sah von der Programmierung sehr ähnlich aus wie die aus dem Beispiel, nur halt nicht mit dem DB. Habe mein FC in ein FB gewandelt und entsprechend angepasst.

    Ein paar kleinere Änderungen habe ich dabei aber vorgenommen:
    Ich habe zwei TP Zeitbausteine benutzt, die jeweils ein Impuls erzeugen. Das hat bei mir den Hintergrund, dass mir das mit dem Stundenwert auf 0 setzen nach einer Stunde nicht gefällt. Den nach einer Stunde ist der Verbrauch ja nicht 0. Durch die zwei miteinander verknüpften Impulsglieder die jeweils eine Minute laufen, erzeuge ich ein Impulssignal das eine Minute 1 ist und eine Minute 0. Durch zwei weitere Zähler des generierten Impulssignales erfasse ich dann ob der TP1 60 Impulse ausgegeben hat und der TP2 30 Impulse.
    Ist das der Fall und der neue Wert ist größer dem alten, folgt eine Berechnung: WerproStunde= Wertnach2Stunden - WerproStunde.
    So wird der Zählwert pro Stunde nur beim Start oder reset 0 sein und ich müsste immer den aktuellen Wert haben. Man hätte das zwar auch per Mittelwertbildung machen können, aber diese Angabe ist ja nicht genau. Durch die Berechnung, sollte immer der wirkliche Stundenwert passen.
    Desweiteren übertrage ich am Ende die Zählwerte gesamt und pro Stunde nochmal an zwei Ausgangsparameter. Ich denke gerade für die Nutzung zur Anzeige in der Visu ist das nicht verkehrt.

    Nun bleibt mir noch folgende Frage: Ist es denn arg schlimm zwei TPs zu benutzen wenn man den FB als Multiinstanz nutzt? So benötige ich eben auch keine Taktmerker der CPU.

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.169
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Man kann durchaus so viele Timer benutzen wie man will - falls die Timer aber irgendwie zusammengehören (z.B. Impulsfolgen generieren sollen), dann könnte man vielleicht auch Zeiten per Zähler von nur 1 Timer ableiten. Bei nicht exakter Programmierung wird es passieren, daß mehrere TP auseinanderlaufen und nach mehreren Zyklen deutlich sichtbar nicht mehr synchron schalten.


    Wie oft soll sich Dein "WertProStunde" aktualisieren?

    Nach meinem Verständnis Deiner Aufgabe gilt:
    Code:
    Wert_pro_Stunde := Zählerstand_jetzt - Zählerstand_1Stunde_vorher ;
    Wenn Dir z.B. alle 10 Minuten eine Aktualisierung des StundenWertes reicht, dann könntest Du alle 10 Minuten den Zählerstand auf 6 Variablen (z.B. Array) speichern und die Differenz zum Wert vor 1 Stunde in die Anzeige nehmen (überlappende Meßintervalle). Bei einem Neustart müssten die 6 Variablen mit dem Zählerstand_jetzt initialisiert werden. Man könnte auch während der ersten Stunde (bis zum Vorliegen des ersten exakten Zählergebnis) "Hochrechnungen" präsentieren.
    Wenn die Aktualisierung sehr viel häufiger als das Meßfenster erfolgen soll, dann ist ein ungenauerer gleitender Mittelwert mit weniger Aufwand realisierbar. Oder man berechnet wie bei einem km/h-Tacho eine voraussichtliche Hochrechnung aus der Zählerstandsänderung im Aktualisierungsintervall. Die wird aber ungenau und schwankend, weil die prinzipiellen Messfehler und Auflösungsfehler mit multipliziert werden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    SPS-EK ist offline Benutzer
    Themenstarter
    Registriert seit
    23.10.2015
    Ort
    Hessen
    Beiträge
    51
    Danke
    12
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo PN/DP,

    danke für deine Beteiligung.

    Wie meinst du das mit Zeiten per Zähler von nur einem Timer ableiten? Soll ich dann nur ein Timer laufen lassen? Das Problem ist dann ja, dass ich diesen Impuls von 1 Minute 1, 1 Minute 0 nicht erhalte. Daher hab ich ja zwei Timer genutzt.
    In dem FB bzw IDB sind meine zwei Timer als TP1 und TP2 drin. Könnte es da passieren das die sich überscheiden wenn ich den FB mehrmals nutze?

    Mein WertProStunde kann von mir aus während jedem Zyklus an die Ausgangsparameter übertragen werden. Da sehe ich keine Probleme.
    Die Formel hast du richtig erkannt. So decke ich da immer die erste Stunde ab und eine zweite ebenso, wobei die Berechnung erst erfolgt wenn die 2. Stunde abläuft und der 2. Wert größer dem ersten ist.
    Die Berechnung reicht mir so. Mir hat nur nicht gefallen, dass der Wert nach einer Stunde auf 0 gesetzt wird und ebenso gefällt mir auch die Mittelwertbildung nicht. Eine MIttelwertbildung kann hier zu ungenau werden. Durch die Subtraktion der Werte von einer Stunde und von 2 Stunden müsste dies eigentlich genau aufgehen und unnütze Wertspeicherung wie bei Mittelwertbildung entfällt somit auch.

    Ich habe aber noch eine Frage: Wie kann ich eine AWL-Quelle erstellen wobei auch die SFB's mit und die Einträge in der Symbolliste automatisch geschehen?

    Hatte nämlich gerade probiert, meinen FB als AWL-Quelle in ein andere Projekt zu inkludieren nur dabei kamen Fehler raus, weil der FB nicht in der Symbolliste angelegt ist und der SFB 3(TP) muss ja dann in das neue Projekt auch inkludiert werden.

Ähnliche Themen

  1. Fehler beim Laden über TCP/IP
    Von Volkmer im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 21.02.2014, 10:22
  2. Step 7 Laden Fehler
    Von Simpsons im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 16.12.2013, 15:40
  3. Fehler beim Laden in Baugruppe
    Von schneemann im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 27.09.2007, 16:22
  4. Fehler beim Laden von Projekt im Step 7 5.4
    Von Lars Bizare im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.01.2007, 16:00
  5. Variable laden beim betätigen eines Tasters
    Von noeppkes im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.08.2006, 19:02

Stichworte

Lesezeichen

Berechtigungen

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