logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

TIA Portal v13 - SCL: Jak odczytać STRING z DB?

RuTech 24 Lis 2014 09:55 3537 6
  • #1 14160300
    RuTech
    Poziom 11  
    Posty: 87
    Ocena: 6
    Szanowni Specjaliści,

    Interesuje mnie tylko SCL, za rady dotyczące STL dziękuję.

    W programie mam mini bazę danych złożoną z kilku kolumn. Każda kolumna to oddzielne DB. Dane typu INT odczytuje się z podanego wiersza bajecznie prosto:
    np.
    #Out_Dane:= %DB953.DW(#In_NrWiersza * 2);

    // *2 - bo INT zajmuje dwa bajty

    Jak to zrobić ze Stringami? Nie mogę znaleźć podobnej funkcji..

    Boję się, że trzeba będzie wczytywać po jednym znaku, zamieniać byte na word, word na char, char na string i na końcu CONCATenować długi string z pojedynczych stringów. Rozwiązanie niezbyt eleganckie..

    Ciężko znaleźć w sieci jakiekolwiek użyteczne informacje. Posty na forach pochodzą zwykle sprzed 10 lat i dotyczą chyba wczesnych początków SCL w Step 7.
  • Pomocny post
    #2 14160478
    Markos80

    Specjalista Automatyk
    Posty: 1860
    Pomógł: 474
    Ocena: 214
    Nie dokładnie wiem co planujesz zrobić, ale możesz stworzyć DB, w którym znajdzie się np. tablica zmiennych typu String.
    Masz wtedy dostęp do każdego jej elementu przez "Nazwa".tablica[x], a w zakładce Extended functions różne opcje do manipulacji łańcuchami.

    To samo zrobiłbym z pozostałymi kolumnami i byłby wtedy dostęp do elementów przez odwołanie i nazwę, a nie przez adres i mnożenie bajtów.
    Konto firmowe:
    PUMPA
    Widok 7, Łuczyce, 32-010 | Tel.: 502XXXXXX (Pokaż) | Strona WWW: www.pumpa.pl
  • #3 14160569
    mihalo
    Poziom 14  
    Posty: 89
    Pomógł: 7
    Ocena: 15
    Czemu chcesz dobierać się do danych adresami a nie symbolicznie, przecież nie po to Siemens zmienił filozofię, zeby robić to po staremu.
  • #4 14160598
    RuTech
    Poziom 11  
    Posty: 87
    Ocena: 6
    Ktoś kto dobrze zna się na STL zachęcał mnie do swojego rozwiązania i stąd wzięło się moje w SCL skakanie po adresach w pamięci.
    Zupełnie przeoczyłem możliwość stworzenia tablicy - to elegancko załatwi sprawę.

    Dzięki za pomoc.
    Sprawa zamknięta.

    Mam jeszcze jedno pytanie dotyczące ogólnie TIA Portal / Step7.

    Potrzebuję funkcji, która będzie odczytywać coś z takiej tabeli, przetwarzać i używać lokalnie w programie. Czy tej samej funkcji FC można używać wielokrotnie w różnych miejscach programu? Czy musi to być koniecznie blok FB?
  • #5 14160627
    Markos80

    Specjalista Automatyk
    Posty: 1860
    Pomógł: 474
    Ocena: 214
    Zarówno FB i FC można używać wielokrotnie. Różnica w dużym skrócie jest taka, że do FB można przypisać bazę, w której przechowa swoje stany, wartości, liczniki, itp.
    Konto firmowe:
    PUMPA
    Widok 7, Łuczyce, 32-010 | Tel.: 502XXXXXX (Pokaż) | Strona WWW: www.pumpa.pl
  • #6 14219865
    mihalo
    Poziom 14  
    Posty: 89
    Pomógł: 7
    Ocena: 15
    funkcja też może mieć podpiętą bazę z tymi licznikami itp. więc w zasadzie żadna to różnica
  • #7 14332517
    viper_lasser
    Poziom 17  
    Posty: 505
    Pomógł: 4
    Ocena: 38
    @RuTech
    Mapowanie struktury z tablicą chyba powinno pomóc

    Ogólnie mało jest przykładów z SCL'em w Tia Portalu

Podsumowanie tematu

✨ Użytkownik poszukiwał sposobu na odczytanie danych typu STRING z bazy danych (DB) w języku SCL w TIA Portal v13. W odpowiedziach zasugerowano stworzenie tablicy zmiennych typu STRING, co umożliwia dostęp do elementów przez nazwy, a nie adresy pamięci. Użytkownik zauważył, że wcześniejsze podejście do odczytu danych przez adresy było nieefektywne. Dodatkowo, poruszono temat użycia funkcji FC i FB w programie, wyjaśniając, że obie mogą być wykorzystywane wielokrotnie, z różnicą w możliwości przypisania bazy do FB. Wskazano również na ograniczoną ilość przykładów dotyczących SCL w TIA Portal.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA