Variable aus mehreren Variablen zusammensetzen

AndyPed

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

wir wollen ein Variable [Bsp. DB1.DBW10] aus folgenden Informationen zusammen setzen: DB_Nr:1 [INT] DBW_Nr:10 [INT]
Also:
DB_Nr & DBW_Nr = DB1.dbw10

Ich möchte nachdem ich aus DB_Nr & DBW_Nr => DB1.dbw10 gebildet habe die Variable DB1.dbw10 mit einer Zahl vergleichen.
Bsp:
L DB1.DBW10
L 10
>=I
= db30.dbx12.5 /Betriebsmeldung

Ich weiss sowas ist in Hochsprachen möglich, ich weiss bloss nicht wie ich das in Step 7 realisieren soll.

Wäre für jeden Tipp dankbar.
 
Hallöchen

mal eine frage du willst zwei wörter bitweise miteinander verknüpfen

wenn ich das richtig verstanden habe

wieso nimmst du dann nicht einfach

UW

l dbxx.dbw1
l dbxx.dbw2
UW
t xxx
 
Falls ich das richtig verstehe sieht das z.B. so aus:

DB-Nr: 1/DBW-Nr: 10/gewünscht: 110
DB-Nr: 11/DBW-Nr: 9/gewünscht: 1109 ?

1.Option: Multipliziere den ersten Wert mit einer Zahl, die soviele Nullen hat, wie die zweite Zahl maximal Stellen hat, addiere die zweite dazu:
Code:
L 1.Zahl
MUL 1000
ADD 2.Zahl
T Ergebnis

2.Option: 1.Zahl um gewünschte Anzahl Stellen nach links schieben (SHL x), mit zweiter Zahl verküpfen (UW .....) -> fertig

In beiden fällen achte auf Einhaltung des Zahlenbereiches!

Peter
 
Hallo Andy,

deine Fragestellung ist ein klein wenig verwirrend.

Du möchtest einen Wert aus einem Datenwort eines DB laden, indem du die DB-Nummer und die DBW-Nummer jeweils als Integer-Wert vorgibst? Ist das soweit erst mal richtig?


Gruss, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo AndyPed

Hier ein Beispiel, wie ich das verstanden hab:
Code:
FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1


VAR_INPUT
  DB_Nr  : INT ;	
  DBW_Nr : INT ;	
END_VAR

VAR_TEMP
  DB_Nr_temp  : WORD ;	
  DBW_Nr_temp : DWORD ;	
END_VAR

BEGIN
NETWORK
TITLE =

      L     #DB_Nr; 
      T     #DB_Nr_temp;        // DB-Nummer in Tempbereich umkopieren

      L     #DBW_Nr; 
      SLD   3;                  // Aus der DBW-Nummer Zeigerformat machen
      T     #DBW_Nr_temp; 

      AUF   DB [#DB_Nr_temp];   // DB öffnen
      L     DBW [#DBW_Nr_temp]; // DBW laden und vergleichen
      L     10; 
      >=I   ; 
      =     DB30.DBX   12.5; 


END_FUNCTION
 
@ all

Tut mir leid war beim formulieren noch zu sehr in Gedanken. :oops:
So wie es Techniker1 verstanden hat so habe ich das eigentlich gemeint.
Funktioniert das so ?
 
jaja...

ja sowie der techniker das geschreieb hat müsste es gehen!

und deine frage war doch gut gestellt, also ich habs verstanden...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Heute nicht als Gast,

Ich hatte jetzt die Möglichkeit das auszuprobieren => Funktioniert !
Super :D :!:
Das formulieren ist halt etwas kompliziert, und nicht jeder versteht immer was man will :)
Nochmal:
Super Tipp von dir Techniker1
Thx
 
Zurück
Oben