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

Seite 1 von 10 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 96

Thema: Vermeiden von Globaldaten

  1. #1
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    308
    Danke
    16
    Erhielt 86 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich beschäftige mich gerade konzeptionell mit der Umstellung meiner eigenen Programmierweise.
    Ziel ist es Modulare Bausteine zu entwickeln die einfach wiederverwendet werden können.Ihre Daten sollen über eine Strukturschnittstelle (ein und ausgangsseitig) an die HMI, an ein Faceplate übergeben bzw. gelesen werden.

    Mir schwebt wirklich vor vollkommen auf Globale Daten zu verzichten um möglichst keine Probleme beim wiederverwenden zu bekommen.

    Hintergrund ist folgender. Ich möchte gerne das die Bausteine im Aufruf eine schlanke Schnittstelle haben. Im Grunde genommen sollen nur noch Daten aus der Peripherie in der Schnittstelle adressiert werden.Gerade auf der IN Seite der Schnittstelle werden meiner Meinung nach Bausteine oftmals mit überflüssigen Daten versorgt die genauso gut intern erzeugt werden können oder als Struktur anstelle von Einzeldaten übergeben werden können.

    Intern erzeugt werden können:
    • Taktbits
    • Logisch 0 & 1
    • Timer Nummern
    • etc.
    Strukturen sollen Einzeldaten ersetzen wie:
    • Eingangsvariablen die eine Skalierung beschreiben. HiLim, LoLim, ZA++, A+, A-, ZA--, Ersatzwert etc. Da man die Struktur sowieso nicht beobachten kann sollen Daten dieser Art aus der Visu direkt in einen Struktur in den STAT Bereich eines FB's übergeben werden.
    • Ausgangsvariablen wie z.b Rohwert, Skalierter Wert und Normsignal.
    • etc.
    Sicherlich ist das hier nur eine sehr grobe Beschreibung meiner Vorstellung. Aber mich würde es interessieren wie IHR einen solchen Ansatz bewertet.

    Gibt es hier Leute die so arbeiten und von Vorteilen und Nachteilen berichten können ? Oder Leute die einen solchen Ansatz im allgemeinen begründet mit Nachteilen ablehnen ?
    Zitieren Zitieren Vermeiden von Globaldaten  

  2. #2
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.536
    Danke
    1.152
    Erhielt 1.253 Danke für 982 Beiträge

    Standard

    Ich persönlich bin kein Freund des vollkommenen Verzichts auf Globaldaten.
    Bei der Fehlersuche musst du dich durch die ganze Aufrufhierachie hangeln. Querverweis bzw. "Gehe zu Verwendungstelle" funktionieren nicht.
    Ich verwende Stationsbezogene Global-DB mit Strukturen.

    Gruß
    Dieter

  3. #3
    Avatar von miasma
    miasma ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    308
    Danke
    16
    Erhielt 86 Danke für 48 Beiträge

    Standard

    Aber beobachten mit Aufrufpfad und Ctrl+Shift+F und Ctrl+Shift+B (lokale Verwendungsstelle) funktionieren doch um zur nächsten bzw. vorherigen Verwendungsstelle zu springen.

    Ein Querverweis ist doch auch gar nicht mehr möglich bzw. nötig weil der Datenpunkt nur noch lokal in der Instanz verwendet wird.
    Ein Querverweis funktioniert doch im Grunde genommen nur bei Globaldaten.

  4. #4
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    389
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Du widersprichst dir.

    Du sagst ein Datenpunkt wird nur Lokal genutzt, willst aber aus der Visu, und von sonst wo noch von Extern drauf "rumpfuschen"...

    Ich habe alles in gekapselten FBs, und schmeisse da eine Struktur dran, die dann in Global-DBs liegt!

    Grüße

    Marcel

  5. #5
    Avatar von miasma
    miasma ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    308
    Danke
    16
    Erhielt 86 Danke für 48 Beiträge

    Standard

    Ja lokal auf der Steuerung im Baustein der den Datenpunkt bearbeitet. Die Visu beschreibt nur die Variable der Instanzdaten. Weitere Zugriffe soll und wird es nicht geben. Das ist kein Wiederspruch oder ich verstehe nicht was Du meinst. Der Zugriff der Visu auf einen Datenpunkt stellt meiner Meinung nach nur ein beschreiben einer Variable da und somit bleibt der Datenpunkt lokal.

    Genau das will ich vermeiden. Eine FB aufrufen und dann noch einen DB erzeugen der den FB versorgt.
    Dann habe ich einen FB mit Instanzdatenbaustein und Datenbaustein.

  6. #6
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    389
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Naja du siehst aber nicht das die Visu in deinem Lokaldaten rumpfuscht!

    Ich habe z.B. einen Baustein der mir Daten zur Visu hoch schießt, der heißt dann auch VISU_KOPPEL_DB!

    Und das Argument mit ein FB und einen GDB ist auch käse, ich habe z.B. einen GDB mit 20 Zylinder-UDTs, auf den ich sauber aus dem Programm und aus der Visu zugreifen kann, ohne auch nur eine Lokale Variable genutzt zu haben!

    Grüße

    Marcel

  7. #7
    Avatar von miasma
    miasma ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    308
    Danke
    16
    Erhielt 86 Danke für 48 Beiträge

    Standard

    Das verstehe ich nicht wieso soll ich einen extra DB zur Visu anlegen wenn ich im Instanzdatenbaustein unter STAT eine Struktur zum Senden an die Visu und eine zum empfangen von der Visu anlegen kann.
    Ich müsste diesen DB jedes mal wieder neu erzeugen wenn ich eine neue Anlage mit anderer Konfiguration Programmieren will.

    Ist es denn wirklich so gängige Praxis,das Daten die nur an einer einzigen Stelle in einem Programm genutzt werden Global zur Verfügung gestellt werden in einem DB oder gar noch schlimmer in einem Merker ?

  8. #8
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    389
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Also ich versuch es mal etwas detailierter zu machen....


    Ich habe einen GDB für Zylinder.

    Dort ist dann 30mal die Zylinderstruktur drin. Vereinfacht ist das mal:

    IN
    Auto_in_GS
    Auto_in_AS
    Hand_in_GS
    Hand_in_AS
    OUT
    POS_IN_GS
    POS_IN_AS

    Das ganze hab ich da drin wie gesagt 30 mal, die nennen wir dann mal Zylinder1, Zylinder2, ZylinderN...

    Wenn ich im Handbetrieb Zylinder 1 verfahren muss schreibe ich also GLOBAL_DB.Zylinder1.IN.Hand_nach_GS
    und fahre Zylinder 1 damit per Hand in GS. Automatisch ist das natürlich gleich.

    An meinen Zylinder FB welchem ich keinen IDB gebe, sondern in dem STAT bereich des ANALGE_ALLGEMEIN FB aufrufe, übergebe ich GLOBAL_DB.Zylinder1, und binde an den Endschalter, Ventile, u.ä. direkt an.

    Die Visu greift auch auf die Struktur im Globalen DB zu!

    Somit habe ich für meine Aufgaben:

    einen Aufruf FB mit den Instanzen der Zylinder im STAT bereich
    einen GLOBAL DB mit den Schnittstellendaten
    und beliebige Zugriffe über den Global DB

    Ich spare mir auf diese Art einen riesen Arsch voll IDBs, habe eine immer identische Aufrufstruktur, die sich nur in dem Zylindernamen unterscheidet, habe volle "Gehe zu verwendungsgelle" Funktionalität und kann sogar noch den Vorteil nutzen das ich bei dem Zylinder FB die IN Variablen "ignorieren" bzw. ENABLEn kann, und somit auch einen Zylinder ohne großen Aufwand deaktivieren könnte.

    Das hat sich für mich und meine Kollegen als eine gute und gängige Praxis bewährt!

    Grüße

    Marcel


    Edit: Ach ja der Globale DB sollte so ausgelegt sein, dass man immer ReserveStrukturen hat... aber auch das nachträgliche Anfügen ist kein Problem...

  9. Folgender Benutzer sagt Danke zu Matze001 für den nützlichen Beitrag:

    Blockmove (01.09.2012)

  10. #9
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.536
    Danke
    1.152
    Erhielt 1.253 Danke für 982 Beiträge

    Standard

    @Matze

    Ich mache es ebenfalls in dieser Art und Weise.
    Dazu noch stationsbezogene DBs mit Betriebsarten und Typdaten und Gut is.

    Mir ist Querverweis und volle Gehezu-Funktionalität auch extrem wichtig.

    Gruß
    Dieter

  11. #10
    Avatar von miasma
    miasma ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    308
    Danke
    16
    Erhielt 86 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Matze
    Wozu nutzt man dann überhaupt einen FB wenn man die Daten aus einem externen Datenbaustein liest und schreibt ?

    @Blockmove

    Wozu sollte ein Querverweis bei lokaldaten dienen ?

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 21.02.2011, 18:40
  2. Globaldaten auslesen
    Von Funky im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 29.12.2010, 10:49
  3. SF-Fehler in CPU vermeiden
    Von Outrider im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.11.2010, 18:58
  4. Antworten: 19
    Letzter Beitrag: 16.09.2007, 20:13
  5. Antworten: 1
    Letzter Beitrag: 24.09.2006, 02:20

Lesezeichen

Berechtigungen

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