TIA Absolutadressen der Variablen in DB anzeigen

TimeOUT

Level-1
Beiträge
125
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich arbeite seit gestern mit TIA und muss mich darin erstmal zurecht finden.

Was mir direkt auffällt:
In den Datenbausteinen werden die Absolutadressen der Varaiblen nicht mehr angezeigt.

In einer Hilfe habe ich gelesen, dass man beim Erstellen des DB's die "alte" Variante auswählen kann. Allerdings kann ich bei der Bausteinerzeugung diesen Punkt nicht finden.

Muss ich erst noch eine Einstellung zuvor tätigen?

Gruß
 
Rechtsklick auf Datenbaustein --> Eigenschaften --> Attribute --> Häckchen bei "Optimierter Bausteinzugriff" entfernen.

Steht aber schon paar mal im Forum


nachtrag: mit optimierten Bausteinen erzielst du eine bessere Performance als mit nichtoptimierten Bausteinen. Infos gibts schon an vielen Stellen im Forum. Ist schon sehr interessant.
 
Es ist ein InstanzDatenbaustein.

Die Idee ist: ab einer bestimmten Adresse im DB folgende Datenstruktur mittels DPWR_DAT zu schreiben:

BYTE
BYTE
BYTE
BYTE
DWORD
DWORD
DWORD

Dazu benötigt er ua. LADDR (HW_IO) und RECORD (VARIANT).
Ich scheiter gerade ein bissl an dem Variant Zeiger. Reicht es hier einfach die Byte-Variable aus dem DB an den RECORD-Eingang zu ziehen?
Zuvor ist das ganze über einen ANY-Zeiger passiert, welchen man sich gebaut hat,aber wie funktioniert das hier?
Irgendwie ikann ich keine brauchbare Erklärung zum Variant-Ptr zu finden.
 
Hmm

Aber ein Variant-Ptr ist doch in der Lage eine komplette Struktur zu erkennen oder? Also dann autom. nach dem letzten DWORD "abbricht"
 
Bei einem iDB ist das nicht möglich. Du musst den FB, der den iDB aufruft, das Häckchen wegmachen. Dann ist der iDB auch wieder nicht optimiert

Rechtsklick auf Funktionsbaustein --> Eigenschaften --> Attribute --> Häckchen bei "Optimierter Bausteinzugriff" entfernen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm

Aber ein Variant-Ptr ist doch in der Lage eine komplette Struktur zu erkennen oder? Also dann autom. nach dem letzten DWORD "abbricht"

Woran soll er den "erkennen" welche Variablen du haben möchtest und welche nicht? Wenn du eine Struktur deklarierst und in der deine Variablen kannst du alle mit dem Namen der Struktur ansprechen.
 
Warum will Timeout überhaupt die Daten eines InstanzDB mit DPWR_DAT bearbeiten?

Mit DPWR_DAT kann man eine Bytewurst in eine dezentrale Peripherie schreiben. Die Bytewurst scheint aus 4 BYTE und 3 DWORD zu bestehen. So weit so gut. Aber was hat das in einem InstanzDB verloren?

OK irgendwo müssen die Daten ja herkommen. Also warum nicht in der Instanz eines FB. Gut dann schlage ich folgendes vor.

Definieren eines UDT der so aus sieht, wie das was zur Peripherie soll.
Diesen UDT zur Deklaration einer Variablen in einem DB verwenden. Kann auch Static im FB sein.
Werte in die UDT-Variable bringen. Also 4+3 Zuweisungen machen!
Dann diese UDT-Variable an den Variant des DPWR_DAT anschließen/dran schreiben.

Alles andere macht TIA -- dafür lassen sie sich ja auch reichlich Zeit. :ROFLMAO:

Lasst die Finger von den Häckchen bei "Optimierter Bausteinzugriff".:evil: Das führt in die falsche Richtung -- wegen der Ausführungsgeschwindigkeit (mein Lieblingsthema)


HB
 
Morgen,

erstmal danke für die Hilfen.
Ich habe diese "Bytewurst" bereits als Struct definiert, allerdings bekomme ich die Fehlermeldung:

Am Parameter RECORD wurde ein anderer Datentyp als (Array of) Bitfolge oder Ganzzahl angegeben.

Kann es daran liegen, dass die Struktur noch eine Struktur beinhaltet?
Sie strukturiert sich wie folgt:

Daten -Struct
Command -Byte
Kanal -Byte
Addr_1 -Byte
Addr_2 -Byte
Nutzdaten -Struct
DW1 - DWord
DW2 - Dword

usw...

MEin SFC15 aufruf:

Call DPWR_DAT
LADDR: 264 (diese HW_IO)
RECORD: "InstanzDB".Daten
RET_VAL: Error_value


Gruss
timeout

/edit: Ich habe es mitlerweile auch mit einem UDT probiert, den ich in einen globalen DB einer Variable zuweise und dann an RECORD von SFC15 übergebe.
Der Fehler bleibt allerdings bestehen.
 
Zuletzt bearbeitet:
Zurück
Oben