Nieudokumentowane polecenia

HAPCAN installation tips and troubleshooting when assembling, commissioning and configuring devices.
Rozwiązywanie problemów z instalacją HAPCAN, budową, uruchamianiem i konfiguracją urządzeń.
Post Reply
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Nieudokumentowane polecenia

Post by m.n »

Gdzie znaleźć opis ramek typu 0x10D, 0x108 itp, które są dostępne w programatorze?
HAPCAN_undocumented_frames.png
HAPCAN_undocumented_frames.png (4.47 KiB) Viewed 12790 times
· Mariusz ·
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Thank you. :)
· Mariusz ·
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Moduł zapytany o stan (np. 0x109 -status request to node), opowiada o sobie wylewnie, wysyła na magistralę wszystko co wie o sobie.
A czy jest możliwe, żeby odpytać moduł o stan np. jednego przycisku/LEDa albo jakoś inaczej go sprowokować, żeby odesłał tylko jedną ramkę, zamiast 17, jak to jest w przypadku modułu 14-kanałowego?
· Mariusz ·
Jacek
Posts: 561
Joined: 17 Feb 2007, 18:00

Re: Nieudokumentowane polecenia

Post by Jacek »

Trzeba by zmodyfikować firmware. Spojrzę później w kod czy jest to do zrobienia w krótkim czasie.
Regards
Jacek
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Dziękuję.

Podczas pracy zintegrowanej z jakimś zewnętrznym systemem, podstawowy scenariusz to:
- wyślij do modułu ramkę ustawiającą „coś”,
- odczytaj stan modułu – sprawdzenie czy „coś” zostało faktycznie ustawione.
Gdyby się udało zoptymalizować odpowiedzi na „status request”, na magistrali CAN byłby znacznie mniejszy ruch podczas takiej pracy. W małych sieciach nie ma problemu, ale przy dużych chyba mógłby być.

Obecnie optymalizację można zrobić jedynie po stronie kodu, który reaguje na przesyłane ramki statusu, żeby niepotrzebnie nie przeciążać go analizowaniem zbędnych danych – można odfiltrować i przetworzyć tylko te ramki, które dotyczą owego „coś”, a dzięki polu Flags (= 0x1) wiadomo, że jest to odpowiedź na zapytanie, a nie na skutek rzeczywistej zmiany stanu modułu.
· Mariusz ·
Jacek
Posts: 561
Joined: 17 Feb 2007, 18:00

Re: Nieudokumentowane polecenia

Post by Jacek »

