Elektroda.pl
Elektroda.pl
X

Search our partners

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

Zapis wartość REAL do bloku danych w STL STEP7

2010712 14 Aug 2012 20:33 3867 3
SterControl
  • #1
    2010712
    Level 17  
    Witam,
    Jak w zapisie STL zarganizować funkcje, która zapisywałaby pomiar analogowy REAL do DB do kolejnego słowa, po określonym czasie np. 10s. Dodatkowo spośród wszystkich słów np 30, aby w DBD0 była wartość aktualna pom. , DBD4 wart.max, DBD8 wart.min od DBD12 kolejno np.30pomiarów? Dziękuję za wskazówki.
  • SterControl
  • #2
    piotr_krak
    Level 24  
    Tworzysz timer np T_zapis i wywołujesz od tego bitu function blok (gdy chcesz by tylko raz dla danego pomiaru dane zostały zapisane to proponuje od pulsa) i piszesz
    L MD_wartosc_akt
    T DB0.DBD0
    itp
    dla 30 pomiarów wygodniej zrobić pointer i skakać po 4 bajtach.

    To tak w skrócie teraz do lektury.
  • SterControl
  • #3
    2010712
    Level 17  
    Trochę udało mi się z tym ruszyć, ale potrzebuję dalszyh wskazówek. Narazie mam tak:

    A "zapis wyniku"
    JCN save
    //wewn. FC
    L MD 70 //adres
    SLD 3
    T MD74

    OPN DB 7
    L MD 66 //wart pomiaru REAL
    T DBD [MD70]

    L 4
    L MD 70
    +D
    T MD 70 //następny adres
    save: nop 0

    Moje pytania: a) jak wskazać aby zapis rozpoczynał od DBD14? DBW0-ilość pomiarów wpisana w DB, DBD2-wart.aktualna, DBD6-max, DBD10-min ze wszystkim pomiarów.
    b)Jak dokładnie rozumieć to przesuwanie podwójnego słowa o 3 pozycje w lewo?
    c)Jak wyglądałby zapisy tych pomiarów (liczba określona w DB) za pomoca pętli?
    Prośba o konkretne porady od specjalistów w tej dziedzinie-dzięki
  • Helpful post
    #4
    ElMapet
    Level 20  
    Powinieneś poczytać o adresowaniu pośrednim, wtedy byś zrobił ten program

    tak na szybko.

    Wskaźnik do adresowania mamy 16 bitowy (do timerów, liczników, bloków danych) - liczba INT.
    Drugi mamy 32 bitowy.
    Zapis wartość REAL do bloku danych w STL STEP7

    jak widzisz mamy na 3 ostatnich bitach nr bitu, dalej nr bajtu.

    Najprościej, wpisując np
    7
    to dostaniesz adres
    0.7
    Jeżeli zrobisz SLD 3
    to
    7.0


    to tyle.

    robisz FC który będzie wywoływany raz co 10s

    FC:
    OPN DB X
    L DBW 12
    SLD 3
    LAR1

    L MD 66
    T DBD [AR1,P#0.0]

    L DBW 12
    INC 4
    T DBW 12

    L DBW 12
    L 54
    ==I
    JCN M000
    L 14
    T DBW 12
    M000: NOP 0

    L MD 66
    L DBD 4
    >R
    JCN M001
    L MD 66
    T DBD 4

    M001: L MD 66
    L 0.000000e+000
    >R
    JCN M002
    O(
    L MD 66
    L DBD 8
    <R
    )
    O(
    L DBD 8
    L 0.000000e+000
    ==R
    )

    JCN M002
    L MD 66
    T DBD 8
    M002: NOP 0

    L DBW 2
    INC 1
    T DBW 2

    L 30
    T DBW 0

    DB x
    Zapis wartość REAL do bloku danych w STL STEP7