CALL BLD im OB1 ???

PBO-WE

Level-1
Beiträge
165
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Kann mir jemand einen Tip geben, was es mit folgendem Aufruf auf sich hat?
Ich verstehe nicht was dieses "= L 20.0" bewirken soll. L 20.0 ist das letzte Bit der Date_and_Time Var (12.0 byte 8 ) OB1 started. Aslo das letzte Bit des Wochentags.

Call
BLD 1
= L 20.0 :confused:
UC FC 10
...
...
...
BLD 2
End Call

Danke!
 
L 20.0 ist das letzte Bit der Date_and_Time Var (12.0 byte 8 ) OB1 started. Aslo das letzte Bit des Wochentags.



L 20.0 hat nichts damit zu tun.das muß eine vom Programmierer angelegte Variable sein.Schau noch mal in der Schnittstelle des OB1 nach was da steht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuch mal die Ansicht umzuschalten auf FUP oder KOP. Wenn du einen Baustein z.Bsp. in KOP schreibst und dann auf AWL umschaltest kommt so etwas zu Stande. Siemens schreibt nun die Parameter für den Baustein in den ersten freien Datenbereich der Lokalvariablen. Im OB1 ist L20.0 das erste freie Bit der Lokaldaten. (8 Byte von LB12 geht nur bis LB19). Bei dir scheint es sich hier einfach um einen Aufruf von FC10 zu handeln. L20.0 wird auf True gesetzt und wenn L20.0 True ist wird FC10 aufgerufen.
 
Da ist alles in Ordnung.

Es ist nicht das letzte Bit sondern das erste freie

Datum geht von 12 - 19 (=8 Byte)
L20.0 ist das erste frei Bit von den temporären Varibalen. Diese benutzt Step7 automtisch zur Aufrufparametrierung von bausteinen.
Dies ist notwendig um die Aufrufe in KOP oder Fup anzeigen zu können. Nur in AWL könnte man die Parameter direkt an z.B. einem FB schreiben.
 
Was hast du denn für einen Editor dass die BLD Befehle angezeigt werden?

Der Step 7 Editor verwendet die BLD 1 und BLD 2 Befehle um den Funktionsaufruf passend darzustellen. BLD 1/2 für Funktionen mit Parametern, BLD 14/15 für Funktionen ohne Parameter.
Wenn bei dir "Call" und "End Call" angezeigt wird (sollten rot markiert sein) ist eigentlich irgendwas am Aufruf nicht so wie es sich der Editor vorstellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnellen Antworten.

Ich doof hab mich natürlich mit den 8 BYTE vertan!

kann denn L20.0 beschrieben werden, obwohl es in der Var Deklaration vom OB1 nicht aufgeführt wird???

Die Temp Var L12.0 Date_and_time ist im OB1 die letzte und damit würde doch der Lokaldatenbereich bei byte 19 aufhören, oder?

Ich verwende V5.4 SP3 HF1
Kann gut sein, dass die ansicht vorher in kop oder fup war, aber ich kann leider nicht mehr umschalten, da das call rot ist.
Der FC10 hat einen Zeitstempel konflikt.
Das ist aber nicht mein Problem.
Wollte nur wissen, wofür das = L20.0 steht.

Danke!
 
Du kannst alle Lokaldaten die die CPU für den baustein vorsieht ohne deklaration verwenden.
(Sollte man aber nicht)

Das umschalten in AWL und zurück bringt hier eine Gefahrenquelle.
Fügt man in AWL einen Baustein z.B. aus einem anderen baustein ein, so werden die Lokaldaten nicht aktualisiert. Ist man aber in KOP/FUP und legt eine neue Variable an, so ändert wie hier im Fall Step7 die Adressen um.

Versuch mal in der Zeile wo der Aufruf steht mit der rechtes Maustaste zu klicken, da solte ein Menü erscheinen "Aufruf aktualisieren". Dies benötigst Du wenn du die Schnittstelle des FC 10 geändert hast.
 
Hallo.

Ich hab schon wieder eine Frage dazu...
Code:
U     L     41.0
      =     L     42.0
      BLD   103
      U     L     41.3
      =     L     42.1
      BLD   103
      CALL  #Differenz
       Messwert_1      :=#Messwert_1
       Messwert_2      :=#Messwert_2
       MW_Fehler_1     :=L42.0
       MW_Fehler_2     :=L42.1
       Zul_MW_Diff     :=#Max_Diff
       Verz_Zeit       :=#Verz_Diff_Max
       Differenz_1_2   :=#Akt_Differenz
       Differenz_2_1   :=
       Diff_Zu_Gross   :=L41.6
       Abgelaufene_Zeit:=#Abgelaufene_Zeit
      NOP   0

Ich habe Var
Statusbyte OUT LB40 BYTE
Störbyte OUT LB41 BYTE
Messwert OUT LD42 REAL

Den Baustein habe ich in FUP eingefügt und dann in AWL umgeschaltet.
Step7 hat mir nun diese Zeilen hinzugefügt:
U L 41.0
= L 42.0
BLD 103
U L 41.3
= L 42.1
BLD 103

Wird nicht meine Var Messwert durch die Lokal Var 42.0 und 42.1, die das Programm dort automatisch eingefügt hat, verändert???

Oder werden die nach aufruf des Bausteines automatisch wieder zurück geschrieben auf den Wert, den sie vorher hatten???

:confused:

oder kommt das, weil ich auf eine OUT var zugreife???

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau das ist der Fall wie ich ihn beschrieben habe.
Eigentlich kommt dann eine Warnmelduung, die man eventuell zu schnell wegklickt. In diesem Falle muss man den Baustein händisch durchsuchen und die Fehler korrigieren.
 
Kann es sein, dass ich etwas grundlegendes nicht so ganz verstanden habe?

In einem FB habe ich alle Var typen angelegt.
IN fängt ja bei 0.0 an...
dann gehts mit der Adressierung bei OUT weiter, dann IN_OUT, dann STAT.

Danach kommt in der Auflistung der Temp bereich, aber der fängt ja wieder bei 0.0 an.

Wenn ich nun L0.0 aufrufe, welche Lokalvariable ist nun damit gemeint???
L0.0 aus dem IN Bereich, oder L0.0 aus dem TEMP Bereich???
 
Hallo, also bei einem FB ist das etwas ganz anderes. Hier liegen die IN,OUT,IN_OUT und stat Variablen in einem Datenbaustein. Und der fängt dann bei DBX0.0 an. Da du deine Variablen ja deklarieren musst solltest du sie auch symbolisch adressieren (#MyVar) wenn du sie absolut adressierst würde das so aussehen: DIX0.0 (der InstanzdB ist ja schon geöffnet) nur die TempVar sind im Lokaldatenbereich ab L0.0 abgelegt. Diese sind aber beim nächsten Aufruf nicht mehr gültig.
So richtig lustig wirds wenn du mit Multiinstanzen arbeitest!? Dann kannst du es mit den absoluten Adressen mal ganz vergessen. Ich denke mal der Offset im DI aus AR2 ist für dich (noch) nicht relevant.
Deshalb alle Variablen deklarieren und symbolisch aufrufen egal ob FC oder FB. Dann gibts auch keine Probleme wenn du mal nachträglich etwas an der Deklaration änderst.
Und für die Sache mit dem Umschalten nach AWL, die Meldung beachten die aufpoppt.;)
 
Zurück
Oben