TIA variable E/A-Adresse in Global-DB

Thomas_27

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

ich bekomme es leider nicht hin, in der Global-DB eine variable Adresse anzugeben, so nach dem Muster:
Lampe (Datentyp?) vorbelegt mit %E2.3
so, daß ich in einem Baustein z.B. ein Verküpfungsergebnis der Variable "global-DB".Lampe zuweisen kann.

Hat jamand dazu eine Lösung?

Danke!
Thomas

ach so: TIA16 ; CPU: 1512C
 
Ich bin mir nicht ganz so sicher was Du genau machen willst.

Also in einem Global-DB muss jede Variable einen festen Datentyp haben. "variabel" ist da keine Option.
Die Angabe
Lampe (Datentyp?) vorbelegt mit %E2.3
ist eine Frage oder eine Aussage?
Im Global-DB kannst Du natürlich eine Variable mit dem Namen Lampe und Datentyp Bool angeben. Diese ist aber nicht vorbelegt mit E2.3.
Wenn Du den Eingang als Variable haben möchtest, dann ist ein Global-DB der falsche Weg.
Dafür würdest Du eine PLC-Variable in der PLC-Variablentabelle erstellen.

Falls das nicht die richtige Lösung ist dann melde Dich nochmal, mit etwas genauerer Aussage was genau Du willst.
 
Hallo escride1,
erstmal danke für die Antwort. Ich hab mich offensichtlich nicht ganz klar ausgedrückt.
Ich möchte eine Variable mit einer Hardware-Adresse hinterlegen, von mir aus auch in der PLC-Variablentabelle.
Sie sollte z.B. Lampe_1 heißen und als Inhalt eine Adresse (wie z.B. %E2.1) bekommen.
Danach möchte ich in einem FUP bei einer Zuweisung eben nicht die feste Adresse (E2.1) verwenden, sondern das Verknüpfungsergebnis an die, in der Variable "Lampe_1" hinterlegten, Adresse zuweisen, welche ja den Inhalt "%E2.1" hat.
 
evtl. wird's einfacher mit Beispiel:
in Variablentabelle:

Code:
Symbol    Adresse    Datentyp    Kommentar
Lampe_1    A2.1    Bool        Lampe 1 Küche

Je nach Einstellung in Deinem Editor (Symbolisch / Absolut) wird dann bei der Zuweisung Lampe_1 oder A2.1 angezeigt.

Hinweis
Wenn Du eine Lampe ansteuern möchtest, musst Du einen Ausgang und nicht wie bei Dir eine Eingang verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sowas habe ich auch schonmal angedacht, für eine art "Schaltur".
Über ein Panel Zeit und Ausgang angeben und fertig... geht leider so nicht.

Was geht wäre über Peek/Poke absolut auf eine Adresse lesen,schreiben. Ist aber extrem unschön.
 
Soll das zur Laufzeit veränderbar sein oder wo ist das Problem? Du beschreibst ja gerade die normale Funktion der Symboltabelle.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du müsstest erst mal den Haken"optimierter Bausteinzugriff" entfernen. Dann siehst Du die absoluten Adressen. Z.b.DB3.DBX0.0 für Datentyp Bool.
Dann kannst Du einen beliebigen digitalen E/A in diese Adresse rangieren und wieder lesen. Vermutlich hab ich aber was falsch verstanden.
 
Um wieviele Lampen-Ausgänge geht es bei Dir?
Warum soll die Festlegung (Adresse) des zu verwendenden Hardware-Ausgangs zur Laufzeit änderbar sein?
Sind an der Steuerung nur Lampen angeschlossen? Oder auch Aggregate mit denen Menschen verletzt werden können?
Ist das für eine Bastel-Anwendung bei Dir zuhause oder soll es eine (industrielle?) Lösung für einen Kunden werden?
Indirekte Adressierung von Ausgängen ist bei vielen Kunden in den Liefervorschriften verboten, weil das so schlecht nachvollziehbar ist.

Du könntest mit 2 Arrays in DB arbeiten:
- ein BOOL-Array (xOutputs) als Zwischenmerker für die Ergebnisse der Ausgangsverknüpfungen
- ein UINT-Array (uiIndex), wo für jeden Lampen-Ausgang der Index in das BOOL-ARRAY eingetragen wird (z.B. mit dem HMI), dessen Wert der Ausgang übernehmen soll

Und dann für jeden Lampen-Ausgang eine Zuweisung etwa so:
Code:
Lampe_1 := xOutputs[uiIndex[0]];
Lampe_2 := xOutputs[uiIndex[1]];
..
Lampe_16 := xOutputs[uiIndex[15]];
Die A-Adressen der Lampen (Lampe_1 .. Lampe_16) legst Du ganz normal in der Symboltabelle (PLC-Variablen) fest.

Harald
 
Zurück
Oben