Step 7 DB im Projekt und Online nicht sichtbar bzw. nicht vorhanden ?!?

spqr76

Level-2
Beiträge
128
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ,
ich bin heute über ein Projekt gestolpert , das ich so zuvor noch nicht gesehen habe, bzw nicht verstehe wie das funktioniert. In einer CNC Bearbeitungsmaschine sind Störmeldungen Bitweise über einen DB programmiert. Bei unserer Fehlersuche wollten wir Rückwärts über die Störmeldung im S7 Programm nachsehen wie diese gebildet wurde. Allerdings gibt es weder im Projekt noch Online in der Maschine den Störmelde DB. Es gibt lediglich eine UDT im Projekt dafür. In verschiedenen Programmteilen findet man aber immer wieder programmierte Bits aus diesem nicht vorhandenem DB. Ok dann sollte die Steuerung ja in Stop gehen wenn man den OB121 aus dem AG löscht. Komischerweise lief die Steuerung weiter . Na gut eventuell wird der Programmteil gerade nicht bearbeitet....hmmm. Trotzdem verstehe ich nicht wie nur über eine UDT und einen nicht vorhandenen DB, die Meldungen auf das HMI kommen. Das DB's im Hochlauf der Steuerung erstellt werden ist mir bekannt und auch nicht ungewöhnlich , aber diese sind dann Online im AG zu sehen. Was meint ihr dazu ? Würde mich wirklich brennend interessieren ob ich etwas falsch gemacht habe oder wie das funktionieren soll. Gibt es Bausteine die ich Online nicht sehen bzw. finden kann? Ich hoffe ihr könnt mir einige Tips geben.
 
Ich geh mal von einer 840D aus .
Der DB2 ist sicher online vorhanden , sollte er nicht in der CPU vorhanden sein oder eine falsche länge haben wird
er mit dem Anlauf erstellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In verschiedenen Programmteilen findet man aber immer wieder programmierte Bits aus diesem nicht vorhandenem DB.
Sind die Meldebits voll qualifiziert angesprochen (DB123.DBX4.5) oder nur der Offset DBX4.5 oder irgendwie indirekt?

Na gut eventuell wird der Programmteil gerade nicht bearbeitet
Das sollte man ja leicht beobachten können, ob der Programmteil bearbeitet wird.

Wie lautet die vollständige Adresse des Meldebits? (DB...DBX...)
Kannst Du das Melde-Bit mit einer Variablentabelle beobachten?
Gibt es Diagnosepuffer-Einträge wegen Zugriffsfehler?

Harald
 
Das ist in der Tat mysteriös!
Ich gehe davon aus, dass die Störmeldung am HMI angezeigt wurde, also diese Störmeldung am HMI auch schon erschienen ist.
Kann es sein, dass ihr eine falsche Störmeldung verfolgt habt? Also vielleicht mit gleichem Text aber mit einem anderen DB?

Na gut eventuell wird der Programmteil gerade nicht bearbeitet

Das müsste man ja online sehen. Sind das vollqualifizierte Zugriffe?
 
Hallo Peter ,
vielen Dank für deine schnellle Antwort. Du hast recht es ist eine 840D und der DB2 ist vorhanden . In meinem Fall handelt es sich aber um den DB168. Die Störmeldungen die wir suchen ist auch genauso in der UDT168 im Projekt zu finden , nur der DB168 ist nicht vorhanden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja die Meldungen sind direkt programmiert also DB168.DBX0.1. Mein Kollege hat mich im Büro angesprochen und mir das Offline Projekt gegeben als er von der Maschine kam. Er hat nur den OB121 an der Maschine Online gelöscht um zu sehen ob die PLC in Stop geht. Ich vermute das wir in diesem moment keinen Fehler anstehen hatten und somit auch der DB 168 nicht angesprochen wird. Deshalb ist die PLC auch nicht in Stop gegangen. Nachtrag: In der Variablentabelle Online kann man den DB168 nicht beobachten die Brille ist durchgestrichen. Wenn ich das Projekt simuliere bleibt die CPU in Stop und meldet DB fehlt. Hmm....
 
Zuletzt bearbeitet:
nur weil das ding udt168 heißt, heißt das noch lange nicht das dieser an den db168 gekoppelt ist.
ich kenne nc-maschine die je nach Option verschiedene Bausteine nutzen.
möglicherweise sucht ihr in einem programmteil der abgewählt ist und die Störungen ganz woanders mit einem anderen db aber der udt168 gebaut werden.

suche mal nur nach dbx4.5 bei verwendungsstelle. könnte etwas mühsam werden abhängig davon wie oft das dbx verwendet wird.

oder erzeuge aus allen Bausteinen eine quelle und suche dort über bearbeiten/suchen_ersetzen nach udt 168

EDIT:
nach udt 168 suchen wenn ihr die quelle als operand absolut erstellt habt
bei symbolisch logischerweise nach dem symbolischen namen der udt suchen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Fehlermeldungen / Alarme die, die 840D auf der HMI Anzeigt kommen aus dem DB2.
da wird sicher irgendwo im Projekt mit MOVE und Pointern gearbeitet.
Es düngt mich der Verdacht das wir einen Mitschreiber haben der die PLC besser kennt.
 
Guten morgen,
nach dem Wochenende habe ich mir das Projekt nochmals angesehen. Im Projekt gibt es vom Hersteller programmierte Fehler FC. Der Aufruf für die Meldungen sieht dann so aus:

Call FC 220 // FC_paramAlarm_nach_Zeit
MeldungsType:='N'
Zeit :=10
A_68xxxx :=DB168.DBX5.4

oder so:

Call FC200 //FC_ParamAlarm_aktivieren
A_68xxxx :=DB168.DBX3.7
MeldungsType:='M'
 
Zuletzt bearbeitet:
Hier nochmal eine kopie aus dem Programm :

Netzwerk 9 : Fehler während OB100 Bearbeitung aufgetreten

L DB7.DBW 128
L 1
>I
SPBN B_ok
S M 100.1
T MB 801
CALL FC 200
A_68xxxx :=DB168.DBX4.1
MeldungsType:='M'
B_ok: L DB7.DBW 130
L 3
>I
SPBN K_ok
S M 100.1
T MB 801
CALL FC 200
A_68xxxx :=DB168.DBX4.2
MeldungsType:='M'
K_ok: L DB7.DBW 132
L 19 // nur wegen Transline
>I
SPBN A_ok
S M 100.1
T MB 801
CALL FC 200
A_68xxxx :=DB168.DBX0.6
MeldungsType:='M'
A_ok: NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie ist der Eingangsparameter "A_68xxxx" von FC200/FC220 deklariert?
Wenn das POINTER oder ANY ist, dann führt der FC-Aufruf selber nicht zu einem Zugriffsfehler. Und innerhalb der FC muß das Programm ja nicht auf die übergebenen Adressen zugreifen (absichtlich oder unabsichtlich).

Harald
 
Hallo PN/DP,
ja du hast recht der IN Parameter ist vom Typ ANY. Dann scheint das wohl des Rätsels Lösung. Ich nehme das mal so hin obwohl ich es sehr unschön finde so zu programmieren.
Vielen dank für eure Unterstützung !!
 
Zurück
Oben