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

Ergebnis 1 bis 6 von 6

Thema: Herkunft von Daten in DB ermitteln

  1. #1
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Böse


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Wir haben eine Anlage, auf der sporadisch Grafikelemente rot aufleuchten, um dem Bediener auf etwas Aufmerksam zu machen. Leider ist der Sinn nicht klar.
    Ich habe damit begonnen, das Programm zu analysieren, bin aber an einem Punkt wo ich nicht weiter komme.
    Problem:
    WinCC 7 liest die Variablen als Rohdatenblock von 60Byte aus DB6000.DBB0
    In Step7 V5.5 ist DB6000 nur deklariert. ohne Kommentar
    In der Aufrufhirarchie liegt DB6000 ziehmlich am Ende mit Kreuzkennzeichnung.
    Über die Referenzliste ist DB6000 nicht auffindbar.

    Ich kann so die Herkunft der Signale nicht feststellen.

    Ich habe dann solange Endschalter gedrückt, bis ich ein Grafikelement hatte.

    Diesen Schalter finde ich im STAT Bereich eines IDB (DB5000) von einem FB.
    Der FB wird ohne IN oder OUT Variablen aufgerufen. Die Variablen des STAT Bereiches werden von anderen FC's mit BLKMOVE beschrieben. Wo sie gelesen werden hab ich noch nicht gefunden. (Der FB ist zur Kommunikation mit einem FU)

    Frage:
    Gibt es eine vernünftige Möglichkeit festzustellen, wie mein Signal von DB5000 nach DB6000 kommt?


    Das Programm umfasst ca. 100 FB, 150 FC.
    Bin für jeden Vorschlag offen.
    Grüsse Holger
    Zitieren Zitieren Herkunft von Daten in DB ermitteln  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von holgermaik Beitrag anzeigen
    Diesen Schalter finde ich im STAT Bereich eines IDB (DB5000) von einem FB.

    Der FB wird ohne IN oder OUT Variablen aufgerufen. Die Variablen des STAT Bereiches werden von anderen FC's mit BLKMOVE beschrieben.
    Wo sie gelesen werden hab ich noch nicht gefunden. (Der FB ist zur Kommunikation mit einem FU)

    Frage:
    Gibt es eine vernünftige Möglichkeit festzustellen, wie mein Signal von DB5000 nach DB6000 kommt?
    (1)
    Wenn du den BlockMove bereits lokalisiert hast, kannst du dort auch erkennen, wo die Quelle der Daten liegt.

    (2)
    Für den Weg von DB5000 nach DB6000 vermute ich eine indirekte Adressierung, der in der Querverweisliste nicht erkennbar ist.
    Du kannst ja mal aus deinen Bausteinen Quellen (=Textdateien) erzeugen und darin gezielt nach "5000" und "6000" suchen lassen.
    An diesen Stellen wirst du dann vermutlich einen Quell-/Zielpointer finden, aus denen du die Herkunft wie unter (1) ablesen kannst.
    kind regards
    SoftMachine

  3. #3
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von holgermaik Beitrag anzeigen
    Der FB ist zur Kommunikation mit einem FU
    Falls der FU über Profibus angesteuert wird, gibt es noch die SFC 14 und 15 zum Schreiben und
    Lesen von Daten in oder aus einem DB von/an den FU, nach denen du Ausschau halten solltest.


    Mal einfach mal so geschrieben, wie es aussehen könnte:

    CALL "DPRD_DAT"
    LADDR:= W#16#xxxx //Anfangsadresse
    RET_VAL:= MW100 //Rückgabewert
    RECORD:= P#DB6000.DBX0.0 BYTE 60 //Zielbereich für Nutzdaten von FU

    CALL "DPWR_DAT"
    LADDR :=W#16#xxxx //Anfangsadresse
    RECORD :=P# DB5000.DBX0.0 Byte 60 //Schreiben an FU
    RET_VAL:=MW102





    _
    kind regards
    SoftMachine

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

    holgermaik (11.10.2014)

  5. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich würde es folgedermaßen probieren:
    Wenn du die SPS nicht in Stop setzen kannst, würde ich das Folgende mit Plcsim durchführen. Und zwar das Programm in Plcsim laden, dann die Fehler OBs online löschen. Wenn die SPS in RUN bleibt ist es OK, ansonsten müssen erst die Fehler behoben werden welche die SPS in Stop setzen.
    Wenn die SPS in RUN bleibt, online den DB6000 löschen. Die SPS sollte in Stop gehen, und anhand der B-Stack Einträge lässt sich die Stelle lokalisieren an der auf den Baustein zugegriffen wird.

  6. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    holgermaik (11.10.2014)

  7. #5
    holgermaik ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Dank euch beiden für die Vorschläge.
    Ja. FU Ansteuerung ist über Profibus.
    Ist erstmal ein neuer Ansatz.
    Werde beides mal testen. Sowohl die Textdatei als auch den DB löschen.
    Grüsse Holger.

    Nachtrag:
    Der Vorschlag mit PLSim ist leider fehlgeschlagen. Durch die PB Diagnose wird festgestellt, dass der Teilnehmer nicht vorhanden ist und somit wird der Programmteil nicht ausgeführt. Behalte ich aber im Hinterkopf und werde bei Anlagenstillstand dies mal probieren.
    Die Möglichkeit mit den Quellen war erfolgreich, wenn auch etwas umständlich.
    Danke nochmals euch beiden.
    Geändert von holgermaik (11.10.2014 um 19:49 Uhr) Grund: Nachtrag angefügt

  8. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    .
    Zitat Zitat von SoftMachine Beitrag anzeigen
    (1)
    Wenn du den BlockMove bereits lokalisiert hast, kannst du dort auch erkennen, wo die Quelle der Daten liegt.

    (2)
    Für den Weg von DB5000 nach DB6000 vermute ich eine indirekte Adressierung, der in der Querverweisliste nicht erkennbar ist.
    Du kannst ja mal aus deinen Bausteinen Quellen (=Textdateien) erzeugen und darin gezielt nach "5000" und "6000" suchen lassen.
    An diesen Stellen wirst du dann vermutlich einen Quell-/Zielpointer finden, aus denen du die Herkunft wie unter (1) ablesen kannst.
    Zitat Zitat von holgermaik Beitrag anzeigen
    Die Möglichkeit mit den Quellen war erfolgreich, wenn auch etwas umständlich.
    Danke nochmals euch beiden.
    Leider ja, aber es freut mich, wenn du erfolgreich warst.
    kind regards
    SoftMachine

Ähnliche Themen

  1. Adresse von Formaloperanden ermitteln
    Von Katzi im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 21.11.2013, 16:11
  2. Adressen von Aktualparameter ermitteln
    Von Reinhard.Steinbrueck im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 06.02.2012, 16:40
  3. NetID von angeschlossenen Geräten ermitteln
    Von grypho im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 17.08.2011, 16:25
  4. Adresse von Struct in TEMP ermitteln
    Von cosmomaster im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 23.05.2011, 19:17
  5. Anzahl daten grösser null ermitteln
    Von uz71 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 26.03.2006, 13:39

Lesezeichen

Berechtigungen

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