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

Ergebnis 1 bis 6 von 6

Thema: Global DB Variablen im FC verarbeiten

  1. #1
    Registriert seit
    15.12.2010
    Beiträge
    5
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.
    Ich bin zurzeit dabei mit Step 7 ein Programm für ein Regelungsmodell zu schreiben. Das Modell hat eine Füllstands- und eine Temperaturregelstrecke.
    Füllstand bzw. Temperatur werden über einen Ultraschallsensor bzw. PT100 abgefragt. (Hängen an einer SM334 8Bit)

    In zwei verschiedenen Programmen möchte ich den Füllstand einmal mit einem stetigen Regler und einmal mit einem 2-Punkt Regler regeln.

    An die SPS wird jetzt noch ein OP170b mit WinCC Flex 08 über Profinet angeschlossen, um den Prozess zu visualisieren. Da ich bisher nie mit DB's gearbeitet habe, habe ich z.B. die Sensorwerte aus den PEW's skaliert und in Real umgewandelt. Die Real-Werte habe ich in MD's abgespeichert, damit ich diese dann direkt in der Visu darstellen kann.


    Für die beiden Regelstrecken wollte ich die Sollwerte über die Visu in Real MD's vorgeben. Da ich das Modell aber auch ohne Visu betreiben können will, hatte ich mir gedacht, dass ich einen Sollwert vorgebe und dieser dann über das Panel geändert werden kann. (Das Modell selbst hat nur 3 Taster + Schlüsselschalter, diese Werden nur für die Programmwahl am Modell selbst verwendet. Hatte ich ungünstig formuliert, damit möchte ich nicht die Sollwerte ändern, dies sollte nur via Panel geschehen. )

    Bisher hatte ich keine Idee, wie ich das am Besten realisieren kann, bis ich gelesen habe, dass man bei DB's Startwerte vorgeben kann, die beim Start der CPU geladen werden und später auch geändert werden können. Und da einige zur Übersicht eh auf DB's setzen, wollte ich das dann mal ausprobieren.

    Ich habe jetzt also einen globalen DB1 erstellt und in diesen meine Analogwerte eingetragen und bei den beiden Sollwerten einen Anfangswert in Real eingetragen und das Ganze in der Datenansicht initialisiert.

    Viel Text, bis ich zum Kern komme:
    Wie schaffe ich es jetzt, von den einzelnen FC's auf den globalen DB zuzugreifen? Ich habe im OB1 ein Netzwerk eingefügt, in dem ich über einen "OPN" Baustein den DB1 aufrufe.
    Müsste ich jetzt nicht eigentlich im FC bei dem Fenster, in dem der Baum "Schnittstelle" ist die von mir eingetragenen Variablen sehen können um diese dann in das Programm einfügen zu können?

    Ich gehe mal sehr stark davon aus, dass ich bisher irgendetwas elementares übersehen habe.
    Könnte mir jemand erklären, was ich bisher falsch gemacht habe?

    Schöne Grüße
    Geändert von kadney (20.09.2011 um 21:22 Uhr) Grund: Tippfehler, das 2. OB sollte ein DB sein. :-)
    Zitieren Zitieren Global DB Variablen im FC verarbeiten  

  2. #2
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.471
    Danke
    506
    Erhielt 218 Danke für 193 Beiträge

    Standard

    Du solltest im DB die entsprechenden Bereiche mit "Symbolik" versehen.

    wenn dein DB auch in der Symboltabelle entsprechend angelegt ist kannst du zb.:

    DBYXZ.TEMPERATUR_1 zugreifen.

    ohne Symbolik:

    DB100.DBD2 (wenn dein Wert hier als Word abgelegt ist.)
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  3. #3
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.595
    Danke
    63
    Erhielt 261 Danke für 221 Beiträge

    Standard

    Hallo.

    Das Ganze ist gar nicht so kompliziert, wie Du es Dir denkst.

    In dem DB liegen die 3 Sollwerte. Diese verknüpfst Du an ein Ein-/Ausgabe-Feld auf dem OP. Damit kannst Du die Sollwerte schon mal vom OP aus verändern.

    So wie ich es verstanden habe willst Du über die 3 Tasten dann jeweils einen der Sollwerte auswählen. Eine Möglichkeit wäre nun, den DB zu erweitern indem Du dort eine Variable für den Sollwert reservierst.

    Z.B.:
    DB1.DBD0 = Sollwert_aktuell (REAL)
    DB1.DBD4 = Sollwert_1 (REAL)
    DB1.DBD8 = Sollwert_2 (REAL)
    DB1.DBD12 = Sollwert_3 (REAL)

    Nun machst Du in dem FC noch die Aufrufe:

    Code:
    U Taste_1
    SPBN m001
    
    L DB1.DBD4
    T DB1.DBD0
    
    m001: nop 0
    
    U Taste_2
    SPBN m002
    
    L DB1.DBD8
    TDB1.DBD0
    
    m002: nop 0
    usw...

    Es gibt sicher auch noch elegantere Möglichkeiten, ich halte diese Lösung aber für einfach nachvollziehbar, wenn man noch in den Anfängen steckt.

    Im OB1 rufst Du dann noch den FC auf. Den OB1 musst Du nicht aufrufen. (War das ein Tippfehler?)
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #4
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.595
    Danke
    63
    Erhielt 261 Danke für 221 Beiträge

    Standard

    Nachdem der Tippfehler nun bereinigt wurde noch eine kurze Erklärung:

    Es ist möglich, eine DB-Variable auf mehrere Arten aufzurufen.

    Entweder öffnest Du zuerst den DB (wie von Dir gemacht), und machst die Operationen dann nur mit den Adressen:

    Code:
    L DBD 0
    T DBD4
    Vorteil dieser Variante: Bei mehreren Operationen mit Werten aus dem gleichen DB spart man etwas Zykluszeit.

    Vorteil folgender Variante (ohne vorheriges Öffnen des DB)

    Code:
    L DB1.DBD0
    T DB1.DBD4
    1. In den Querverweisen tauchen die Operationen auf
    2. Wie schon von Winman erwähnt kann man auf diese Weise symbolisch arbeiten.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  5. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    kadney (20.09.2011)

  6. #5
    kadney ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.12.2010
    Beiträge
    5
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Okay, ich danke euch beiden. Ist echt wesentlich einfacher, als ich dachte.
    Und ja, das 2. OB sollte ein DB sein.

    Und das mit den drei Tastern habe ich nur geschrieben, da ich nicht x Taster mit "Lade Wert X in MD XY" oder "Lade Wert Y in MD XY" belegen kann.

    Ich hatte in der DB schon einen passenden Namen und Kommentar eingetragen. An einem entsprechenden Eingang kann ich tatsächlich einfach z.B: DB1.DBD24 schreiben. Oder einfach ein "D" und dann in der Auswahl den DB1 aufklappen und den entsprechenden Eintrag suchen. In der Visu sollte man die Variable ja über ein E/A Feld bearbeiten können, wenn ich das bisher richtig gesehen habe, ist auch noch Neuland für mich.
    Werde mich da die Tage mal durchkämpfen und zur Not frag ich nochmal nach.


    Vielen Dank!

  7. #6
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.471
    Danke
    506
    Erhielt 218 Danke für 193 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Grundsätzlich:

    Das Programm sollte in der SPS eigenständlich laufen.

    von der Visu (TP, . . .) werden in Merkern, noch besser in DB Variablen gelesen / geschrieben.

    Das Programm in der SPS prüft das was von der Visu geschrieben wird und wenn glaubwürdig, dann nimmt es das als neue Vorgabe.

    Die Anzeige an der Visu kann aktuelle Werte der SPS darstellen. Am übersichtlichsten wird das so gemacht:

    Dei Werte die in der Visu dargestellt werden sollen kommen in einen DB.
    Die Werte die von der Visu beschrieben werden sollen liegen in einem eigenen DB
    Somit ist klar ersichtlich was von wo kommt. Das ganze wird auch als Kapselung, . . . benannt.
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  8. Folgender Benutzer sagt Danke zu winnman für den nützlichen Beitrag:

    kadney (09.10.2011)

Ähnliche Themen

  1. BIT aus einer WORD Variablen verarbeiten
    Von ziede im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 11.12.2010, 14:18
  2. Phoenix Visu+ - Variablen global addressieren
    Von Vaninger im Forum PHOENIX CONTACT
    Antworten: 0
    Letzter Beitrag: 10.11.2009, 12:27
  3. Darstellungsart in Global-DB's
    Von Diesla im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.04.2009, 09:55
  4. Global und Instanz DBs ?
    Von Insane im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 07.01.2009, 13:27
  5. Global-DB vs. Instanz-DB
    Von b0den im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.06.2008, 13:17

Lesezeichen

Berechtigungen

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