Adressierung und Zuweisung von Variablen

Eddiemaus

Member
Beiträge
23
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich habe da gleich noch eine Frage.
Ich habe in mein DB eine Direkte Adressierung und Wertzuweisung von Variablen.

AdresseNameTypAnfangswert
+0.0PEWINT250
+2.0WichtigBOOLTrue

Nun habe ich das in einer ersten Version in AWL gemacht, aber nun will ich einen universellen Baustein in FUP bauen, wo ich beim Aufruf des FC's im OB1 diese beiden Werte nicht im DB sondern direkt einstellen und vorgebe.
Müsste ich die Variablen aus dem DB nehmen und im Symbol Editor alle dann einfügen ?
Wie mache ich das mit der Zuweisung ?.... Ich bin irgendwie noch sehr verrostet .. Versuche mich aber tagtäglich wieder reinzufuchsen.

Gruß
Eddiemaus
 

Tigerente1974

Well-known member
Beiträge
1.816
Punkte Reaktionen
290
Auch diese Fragestellung ist leider wieder nicht eindeutig...

Wenn Du direkt auf ein PEW zugreifen willst, geht das ohne symbloischen Namen.

Du schreibst an den IN_Parameter einfach nur die absolute Adresse. Z.B. PEW 754.
 

winnman

Well-known member
Beiträge
1.955
Punkte Reaktionen
296
Zuviel Werbung?
->Hier kostenlos registrieren
Wenn du dein PEW nur so im DB stehen hast und nicht irgendwo das PEW in den DB kopierst, dann steht in deinem DB nur der Anfangswert.

Ich mach immer eine "Eingangsbehandlung" (invertieren, Skalieren, . . .) und schreibe das dann in den DB (jezt heisst das dann aber nicht mehr PEWxy sondern da steht dann zB.: Lagertemp_T754)

Im restlichen Programm greife ich dann nur mehr auf diesen DB zu.

Da hat jezt den Vorteil: Muss der Eingang Invertiert werden, mach ich das nur 1x an einer Stelle. Ändert sich der Messbereich eines Analogeingangs weil der Fühler getauscht wird, . . . . immer nur an einer Stelle Änderungen, der ganze Rest des Programms muss nicht mehr geändert werden.

Hast du im Programm an mehreren Stellen direkten Zugriff auf die Peripherie, so must du bei Änderungen jede einzelne Stelle ändern.
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Hallo,
ich habe dir Frage auch nicht richtig verstanden.
Falls es sich hier aber um "symbolische Adressierung" der Variablen in dem DB handeln sollte dann reicht es, wenn der DB einen symbolischen Namen erhält - dann kann man auch alle darin enthaltenen Variablen symbolisch ansprechen ...

Gruß
Larry
 
OP
E

Eddiemaus

Member
Beiträge
23
Punkte Reaktionen
0
Wenn du dein PEW nur so im DB stehen hast und nicht irgendwo das PEW in den DB kopierst, dann steht in deinem DB nur der Anfangswert.

Ich mach immer eine "Eingangsbehandlung" (invertieren, Skalieren, . . .) und schreibe das dann in den DB (jezt heisst das dann aber nicht mehr PEWxy sondern da steht dann zB.: Lagertemp_T754)

Im restlichen Programm greife ich dann nur mehr auf diesen DB zu.

Da hat jezt den Vorteil: Muss der Eingang Invertiert werden, mach ich das nur 1x an einer Stelle. Ändert sich der Messbereich eines Analogeingangs weil der Fühler getauscht wird, . . . . immer nur an einer Stelle Änderungen, der ganze Rest des Programms muss nicht mehr geändert werden.

Hast du im Programm an mehreren Stellen direkten Zugriff auf die Peripherie, so must du bei Änderungen jede einzelne Stelle ändern.

Hallo Winman,

also du bist schon recht nach an meinen Problem dran.
Im DB steht nur der Anfangswert, und wird von da zunächst nur gelesen.
Die PEW Variable welches ein INT ist will ich aber auch halt von draußen beschreiben, und gegenbenfalls den Anfangswert nicht im DB sondern als IN-Variable (Input) dann deklarieren.
Mit der Bool Variable würde ich einfach nur den Zuweisungsbaustein benutzen ( "=") und beim Eingang und der Zuweisung jeweils 'Wichtig' eintragen, oder gibt es da eine elegantere Lösung ?
Dann bleibt halt nur die Frage wie ich recht einfach den INT Wert in mein DB schreibe :)

Danke und Gruß für eure Geduld
 

winnman

Well-known member
Beiträge
1.955
Punkte Reaktionen
296
Zuviel Werbung?
->Hier kostenlos registrieren
PEW:
am besten zuerst dein PEW in ein vernünftiges INT wandel (oder noch besser mit FC105 SCALE in ein REAL) und für das "externe" (nehme an, das kommt von ner HMI) dann bei der Eingangsbehandlung entscheiden was du in den DB Schreibst (zB.: 2 Move, über den EN Eingang entscheidest du dann welches der beiden in den DB geschreiben wird)

Bool:
Was meinst du mit "Wichtig"?
AWL:
U Ex.y (oder UN Ex.y)
= DBx.DBXx.y
 
Oben