Step 7 S7-200 Pointer

siegener19

Level-2
Beiträge
255
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein Verständnisproblem bezüglich eines Pointers. Ich habe mal ein Screenshot gemacht. Der Pointer, gekennzeichnet mit dem Stern, zeigt auf die Adresse VB400 da im OB1 als Input &VB400 steht. Mit dem BLKMove werden doch der Wert in der Adresse 400 in LW34...LW52 geschoben? Im Programm gibt es dann Sachen wie L34.6 oder L34.7, die an einer Oder-Box oder Und-Box stehen. Was bedeuten diese?
Außerdem habe ich ein anderes Problem und zwar kann ich die Adresse VB400 nicht finden. Für eure Hilfe bin ich sehr dankbar.

Grüße
 

Anhänge

  • ss.jpg
    ss.jpg
    31,4 KB · Aufrufe: 37
L34.6 und L34.7 sind Bits in dem TEMP-Word LW34 im Lokaldatenspeicher des betreffenden Programmbausteins,
so wie V34.6 und V34.7 im globalen Variablenspeicher-Word VW34.
Siehe MicroWIN-Hilfe "Speicher: Arten und Eigenschaften", und da auch die "Siehe auch"-Links.

Wenn in dem Programmbaustein vorher Dein BLKMOV_W ausgeführt wurde und dabei VB400 in LD0 stand, dann kommt der Inhalt in L34.6 und L34.7 original von V400.6 und V400.7

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte vergessen zu sagen, dass es sich um ein fertiges Programm handelt, wo ich ein paar Änderungen machen soll. VB400 kann ich nirgends finden. Habe auch unter Querverweise geschaut?!
 
V400.6 und V400.7 findest Du auch nicht? Ist da vielleicht ein HMI, Panel oder eine andere Kommunikation von außen angeschlossen?

Harald
 
Ja, dazu gibt es eine HMI, die später angeschloßen werden soll. V400.6 und V400.7 finden ich nicht, auch dort nicht. Im OB1 steht aber ein &VB400 und im Unterprogramm dann *LD0. Ganz oben in der Deklaration steht dann LD0.
 
Vorsicht: das LD0 in OB1 ist eine andere Variable als das LD0 in der SBR. Jeder Programmbaustein hat seine eigenen 60 Byte Lokaldaten LB0 ... LB59

Es könnte sein, daß auf LD0 des SBR ein Übergabeparameter liegt.
Wo in der Deklaration in dem SBR steht das LD0? Bei IN oder TEMP oder ...?
Wie sieht die Lokaldatendeklaration des SBR aus?
Wie sieht der Aufruf des SBR aus?
Gibt es in dem SBR vor dem BLKMOW_W noch irgendeine Schreiboperation zum LD0?

Harald
 
Doch, doch ich habe es über die Querverweise gefunden. Blöderweise habe ich die ganze Zeit nach VB400 gesucht. VD400 = VB400...VB403
 
Ich habe mal zwei Bilder gemacht. Der BLKMOV_W steht in Netzwerk 1 im SBR.
Komischerweise kommt der BLKMOV_W in Deinem zweiten Bild mit dem Netzwerk 1 nicht vor..

Aber egal, es wird die Adresse &VB400 an den SBR übergeben, der kopiert dann von VB400...VB419 nach seinen lokalen LB34...LB53. Alles was im SBR mit der Adresse LB34..LB53 angesprochen wird, stammt von VB400...VB419. Also mußt Du im Gesamtprogramm nach VB400...VB419 inklusive alle möglichen Überlappungen suchen.

Gibt es auch eine Symboltabelle, wo V..400... vorkommen? Da müßte in der ersten Spalte markiert sein, wenn irgendwo im Programm überlappend (überschneidend) auf die Symboladresse zugegriffen wird.
Byte/Word/DWord-Überlappungen in V.. sieht man auch bei Querverweise/Verwendete Bytes

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
V..400 kommt weder in der Symboltabelle noch im HMI vor.

Harald, ich danke dir erst mal bis hierhin. Hat mich einen Schritt weitergebracht. Ich hoffe, dass du morgen auch da bist, weil ich jetzt Schluß machen muss. Bis dann
 
Hallo,

also es gibt in den Querverweisen folgendes: VB401 und VB402. VD400 und V400.0 .
"Es wird die Adresse &VB400 an den SBR übergeben, der kopiert dann von VB400...VB419 nach seinen lokalen LB34...LB53. Alles was im SBR mit der Adresse LB34..LB53 angesprochen wird, stammt von VB400...VB419"
Wo sind die VB403 aufwärts bis VB419? Warum finde ich diese im Programm nicht? Und warum wird zum Bsp. mit der L37.1 gearbeitet, obwohl der dazugehörige VB nicht zu finden ist? :confused:

Irgendwo im Programm steht, dass L34.0 ... flags sind. (nur so zu Info).
 
Zuletzt bearbeitet:
Kann noch kurz geklärt werden ob an der CPU noch Profibus oder ASi oder ... CPs oder andere Baugruppen hängen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Momentan ist nichts angeschlossen. Ich habe nur das fertige Programm und versuche das zu verstehen. Für einen, der mit einer S7-200 nie etwas zu tun hatte, nicht einfach.:-(
 
Ehrlich gesagt, weiß ich das nicht. Ich habe die CPU und ob das jetzt noch weitere Baugruppen angeschlossen werden, ist mir nicht bekannt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht gibt es ja noch weitere Programmteile, wo Datenbereiche indirekt bearbeitet werden. Wer ein Doppelword per Pointer übergibt, bei dem muß man mit weiteren indirekten Sachen rechnen...

Vielleicht ist die Struktur ab VB400 auch Teil eines Arrays oder FIFO oder ...? Schwer zu sagen, wenn man das Programm nicht hat (wie wir) oder noch zu wenig Erfahrung hat (wie Du). Suche mal nach weiteren &VB... und prüfe, ob sich von daher Überlappungen zu VB400... ergeben können.

Harald
 
Hab' gerade mal in das Programm hineingesehen. Der Bereich von VB400 bis VB409 dient sozusagen als Instanzdatenspeicher der SBR, damit diese mehrfach verwendet werden kann.

Im ersten Netzwerk werden die Daten aus diesem Bereich in den Lokaldatenstack der SBR geladen:
Code:
[FONT=courier new]LD     SM0.0
BMW    *LD0, LW34, 10[/FONT]

und ganz am Ende wieder zurück:
Code:
[FONT=courier new]LD     SM0.0
BMW    LW34, *LD0, 10[/FONT]

Die Adresse VB400 ist also einfach das Anfangsbyte des dafür vorgesehenen 10-Byte-Speicher bei diesem Aufruf der SBR und könnte auch an einer beliebigen anderen freien Stelle liegen. Der 2. Aufruf legt seine Daten übrigens ab VB430 ab.
Und vor dem Aufruf der SBR wird das erste Bit der Instanzdaten (V400.0) geprüft, um davon abhängig zwischen 2 Werten für einen Eingangsparameter der SBR auszuwählen.
 
Zuletzt bearbeitet:
Zurück
Oben