Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

problem z odwołaniem sie do zmiennej tab. step7

philos 29 Oct 2006 23:36 1713 2
  • #1
    philos
    Level 10  
    Witam,
    mam pytanie dotyczące programowania w schemacie drabinkowym.
    Stworzyłem w FB1 w Stat zmienną typu tablicowego. I przez MOVE chiałbym zapisywać do niej pewne wartości rzeczywiste. Do tablicy wiem że sie odwołuje #nazwa_tab[nr_komórki]. Potrzebuję jednak zrobić tak żeby nr_komórki zmieniał się o i=1 (wzrastał) z każdym cyklem wykonywania programu. Próbowałem odwoływać się #nazwa_tab[#i]. gdzie zmienna i byla zadeklarowana w stat jako int. i miała wartość początkową równą 0.Niestety nie działało... Czy ktoś może spotkał się z takim problemem?
    Pozdrawiam i z góry dziękuję za pomoc
  • #2
    arwit
    Level 27  
    Witam!
    Do tego typu „myków” służy adresowanie pośrednie za pomocą pointerów. Na stronach siemensa znajdziesz opisy i przykłady.
    http://support.automation.siemens.com/WW/skm/frameset.asp?url=%2FWW%2Fllisapi%2Edll%2F20443243%3Ffunc%3Dll%26objId%3D20443243%26objaction%3Dcsopen%26siteid%3Dcseus%26aktprim%3D0%26skm%3D1%26lang%3Den&Query=pointer&SearchArea=faqs&id=20443243&F11Marker=true&siteid=cseus&query2=&modelled=&lang=en
    Nie jest to może ścisłe rozwiązanie twojego problemu ale powinno objaśnić ideę
  • #3
    andy1955
    Automation specialist
    podaję przykład adresowania pośredniego, który to napisałem dla jednego naszego kolegi forumowicza.Chodzi o wyszukanie wartości max w DB:
    Wyszukiwanie max z 16 wartosci zapisanych w DB jako "Word","Int"
    Wartosc Maximum zapisana w DB10.DBW32


    AUF DB 10 //otworzenie DB
    L 0
    T DBW 32 //zerowanie starego wyniku poszukiwania max
    LAR1 P#DBX 0.0 //zaladowanie akumul. adr. poczatkowym adresem
    L 16 //petla 16 razy
    m001: T #petla
    L DBW 32
    L W [AR1,P#0.0] //zaladowanie Ak.reg do AKU 1
    <I //porownanie mniejsze od..
    SPBN skok
    L W [AR1,P#0.0]
    T DBW 32
    skok: +AR1 P#2.0 //podniesienie adresu w AR1 o "2"
    L #petla // sprawdzenie licznika petli
    LOOP m001 // funkcja LOOP (inkremental)
    Możesz ten przykład zaadoptować do twoich celów.