Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mega / Leonardo - Ramka Modbus - analiza

trolodk 21 Lis 2016 15:24 918 26
  • #1 21 Lis 2016 15:24
    trolodk
    Poziom 4  

    Witam,

    mam panel dotykowy, który komunikuje się z moim arduino poprzez Modbus RTU.
    Panel Wecon, program do tworzenia interfejsu na panel, to LiveStudioU.
    Panel nie jest skomplikowany jak na razie, bo próbuję rozgryźć o co chodzi w tej transmisji Modbus.
    Stworzyłem na panelu dwa guziki.
    Lewy guzik ma adres zapisu: 110. (typ adresu 1, nr adresu 10).
    Prawy guzik ma adres zapisu: 111. (typ adresu 1, nr adresu 11).

    Gdy wciskam lewy guzik dostaję na SerialMonitor:

    Code:
    1
    
    2
    0
    10
    0
    1
    153
    200
    255


    gdy prawy:

    Code:
    1
    
    2
    0
    11
    0
    1
    200
    8
    255


    a gdy oba (jeden po drugim):

    Code:
    1
    
    2
    0
    10
    0
    2
    217
    201
    255


    Może mi ktoś wytłumaczyć i rozłożyć ten ciąg znaków tak, żebym zrozumiał dlaczego takie a nie inne liczby?
    Transmisja jest po RS485, 8 bitów danych, 1 bit stopu, parzystość na NONE.

    Schemat ramki niby znam, ale kompletnie nie pasuje mi i nie umiem dopasować tego schematu do tego co otrzymuję.
    Jak odpowiedzieć temu panelowi żeby zmienił na wyświetlaczu stan guzika? Jak to poprawnie oprogramować? Domyślam się, że najpierw sprawdzam adres, przez to rozpoznam o jaki guzik i jakie wyjście chodzi, a potem funkcję, i dane które są wprowadzone. Ale nie bardzo wiem jak.
    Proszę o pomoc, żebym zrozumiał chociaż te podstawy, to potem dalej jakoś może sobie poradzę.
    No i jak wyliczyć to co jest na końcu, czyli te sumy kontrolne, nie wiem czy są to dwie, czy jedna ostatnia liczba.

    W załączniku ustawienie w programie LiveStudioU guzika z adresem 110.

    Pozdrawiam.

    Mega / Leonardo - Ramka Modbus - analiza

    0 26
  • Arrow Multisolution Day
  • #3 21 Lis 2016 16:29
    trolodk
    Poziom 4  

    Mówiąc schemat miałem na myśli jak ramka jest zbudowana. Czyli najpierw adres, potem kod funkcji, potem dane i na końcu sumy kontrolne. Ale sama ilość przesyłanych segmentów tutaj mnie już rozkłada na łopatki, bo jest ich 9. Jak rozpoznać który segment jest do czego, jak to odpowiedno podzielić.
    Jak też skonstruować odpowiedź. Wiem tyle, że należy jeśli jest sukces, odpowiedzieć kodem 05, no dobra, a pozostałość? Jak wyliczyć CRC na końcu, itd.
    Znacie może jakieś biblioteki z opisem jakimś który to obsłuży? SimpleModbus jest mocno ograniczona, więc odpada.

    Dzięki za odpowiedź i pozdrawiam.

    0
  • Pomocny post
    #5 21 Lis 2016 17:00
    Freddie Chopin
    Specjalista - Mikrokontrolery

    1 <- adres urządzenia
    2 <- funkcja (2, read input)
    0 i 10 <- adres rejestru (0 * 256 + 10 = 10)
    0 i 2 <- ilość odczytywanych "wejść" (0 * 256 + 2 = 2)
    217 i 201 <- CRC zapytania
    255 <- zapewne śmieć

    To są tylko zapytania wysyłane przez mastera do slave'a. Do odpowiedzi to zupełnie nie pasuje. http://www.modbustools.com/modbus.html

    0
  • Pomocny post
    #6 21 Lis 2016 18:34
    krisRaba
    Poziom 25  

    W tej sytuacji chyba panel będzie masterem? Bo jeśli sobie coś gada nie pytany, to jest to niezgodne ze standardem. ModbusRTU ma przecież formę "master pyta"->"slave odpowiada", więc albo sterownik musiałby w kółko go odpytywać, żeby się dowiedzieć co tam ciekawego słychać, albo właśnie panel musi być masterem... Z Twojego punktu widzenia to ważna informacja, bo musisz wiedzieć, czy implementować bibliotekę master czy slave.
    Ale jeśli jest masterem, to czemu wysyła Function Code 02, czyli READ INPUTS zamiast WRITE? Przecież to on wie, że wejście się zmieniło (przyciśnięto coś na ekranie) i ma powiadomić o tym sterownik, czyli wpisać wartość pod podany rejestr, który sterownik traktuje jako odzwierciedlenie wejść.
    Domyślam się, że w tej chwili nie masz kodu w sterowniku i podglądasz tylko co wysyła panel po naciśnięciu przycisku, tak?

    0
  • #7 21 Lis 2016 20:19
    trolodk
    Poziom 4  

    Freddie Chopin napisał:
    1 <- adres urządzenia
    2 <- funkcja (2, read input)
    0 i 10 <- adres rejestru (0 * 256 + 10 = 10)
    0 i 2 <- ilość odczytywanych "wejść" (0 * 256 + 2 = 2)
    217 i 201 <- CRC zapytania
    255 <- zapewne śmieć

    Dzięki bardzo. Rozumiem, że schemat jest zawsze taki sam i zawsze mam tak samo to odczytywać? Różnić się tylko mogą bity danych, bo może być ich więcej, ale pierwsze 2 i ostatnie dwa segmenty będą zawsze w tej ilości, tj. pierwszy segment to adres, drugi to numer funkcji, a dwa ostatnie to CRC?
    Jak wyliczyć CRC? Chodzi mi, że kalkulator online to jedno, bo mogę sobie wyliczyć, ale jakoś programowo muszę to zrobić, jakąś funkcję, czy algorytm zaimplementować, który mi to CRC wyliczy i doklei do ramki z odpowiedzią zwrotną.

    krisRaba napisał:
    W tej sytuacji chyba panel będzie masterem? Bo jeśli sobie coś gada nie pytany, to jest to niezgodne ze standardem. ModbusRTU ma przecież formę "master pyta"->"slave odpowiada", więc albo sterownik musiałby w kółko go odpytywać, żeby się dowiedzieć co tam ciekawego słychać, albo właśnie panel musi być masterem... Z Twojego punktu widzenia to ważna informacja, bo musisz wiedzieć, czy implementować bibliotekę master czy slave.
    No właśnie panel jest ustawiony jako slave, bo według konfiguracji, gdy chciałem ustawić go jako Master, to w opisie miał podane, że nie wysyła nic, tylko czeka na jakieś żądania. (zupełnie odwrotnie, w końcu to on powinien pytać ..) Niżej w załączniku screen z aktualnej konfiguracji.

    krisRaba napisał:
    Domyślam się, że w tej chwili nie masz kodu w sterowniku i podglądasz tylko co wysyła panel po naciśnięciu przycisku, tak?

    Dokładnie tak. To co dostanę na software'owy UART wyrzucam na ekran komputera bez żadnej obróbki. Na razie tego nie programowałem, po prostu muszę porządnie zrozumieć o co w tej komunikacji chodzi, żeby sobie później to oprogramować.

    //------------
    Znacie jakieś biblioteki, które pozwolą mi na automatyczne "obrobienie" tej ramki w taki sposób że będę miał np w jakiejś tablicy konkretne części ramki i przede wszystkim - łatwiejszą odpowiedź na zapytanie, bo na razie nie mam pojęcia jak panelowi odpowiedzieć.
    Po włączeniu go do prądu panel nie wysyła mi tych ramek, dopiero po wciśnięciu guzika wysyła je cały czas co jakiś tam krótki przedział czasowy (kilkaset milisekund). Zapewne dlatego, że nie uzyskał odpowiedzi o pytane przez niego wejścia, więc powtarza się w kółko. Dobrze rozumiem?

    Póki co dziękuję za odpowiedzi, wiem już co nieco więcej, tylko teraz muszę zrozumieć jak ogarnąć te odpowiedzi. Link który podesłałeś mi Freddie Chopin będzie bardzo pomocny. Z angielskim u mnie średnio, ale coś wyciągnę. W razie czego zapytam.
    Mega / Leonardo - Ramka Modbus - analiza

    0
  • Arrow Multisolution Day
  • #8 21 Lis 2016 20:55
    Freddie Chopin
    Specjalista - Mikrokontrolery

    trolodk napisał:
    Dzięki bardzo. Rozumiem, że schemat jest zawsze taki sam i zawsze mam tak samo to odczytywać? Różnić się tylko mogą bity danych, bo może być ich więcej, ale pierwsze 2 i ostatnie dwa segmenty będą zawsze w tej ilości, tj. pierwszy segment to adres, drugi to numer funkcji, a dwa ostatnie to CRC?

    Zapytanie ma zawsze identyczną strukturę "w całości" - szczegóły w linku który podałem.

    trolodk napisał:
    No właśnie panel jest ustawiony jako slave, bo według konfiguracji, gdy chciałem ustawić go jako Master, to w opisie miał podane, że nie wysyła nic, tylko czeka na jakieś żądania. (zupełnie odwrotnie, w końcu to on powinien pytać ..)

    Wydaje się, że ustawiłeś go na tryb master "po normalnemu". Z obrazka wynika, że Twój panel to "HMI" (human-machine interface), do którego dodałeś właśnie slave'a, którego ten panel odpytuje w kółko. Tak więc panel definitywnie jest masterem.

    trolodk napisał:
    Znacie jakieś biblioteki, które pozwolą mi na automatyczne "obrobienie" tej ramki w taki sposób że będę miał np w jakiejś tablicy konkretne części ramki i przede wszystkim - łatwiejszą odpowiedź na zapytanie, bo na razie nie mam pojęcia jak panelowi odpowiedzieć.

    Google -> freemodbus

    0
  • #9 21 Lis 2016 21:23
    krisRaba
    Poziom 25  

    Freddie Chopin napisał:
    Wydaje się, że ustawiłeś go na tryb master "po normalnemu". Z obrazka wynika, że Twój panel to "HMI" (human-machine interface), do którego dodałeś właśnie slave'a, którego ten panel odpytuje w kółko. Tak więc panel definitywnie jest masterem.

    No ja właśnie nie jestem tego pewien. Tam jest, że HMI send data to device, Device is master to receive data :-/

    Ja na Twoim miejscu zrobiłbym inaczej ;) Na początku ogarnij to HMI (panel) podłączając go do kompa. Są na necie jakieś apki, które będą gadać po modbusie. Jak odpalisz to w stronę PC, to już będziesz pewny co masz implementować po stronie MCU. Bo tak, to się narobisz, a nagle się okaże, że jednak potrzebujesz mastera albo jednak slave'a i zabawa od początku ;)

    0
  • #10 21 Lis 2016 21:38
    trolodk
    Poziom 4  

    Tak, to Panel HMI Wecon 102L.

    Ok. Mam inny pomysł i jeśli się nie uda, to zrobię po Twojemu krisRaba. Bo wydaje mi się, że powoli to (dzięki Wam) zaczynam rozumieć, co prawda powoli, ale jakiś postęp jest. Zrobiłem więc tak:
    Wstawiłem na Panel tylko "bit indicator", który z tego co rozumiem odczytuje ze sterownika status pewnego rejestru i w razie jeśli byłby aktywny zmieni się na zielony.
    Nadałem mu adres 113 (1 jako adres slave'a, no i 13 jako adres wskaźnika). Wgrałem na panel, no i w serial monitorze pojawia się zgodnie z moimi oczekiwaniami taka ramka:

    Code:
    1 <- adres urządzenia
    
    2 <- kod funkcji (odczyt wejścia)
    0 <- 0 +
    13 <- 13 = 13 (adres rejestru)
    0 <- 0 +
    1 <- 1 = 1 (ilość rejestrów)
    40 <- CRC
    9 <- CRC // nie wiem skąd się to wzięło, ale to później.
    255 <- jak wcześniej kolega [b]Freddie Chopin[/b] to ujął - "zapewne śmieć".


    No i git. HMI pyta się sterownika o jakieś wejście (rozumiem, że programowo mogę sobie ten adres który stworzyłem czyli "13" utożsamić np z wejściem cyfrowym nr "3"?)
    Jeśli rozumiem, to teraz sterownik (slave) powinien odpowiedzieć mu jaki ma stan tego wejścia. Jeśli odpowie "0", to status guzika się nie zmieni. Jeśli "1", to zmieni się na zielony (tak jest stworzone w interfejsie w panelu HMI). Mam rację?
    Jak zatem stworzyć dla niego response, żeby on to zrozumiał i (daj Boże) zmienił status guzika? W tej chwili na panelu miga mi czerwone ostrzeżenie NO COMM - ale to chyba oczywiste.

    http://www.modbustools.com/modbus.html#function02 tutaj jest opisane jak skonstruować odpowiedź, ale gdzie tam jest status rejestru?

    Programowo chyba wiem jak to zrobić. Tzn zmiana kierunku transmisji w układzie MAX485, nadanie ramki i znów włączenie się na nasłuch.

    W załączniku screen z ustawień tego wskaźnika. Mega / Leonardo - Ramka Modbus - analiza

    0
  • #11 21 Lis 2016 22:00
    Freddie Chopin
    Specjalista - Mikrokontrolery

    trolodk napisał:
    Programowo chyba wiem jak to zrobić. Tzn zmiana kierunku transmisji w układzie MAX485, nadanie ramki i znów włączenie się na nasłuch.

    No i właśnie tak musisz to zrobić - po prostu odpowiedzieć w formacie opisanym jako "response" dla zapytania "02" w linku który podawałem. W skrócie, odpowiadasz:
    - 1 bajt adresu (1),
    - 1 bajt funkcji (2),
    - 1 bajt z rozmiarem danych (1),
    - 1 bajt z danymi (1 - włączone, 0 - wyłaczone),
    - 2 bajty z CRC.

    Jak jest liczone CRC dla Modbus RTU to znajdziesz na necie. W każdym razie CRC dla modbus RTU jest zapewne obsługiwane przez generator pycrc - https://pycrc.org/models.html

    Dodano po 2 [minuty]:

    trolodk napisał:
    http://www.modbustools.com/modbus.html#function02 tutaj jest opisane jak skonstruować odpowiedź, ale gdzie tam jest status rejestru?

    To jest tutaj:
    Cytat:
    The input status response message is packed as one input per bit of the data field. Status is indicated as: 1 is the value ON, and 0 is the value OFF. The LSB of the first data byte contains the input addressed in the request. The other inputs follow toward the high-order end of this byte and from low order to high order in subsequent bytes. If the returned input quantity is not a multiple of eight, the remaining bits in the final data byte will be padded with zeroes (toward the high-order end of the byte).


    Stan każdego wyjścia zapisywany jest na jednym bicie, począwszy od LSB każdego bajtu. W przykładzie to jest "Data (Inputs 17...10) 0A" i "Data (Inputs 27...20) 11" - tam był odczyt wielu rejestrów, więc w dwóch bajtach.

    0
  • #12 21 Lis 2016 22:27
    trolodk
    Poziom 4  

    Ostatnie pytanie na dzisiaj:
    Ramka powinna wyglądać:

    Code:
    1 <- adres
    
    2 <- funkcja
    1 <- ilość danych w bajtach łącznie
    1 <- dane. 1 bo jest aktywne
    96 <- CRC
    72 <- CRC (próbowałem też zamienić "96" z "72" miejscami

    tak?

    Bo nie działa, no i nie wiem czy źle to zrobiłem programowo, tzn źle to wysyłam, czy źle skonstruowałem ramkę. Sumę CRC wyliczyłem kalkulatorem ze strony: https://www.lammertbies.nl/comm/info/crc-calculation.html

    Pozdrawiam.

    0
  • #13 21 Lis 2016 22:45
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Zakładając, że kalkulator działa OK, to wygląda sensownie. Dlaczego nie działa to inna sprawa - dane w ramce Modbus RTU muszą spełniać pewne zależności czasowe (pomiędzy bajtami nie może być przerw dłuższych niż ileśtam), co przy stosowaniu przejściówek USB<=>UART i terminali na PC może być problematyczne, gdyż te często wysyłają po jednym znaku na 1ms - wtedy przerwy mogą być zbyt długie... Może jest źle ustawiony format UARTa - jeśli nie używasz parzystości, to trzeba ustawić 2 bity stopu, jeśli używasz parzystości - 1. Może po prostu odpowiedź przychodzi do mastera zbyt późno i uznaje on, że wystąpił timeout. Może po prostu wysyłasz te dane w nieprawidłowej postaci. Nie wiadomo - tutaj już wiele rzeczy może być problemem...

    No i oczywiście ta odpowiedź jest prawidłowa jeśli:
    - slave ma adres 1,
    - master pytał o nie więcej niż 8 wejść,
    - master użył funkcji "2".

    0
  • #14 21 Lis 2016 22:50
    trolodk
    Poziom 4  

    Tak, slave ma adres "1", pytał o jedno wejście i użył funkcji "2". Też na początek dokładnie sprawdzę co z funkcją wysyłającą do panela - czy wszystko z nią w porządku.
    Swoją drogą dobrze że wspomniałeś o parzystości, bo mam ustawiony 1 bit stopu, przy braku parzystości.
    Dzisiaj już to zostawię, bo mój mózg za wiele nie wymyśli.
    Jutro wrócę do walki z tym i mam nadzieję, że będę mógł liczyć na Twoją i innych pomoc.
    Niemniej jednak za dzisiaj bardzo dziękuję. Pozdrawiam.

    0
  • #15 22 Lis 2016 11:02
    trolodk
    Poziom 4  

    Witam ponownie.
    Niestety nie działa. Próbowałem na różne sposoby, ale panel nie widzi komunikacji dla tego elementu. Co 300ms miga dioda COM, czyli jakby coś odbierał, ale nie reaguje na ramkę.
    Uprościłem program najbardziej jak umiem, tj. działa on tylko w jedną stronę. Sterownik po prostu co 300ms wysyła ramkę niezależnie od tego co ma na linii (chciałem to uprościć, a wiem, że panel i tak wysyła zapytanie odnośnie tego wskaźnika).
    Kod w arduino wygląda tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    CRC raczej wyliczona jest poprawnie, bo sprawdzałem na tym kalkulatorze dla poprzednich ramek wysyłanych przez panel i liczby się zgadzają.
    Zmieniłem bity stopu na 2, parzystość jest NONE. Nie sądzę, żeby sterownik tak wolno wysyłał ramkę, raczej coś jest z samą ramką.
    Można zrobić tak, że sterownik nie odczyta ramki zapytania (bo wiemy, że ona tam się wysyła), tylko na sztywno programowo odpowiem mu na to w sposób jaki zrobiłem powyżej?

    Pozdrawiam. Mega / Leonardo - Ramka Modbus - analiza

    0
  • #16 22 Lis 2016 11:40
    Freddie Chopin
    Specjalista - Mikrokontrolery

    No ale w jaki sposób zagwarantujesz, że Twój kod wykona się zaraz po otrzymaniu zapytania? W Modbusie jest timeout, jeśli ty zaś odpowiadasz na sztywno co około 300ms, to jak ma to działać? Równie dobrze może być tak, że odpowiedź do panelu wysyłasz po 299ms od wysłania zapytania - wtedy panel już nie czeka na nic. Przy okazji po zakończeniu Twojego wysyłania powinieneś przestawić kierunek transmisji na "odbiór".

    0
  • #17 22 Lis 2016 12:18
    trolodk
    Poziom 4  

    Racja.
    Zrobiłem na razie prozaicznie (docelowo wydaje mi się, że należałoby sprawdzać, czy nie minęło np 20ms od ostatniego sygnału na linii, wtedy wiadomo, że ramka jest skończona, przestawiamy się na transmisję i odpowiadamy, ale tak jak mówię - na razie na dziko, żeby się po prostu skomunikować).
    Ramka na 9 segmentów, więc liczę te segmenty i jeśli liczba jest 9, to odpowiadam. Przy okazji wyświetlam na SerialMonitorze co otrzymałem z panela i zgadza się, bo dostaję całe ramki.
    Niestety nie działa, a właściwie działa tak, że jak wyślę odpowiedź, to Panel odpowiada mi tym samym co wcześniej. W efekcie dostaję po dwie te same ramki. Domyślam się, że panel nie rozumie odpowiedzi, więc ponawia pytanie. Tak?

    0
  • #18 22 Lis 2016 12:27
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Panel będzie się pytał w kółko, bo po prostu stale chce odświeżać tą wartość. To czy poprawnie odpowiesz nie ma tutaj znaczenia.

    0
  • #19 22 Lis 2016 22:05
    trolodk
    Poziom 4  

    Nie umiem jakoś odpowiedzieć temu panelowi. Ramka którą wysyłam nic nie zmienia. Dioda COM na panelu miga przy każdym wysyłaniu, czyli coś tam dochodzi, ale to nie świadczy o niczym. No i tak jak mówiłem wcześniej - panel po dostaniu odpowiedzi na swoje zapytanie od razu ponawia zapytanie. W efekcie dostaję po dwa zapytania a nie jedno co 300ms.
    Nie wiem czemu tak się dzieje, to raz, no i nie wiem czemu odpowiedź nie przynosi rezultatów. Gdyby było tak, że odpowiedź jest rozumiana przez HMI, to właściwie wszystko jest zrobione, wystarczyłoby stworzyć jakieś funkcje do zorganizowanej komunikacji. No ale nie działa. Jakieś pomysły?

    Myślałem żeby zrobić tak jak pisał KrisRaba, czyli połączyć się z komputerem i symulować programowo modbusa, ale jak mam się połączyć, jak panel ma wyjście COM? Muszę mieć jakąś przejściówkę?

    Chyba, że jest gdzieś jakiś symulator zapytań/komunikacji modbusa?

    Niemniej jednak mam wrażenie, że już blisko, w końcu zapytania umiem rozszyfrować i przygotować na nie odpowiedź. Tylko dlaczego to nie działa..

    0
  • #21 22 Lis 2016 22:54
    trolodk
    Poziom 4  

    namok napisał:
    Nie czytałem dokładnie całości ale dlaczego nie zastosujesz gotowej biblioteki modbusa do arduino: https://github.com/andresarmento/modbus-arduino
    Nie znałem tej biblioteki postaram się z niej coś skleić. Pobieżnie przeczytałem jej opis i mniej więcej rozumiem. Postaram się zrobić jakiś prosty kod. Szkoda, że nie ma przykładów, zawsze wtedy się łatwiej analizuje i przerabia kod.

    Dziękuję, będę próbował. Mam nadzieję, że mogę liczyć jeszcze na Twoją pomoc.

    Pozdrawiam.

    0
  • Pomocny post
    #22 22 Lis 2016 23:10
    namok
    Poziom 25  

    Przykładów jest kilka, powinno wystarczyć. Proponuję przetestować najpierw komunikację pomiędzy dwoma arduino - biblioteki mastera są też dostepne.

    0
  • #23 04 Gru 2016 22:32
    trolodk
    Poziom 4  

    Witam po dłuższej przerwie.
    Specjalnie nie zamykałem tematu, bo miałem kilka pytań, część z nich udało mi się samemu rozwiązać, poza jednym:
    Jak wysłać na panel jakiś tekst? Odczyt/zapis wejść i wyjść cyfrowych i analogowych mam ogarnięty. Ale nie potrafię wystawić jakiegoś tekstu na panel. Np jakiś alarm, komunikat, cokolwiek. Jaka do tego funkcja, lub jak to zrobić za pomocą tej biblioteki?

    Niemniej jednak biblioteka jest mega użyteczna, naprawdę działa lepiej niż się spodziewałem. Dzięki namok.

    0
  • Pomocny post
    #24 04 Gru 2016 22:50
    krisRaba
    Poziom 25  

    Nie wiem jak w tym panelu, ale jeśli dobrze kojarzę, to standardowo w profesjonalnych HMI masz chyba zdefiniowane wszystkie teksty wewnątrz i wyświetlasz je zależnie od danych odczytanych ze sterownika.
    Przykładowo czytasz sobie rejestr błędów ze sterownika i na bazie kodu czy określonych bitów wyświetlasz odpowiedni tekst (zapisany w panelu). W ten prosty sposób chociażby przełączanie języków jest trywialne, bo kod błędu jest zawsze taki sam, a wyświetlasz komunikat zależnie od języka...

    0
  • #25 04 Gru 2016 22:55
    trolodk
    Poziom 4  

    A.. faktycznie brzmi sprytnie.
    Poszukam i pokombinuję. Może znajdę takie coś również w tym panelu.

    Ponownie dziękuję za pomoc.

    0
  • #27 05 Gru 2016 21:06
    trolodk
    Poziom 4  

    Już wcześniej sprawdziłem to co zasugerował krisRaba i faktycznie jest takie coś. Zdefiniowałem odpowiednie teksty komunikatów, przypisałem je do poszczególnych rejestrów i wywołuję je nadając wartość wpisaną jako tą wyzwalającą dany komunikat (piszę to jakby ktoś kiedyś szukał i napotkał ten temat).

    Mam jeszcze parę problemów, ale myślę, że już z nimi sobie poradzę.
    Jeszcze raz wielkie dzięki Panowie. Bardzo mi pomogliście.

    Pozdrawiam.

    //---------
    edit: tematu jeszcze nie zamykam jakby urodziło mi się jeszcze jakieś pytanie. Chociaż na kilka dni.

    0