Przed tą linią (https://github.com/hapcan/UNIV_3.1.3.x/ ... 1.asm#L340) dodałem poniższy kod - wysyła ramki temperatury tylko wtedy jeśli bajt CHANNEL = 0xFF

Code: Select all

        banksel RXFIFO0
        setf    WREG                        ;all channels requested? CHANNEL == 0xFF?
        xorwf   RXFIFO8,W
        bz      $ + .4                      ;yes, so prepare thermometer frames
	return
a przed tą linią (https://github.com/hapcan/UNIV_3.1.3.x/ ... 1.asm#L359) taki - wysyła ramkę przycisku (1...14) w zależności od wartości bajta CHANNEL = 0x01...0x0E. Jeśli CHANNEL = 0xFF wyśle wszystkie ramki

Code: Select all

		;all channels requested?
        setf    WREG                        ;CHANNEL == 0xFF?
        xorwf   RXFIFO8,W
        bz      $ + .8                      ;yes, so prepare channel frame
		;current channel requested?
        movlw   ButNr                       ;CHANNEL == button?
        xorwf   RXFIFO8,W
        bnz     $ + .44                     ;no, so skip the whole macro
Ramka zapytania powinna wyglądać w ten sposób:
Untitled.png
Untitled.png (4.45 KiB) Viewed 12750 times
Skompilowany firmware ze zmianami (sorry, nie testowałem!):
univ_3-1-3-1-rev65535.zip
(10.36 KiB) Downloaded 532 times
Regards
Jacek
Jacek
Posts: 561
Joined: 17 Feb 2007, 18:00

Re: Nieudokumentowane polecenia

Post by Jacek »

m.n wrote: Podczas pracy zintegrowanej z jakimś zewnętrznym systemem, podstawowy scenariusz to:
- wyślij do modułu ramkę ustawiającą „coś”,
- odczytaj stan modułu – sprawdzenie czy „coś” zostało faktycznie ustawione.
Generalnie HAPCAN jest tak zrobiony, że po wysłaniu ramki sterującej urządzeniem, urządzenie sterowane natychmiast odpowiada czy stan został zmieniony.
Ta reguła została celowo pominięta przy sterowaniu LED w module przycisk, właśnie po to by nie generować niepotrzebnego ruchu.
Regards
Jacek
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Załadowałem firmware, działa zgodnie z oczekiwaniem. Sprawdziłem wszystkie kanały. Wartość 0xFF wysyła wszystko.
Dziękuję.
· Mariusz ·
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Jacek wrote:Generalnie HAPCAN jest tak zrobiony, że po wysłaniu ramki sterującej urządzeniem, urządzenie sterowane natychmiast odpowiada czy stan został zmieniony.
Ta reguła została celowo pominięta przy sterowaniu LED w module przycisk, właśnie po to by nie generować niepotrzebnego ruchu.
Do innych modułów jeszcze nie doszedłem, jestem na 3.1.3, dlatego nie poznałem jeszcze tego zachowania.

Wysyłanie 17 ramek po zmianie pojedynczej LED nie jest wskazane i dobrze, że tak się nie dzieje automatycznie, ale gdyby była wysłana jedna ramka, ta dla zmienionej LED, to raczej zbędnego ruchu nie będzie.
Może sterowanie LED nie jest scenariuszem częstym i specjalnie mocno pożądanym, ale akurat od tego modułu zacząłem. :)
· Mariusz ·
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Nie znalazłem informacji o tym jak do modułu 3.1.3 przesłać polecenie „wciśnij button”.
Dla 3.1.0 jest wprost informacja, że się nie da: „There are no control instructions in this firmware.

Jak uzyskać taki efekt, jak w programatorze:
2019-10-12 22_02_02.png
2019-10-12 22_02_02.png (28.96 KiB) Viewed 12736 times
· Mariusz ·
Jacek
Posts: 561
Joined: 17 Feb 2007, 18:00

Re: Nieudokumentowane polecenia

Post by Jacek »

m.n wrote:Nie znalazłem informacji o tym jak do modułu 3.1.3 przesłać polecenie „wciśnij button”.
Moduł musiałby być wyposażony w mechanizm wciskający przycisk "mechaniczna dłoń" :wink:
Tak naprawdę wystarczy "podszyć się" pod ten moduł i wysłać ramkę, którą zwykle on wysyła:
Untitled.png
Untitled.png (10.43 KiB) Viewed 12734 times
Regards
Jacek
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

No tak, zainteresowane moduły zareagują tak, jak na rzeczywiste wciśnięcie przycisku. Proste. :oops:

I jeszcze jedno pytanie: ramka 0x300 (Real Time Clock) – nie znalazłem opisu w dokumentacji. Czy jest gdzieś taki opis? Pytam dla porządku, bo oczywiście jest banalna do rozszyfrowania.
· Mariusz ·
Jacek
Posts: 561
Joined: 17 Feb 2007, 18:00

Re: Nieudokumentowane polecenia

Post by Jacek »

Tę ramkę wysyła moduł ethernetowy:
https://hapcan.com/devices/universal/un ... 2-0-1c.pdf (Tabela 8 )
Regards
Jacek
m.n
Posts: 26
Joined: 12 Apr 2019, 07:07

Re: Nieudokumentowane polecenia

Post by m.n »

Korzystałem ze starszej wersji dokumentacji (3.102.0.0). :oops:
· Mariusz ·
Post Reply