Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

S7-300 - TABLICA ARRAY - sposób odwołania

kkamillo77 11 Oct 2016 15:42 894 5
  • #1
    kkamillo77
    Level 6  
    Witam jestem początkującym programistą i mam mały problem z odwołaniem się do tablicy.

    Mianowicie zadeklarowaną mam tablice : Array[1..255] of Byte. Czy jest możliwość odwołania się do dwóch elementów tablicy aby powstał typ WORD.
    Np Array[1]=05
    Array[2]=03

    potrzebuje z tego uzyskać liczbę typu word czyli: 0503.

    Byłbym wdzięczny jak by ktoś był skory do pomocy. Pozdrawiam
  • #2
    cyp3k
    Level 13  
    Oczywiscie ze mozesz.
    W jakim jezyku to piszesz - ST ? I co dokladnie chcesz zrobic ? Zsumowac elementy, dodac je do siebie czy przesunac w osobny obszar pamieci/tabeli ?
  • #3
    kkamillo77
    Level 6  
    Pisze to w języku STL. Mam narzuconą z góry Tablice typu bajt w której umieszczona jest Ramka Modbus. Potrafie sie odwołać do pojedynczych elementów ale czy istnieje szansa odwołać sie do dwóch aby z dwóch bajtów powstało Słowo ?

    Np

    L DATA[1]=01h
    L DATA[2]=02h

    a ja bym chiał pobrać do akumulatora wartość słowa z tablicy byte np. 1 i 2 elementu gdzie 1 element to MSB a drugi element LSB słowa:
    L DATA[1,2]=0102h ale to nie działa.
  • Helpful post
    #4
    ElMapet
    Level 20  
    Tablica Array jest umieszczoną w pamięci,
    odwołaj się bezpośrednio do adresu

    Np
    Array jest od 0.0 w BD1
    chcesz adres 10 i 11
    L DB1.DBW10

    Albo przepisz do tymczasowego:
    L DATA[1]
    T LB0
    L DATA[2]
    T LB1

    L LW0
  • Helpful post
    #5
    cyp3k
    Level 13  
    Tak jak pisze kolega ElMapet. Tablice w S7 300 maja postac blokow DB. Tam adresujesz swoje stale/zmienne i okreslasz ich typ. Gdybys chcial zrobic to np w SCL adresacja odbywa sie w nast sposob:

    Table1[0] := 01h ;
    Table2[1] := 02h ;

    gdzie wczesniej musisz zeklarowac rozmiar tabeli okreslajac ja nastepujaco:

    TYPE

    Table1 : ARRAY [0..255] of DWORD

    Wygoda takiego rozwiazania jest to ze indeks tabeli moze byc dynamiczny a na koncu mozesz dowolnie sobie te dane obrabiac, przesuwac czy sumowac.
  • #6
    kkamillo77
    Level 6  
    Wszystko Dziala. Dzięki wielkie