Step 7 Herkunft von Daten in DB ermitteln

holgermaik

Level-3
Beiträge
1.360
Reaktionspunkte
336
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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





_
 
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.
 
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.:D
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
.
(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.

Die Möglichkeit mit den Quellen war erfolgreich, wenn auch etwas umständlich.
Danke nochmals euch beiden.:D

Leider ja, aber es freut mich, wenn du erfolgreich warst. :D
 
Zurück
Oben