# wie lege ich daten in einem Datenbaustein mit arrays ab ?



## Tom100 (17 Mai 2005)

sorry, bin nicht ganz im bild !
ich lese eine eingabe im op270 aus
und will nur die dazugehörige Zahl im DW eines Db ablegen,
raff heute nichts mehr:

L DB10.DBW0  = im eingabefeld vom oP 270 hat einer  z.B 10 eingegeben

jetzt soll die 10 im 10 array stehen = anfang  DW18

T  DB100.DBW..                 soll dann im DB100.DBW 18 stehen 

DB100 ist der DB mit 100 Arrays Int

danke im voraus Tom


----------



## Ralle (18 Mai 2005)

Ich werde aus deiner Beschreibung nicht ganz schlau, kannst du das nochmal genauer angeben, evtl. kannst du mit einer  Multplex-Variablen arbeiten.


----------



## Anonymous (18 Mai 2005)

*Array Datenbausetein*

klar ralle, blöd erklärt, weiß, also noch mal
1. Op 270 eine eingabefeld in welchem eine 3 stellige nummer eingegeben
wird, welche ich immer im DB10.DBW Integer ablege
2. diese nummer will ich aber speichern ab 
 DB100.DBW 0 = 1 Nummer    z.B.  113
 DB100.DBW 2 = 2 Nummer    z.B.  234          etc.
den DB100 habe ich deklariert mit ARRAY(1..100)  Integer
 ich habe eine fortlaufende Nummer     1    =  113
                                                        2    =  234       etc.
nun wollte ich einfach sagen L  DB10.DBW0 
und nimmt 1. zahl und lege ab im 1. array des DB100.DBW0
                2.zahl                   im 2. array des  DB100.DBW2
              10.zahl                  im 10.array des   DB100.DBW18 
etc. , hab ich's jetzt besser hinbekommen,
freu mich echt auch antwort, gruß tom


----------



## Ralle (18 Mai 2005)

Mit SCL kannst du das direkt machen, in AWL nur über Pointer mit indirekter Adressierung. Suche mal im Forum nach "Array" und nach "indirekt", da sind diverse Hinweise zu finden. Wenn dann noch Fragen sind, melde dich bitte nochmal.

http://www.sps-forum.de/phpBB2/viewtopic.php?t=2363&highlight=array

http://www.sps-forum.de/phpBB2/viewtopic.php?t=1625&highlight=array

indirekt z.Bsp.:


```
Pos_Nr --> int Input
Start_DW --> int input
Adr --> int temp
Pos --> Dint out

      AUF DB10
      L     #Pos_Nr //Laufende Nummer 1-100 für das Array
      L     -1 //Wenn Array [1...100]
      +I    
      L     2 //2-->DBW, 4-->DBD
      *I    
      L     #START_DW //Offset, bei dem dein Array beginnt
      +I    
      T     #Adr 

      L     P#0.0 
      L     #Adr 
      SLD   3 
      +D    
      LAR1  

      L     DBD [AR1,P#0.0] 
      T     #Pos
```


----------



## Anonymous (20 Mai 2005)

*danke esratmal*

morgen ralle,
danke erst mal, werde es heute auf dem bau mal ausprobieren
gruß tom


----------



## Tom100 (23 Mai 2005)

*Super Ralle*

Danke ,
hat echt funktioniert
gruß tom


----------



## Revave (2 Juni 2005)

benodigen sie nicht die command ITD fur #adr??


----------



## Ralle (3 Juni 2005)

Du hast recht, steht meistens bei mit auch so drin.
Da #Adr hier als INT angelegt ist sollte man es entweder als DINT anlegen, oder ITD nutzen. Wenn #Adr aber nie negativ wird (Vorzeichenbit) funktioniert es trotzdem, denn nur das Vorzeichenbit sitzt ja an anderer Stelle. Sauberer ist ITD!!!


----------

