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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: Global-DB als Bitcontainer / Merkerersatz.

  1. #1
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe heute eine Beobachtung gemacht die mich ziemlich ins Grübeln bringt.

    Ich habe ein Programm komplett neu strukturiert so daß alle mehr als ein mal benötigten Bausteine mit einer Schnittstelle versehen worden sind - also multiinstanzfähig.

    Das was vorher Merkerbits übernahmen ist jetzt alles in DBs gewandert - d.h. jede Instanz hat zusätzlich einen Global-DB in dem alle Bits untergebracht sind und deren Zustände nur für die jeweilige Instanz zur verfügung stehen (sollten).

    Ich schreibe deshalb in Klammern "sollten" weil jetzt mein Problem kommt:

    (Nummern und Nämen nehme ich jetzt mal frei schnauze...)

    Im FB 1 wird an OUT ein Bit #Anforderung gesetzt.

    Das Bit #Anforderung wird beim Aufruf des FB 1 dem DB 100.DBX0.0 zugewiesen.

    Jetzt wird anschließend FC 10 aufgerufen - diese hat an IN das Bit #Anforderung ebenfalls DB100.DBX0.0 zugewiesen bekommen.

    Kurzum - ich möchte im FB 1 bestimmen ob im FC 10 etwas passiert oder nicht...

    Jetzt habe ich aber folgendes Phaenomaen (korrekt?) daß im FB 1 das Bit an der Schnittstelle (Beobachtet im OB1) eine 1 führt allerdings wenn ich den DB100 beobachte nicht...
    Genausowenig kommt an der FC 10 das Bit mit 1 an sondern immer mit 0

    Verdacht 1: Es wird zurückgesetzt bevor FC 10 an der reihe ist -> möglich, aber nicht von mir

    Verdacht 2: Wenn nicht von mir dann vielleicht von der CPU ?

    Kann es sein daß wenn der selbe Speicherbereich in dem auch das Bit ist an einem anderen Baustein als IN_OUT deklariert ist - z.B. DB100.DBD0 - und wenn der andere Baustein diesen Bereich momentan nicht verwendet hat weil z.B.:
    ...
    Code:
    // Netzwerk 1
    UN  #Ich_werde_benoetigt
    BEB
    ... es möglich ist daß - warum auch immer der Bereich gelöscht wird ?

    Oder muß hierfür (mehrfach verwendet) dann generell der IN_OUT Bereich für alle Deklarationen gewählt werden ?

    Vorher war das so daß im FB 1 der Merker "Anforderung" gesetzt wurde und dieser dann in FC 10 auch immer noch da war - und es wurde teilweise auch das ganze Merker-DW anderweitig verarbeitet - z.B. Initialschritt - das komplette DW löschen = alle Bits gelöscht usw.

    Was ist jetzt anders bzw. wo könnte der Hund begraben liegen ?
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________
    Zitieren Zitieren Global-DB als Bitcontainer / Merkerersatz.  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    antwort war flasch. gelöscht.

    sollte gehen
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (29.03.2007 um 19:05 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo RM,
    dein Problem hört sich interessant an und ich habe da auch schon einen Verdacht ... Bevor ich da aber etwas sage, hätte ich schon gern ein paar mehr Info's zu deinem Programm - ich muss nämlich gestehen, dass ich durch deine Beschreibung - wenn auch sehr ausführlich - nicht so richtig durchgestiegen bin ...

    Also : in dem Programm word im OB1 erst der FB1 und dann der FC10 aufgerufen ? Der FB1 generiert das Bit und der FC10 ist der einzige Interessent ? Wenn ja - was macht der FC10 ansonsten mit dem Bit ?

    Bis dahin
    Gruß
    Ralf

  4. #4
    Registriert seit
    23.11.2004
    Beiträge
    347
    Danke
    2
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Verwende doch mal im FB1 an Stelle von OUT den Typ INOUT.
    Wenn bei OUT dem DB nicht permanent ein Wert zugewiesen wird, wird dem DB der Wert NULL übergeben.
    Oder habe ich das Problem falsch verstanden?

    Gruß
    raika

  5. #5
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Hallo,
    danke Volker - aber das kanns glaube ich nicht sein.

    Der DB100 ist kein Instanzdatenbaustein.

    Ein wenig ausführlicher:

    Unter Instanzen meinte ich gewisse Programmteile die die selbe Struktur aber ganz unterschiedliche Zustände haben können.

    Beispiel:

    Maschine1 benötigt eine Skalierung, ein Hauptprogramm, eine Überwachung und sonst noch so´n Zeugs...

    Maschine 2-4 aber auch...

    Also habe ich das so strukturiert daß es nur eine Skalierung, ein Hauptprogramm usw. gibt.

    Es werden dann am jeweiligen Baustein beim Aufruf (im Falle von FBs natürlich auch mir separatem DI) die Parameter für die jeweiligen Maschinen zugewiesen wie Messwerte Bits usw.

    Die Bits (was vorher Merker waren) habe ich nun für jede Maschine separat in DBs strukturiert - also vergleichbar mit MD0 für Maschine1, MD4 für M2 usw...

    Nur daß der Vorteil der DBs eben der ist daß der symbolische Name in jedem DB gleich sein darf da sich die DBs untereinander nur noch mit ihrer Nummer unterscheiden (was in der Symboltabelle so nicht ginge...).

    Somit stelle ich in den DBs bausteinweit für jede Maschine (in diesem Sinne also irgendwie auch Instanz) getrennt die Bits zur Verfügung die natürlich auch in verschiedenen Baustein interessant sind.

    Das Problem ist nur daß es einmal ein Eingangs- ein anderes mal ein Ausgangs- und ebensogut ein Durchgangsparameter sein kann - je nach dem was in dem Baustein passiert...

    Ich hoffe das ist so weit verständlich.
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  6. #6
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von RaiKa Beitrag anzeigen
    Verwende doch mal im FB1 an Stelle von OUT den Typ INOUT.
    Wenn bei OUT dem DB nicht permanent ein Wert zugewiesen wird, wird dem DB der Wert NULL übergeben.
    Oder habe ich das Problem falsch verstanden?

    Gruß
    raika
    Das war ja im Einganspost mein Verdacht 2...

    Sorry ich habe meine vorherige Antwort geschrieben und deine erst danach bemerkt...

    Wenn es so ist daß wenn "bei OUT dem DB nicht permanent ein Wert zugewiesen wird, dem DB der Wert NULL übergeben wird" -
    dann würde ich natürlich gern wissen warum - oder zumindest woher du die Info hast ?

    Das würde zumindest plausibel zu meinem Problem passen...
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  7. #7
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    bis auf die sache mit dem inout (was raika oben erwähnt hat) sehe ich eigentlich keine probs.

    poste mal einen codeauszug
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #8
    Registriert seit
    23.11.2004
    Beiträge
    347
    Danke
    2
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Eine lokale variable hat von Haus aus den Wert Null. Wenn du ihr nach dem Bausteinaufruf nichts zuweist, behält sie den Wert Null - oder einen rein zufällig anderen. Diesen gibst Du dann dem Datenbaustein.
    Eine INOUT-Variable dagegen wird ja von Aufruf zu Aufruf gespeichert (durch dich selbst).
    Oder Du verwendest im FB eine Variable vom Typ STATISCH, die wird dann im InstanzDB automatisch gespeichert und steht beim nächsten Aufruf des FB wieder mit dem gespeicherten Wert zur Verfügung.

    Gruß
    raika

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

    rs-plc-aa (29.03.2007)

  10. #9
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    bis auf die sache mit dem inout (was raika oben erwähnt hat) sehe ich eigentlich keine probs.
    Na wenn das keins ist !

    Was möchtest du für Code sehen ?

    In den FBs/FCs gibts nur Formaloperanden und der OB1 hat auf A4 Papier wahrscheinlich 20 Seiten... edit: (Nur AWL - kein KOP/FUP!)

    Im OB1 werden an den Schnittstellen die tatsächlichen Operanden zugewiesen - und logische Fehler (z.B. FB1 OUT= DBX0.0 und FC10 IN= DBX0.1) hab ich schon gesucht wie verrückt - Fehlanzeige.
    Geändert von rs-plc-aa (29.03.2007 um 19:22 Uhr) Grund: Ergänzung
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo RS,
    das war auch mein Verdacht.
    Wenn der Symbolische Ausgang OUT deines FB's mit "S" und "R" und nicht mit "=" zugewiesen wird und in dem Baustein das betreffende Netzwerk entweder übersprungen oder das VKE kein "S" oder "R"v ermöglicht, dann ist OUT in irgendeinem Zustand (zufällig) - so jedenfalls meine Erfahrung mit dem Thema. Der Vorschlag von Raika würde das Problem umgehen, da du ja den alten Zustand wieder in den Baustein mit reinbringst ...

Ähnliche Themen

  1. global db Anfangswert->Aktualwert??
    Von beavis im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.02.2010, 13:10
  2. Global Drive Oszilloskopfunktion
    Von _loki_ im Forum Antriebstechnik
    Antworten: 2
    Letzter Beitrag: 18.09.2009, 13:20
  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
  •