Flora pisze:A wracając do filmów z działania... są to prezentacje obsługi radia/wyświetlacza z symulowanymi danymi. O ile samo wypychanie danych dla wyświetlacza jest proste to już jednoczesna obsługa chociażby pobierania parametrów silnika i reakcji na sterowanie z radia/wyświetlacza może nieźle nabruździć przy multipleksowanych magistralach. Poszczególne moduły nie będą w nieskończoność oczekiwały na odebranie ramek z informacjami i może się okazać, że timeout jest krótszy niż np czas oczekiwania na odpowiedź z sterownika silnika.
Przeprowadzałeś analizy funkcjonalne pod tym kątem?
Multipleksowanie CANów faktycznie utrudnia wszystko, ale w praktyce, to nie jest tak źle.
Niektóre dane wyświetlacz wysyła kilkukrotnie aż stwierdzi, że moduł nie odpowiada - mam tu na myśli komunikację odpowiedzialną za tworzenie całego menu, itp - z tym nie ma problemów. Wyświetlacz wymaga odświeżania danych co 3-5 sekund, więc z tym nie ma problemu.
Problemem jest tylko czasami reakcja na wciśnięcie przycisku (np wejście do menu). Czasami - gdy akurat moduł czyta coś z HSCAN (np silnik) - to ta informacja ginie, ale nie zdarza się to zbyt często. Najwyżej wtedy wciskamy przycisk jeszcze raz.
Większość (to co się dało) sterowania przygotowałem pod taką ewentualność i biorę pod uwagę, że nie wszystko co potrzebuję to tak naprawdę otrzymam - komplikuje to czasami sytuację, ale zwykle działa.
Opóźnienia występują w odświeżaniu danych przez wyświetlacz. Jeśli za szybko coś wysyłam, to wyświetlacz reaguje z opóźnieniem. Z tego powodu nie nadaje się to do wyświetlania szybko zmieniających się danych. No ale widocznie te wyświetlacze takie są.
Maksymalne Timeouty dla komunikacji z modułami są ściśle określone w specyfikacji GMLan (nie pamiętam już teraz konkretnych wartości, ale są to wartości rzędu do 100ms i moduł w tym czasie MUSI odpowiedzieć - chociażby tyle, że jest zajęty i potrzebuje więcej czasu - co się przeważnie zdarza w przypadku komunikacji z wyświetlaczem) i moduł sobie jakoś z tym radzi - także gdy moduł przestanie odpowiadać, lub go po prostu nie ma, to tez problemu większego nie ma. Watchdog pilnuje timeoutów i przerywa komunikację w razie potrzeby. Najwolniejszy z tego wszystkiego i tak wydaje się być wyświetlacz - najbardziej opóźnia komunikację, szczególnie z CD70, gdy radio zbyt dużo informacji wysyła. Wyświetlacz potrafi odrzucić dane (bo się nie wyrabia?). Wtedy i tak jestem na MSCAN - więc wszystko co trzeba to otrzymuję.
Moduł może generować błędy na MSCANie gdy próbuje zmienić język na polski (przy angielskim CD70) - bo podszywa się pod wyświetlacz - no ale to jest opcja, z której nikt korzystać nie musi.
Podsumowując: problemy ze sterowaniem są, aczkolwiek są rzadkie i mogą pojawiać się tylko przy wchodzeniu/wychodzeniu z menu (wtedy wciskamy ponownie przycisk [np rolka na CD70]). W praktyce po menu nie chodzimy prawie wcale (no bo po co podczas jazdy?).
Sterowanie przydaje się do skonfigurowania modułu (tj. menu ustawień, którego nie pokazywałem na żadnym filmie jeszcze).
Ale jak już włączysz sobie menu (np przyciskając BC przez 3s), to po zakładkach możesz chodzić do woli, nie ma problemów z przyciskami w prawo i w lewo, bo tutaj nie ma komunikacji z modułem w tym momencie (tzn... może być, ale nie jest mi potrzebna więc z niej nie korzystam).
Można się łatwo przyzwyczaić, że czasami trzeba nacisnąć np
powrót jeszcze raz
Nie ma możliwości, że przez multipleksowanie CAN nie pojawi Ci się informacja o rozpoczęciu wypalania DPF lub coś w tym stylu... najwyżej otrzymasz ją sekundę później niż gdyby tego multipleksowania nie było.
Nie ma problemów z komunikacją z modułami.
Mam nadzieję, że odpowiedź jest wyczerpująca.
Jeśli mam coś opisać bardziej technicznie, to pytaj - albo tutaj jeśli to jest interesujące dla wszystkich, albo na PW.
PS. 3xCAN rozwiązałoby te wszystkie problemy i wtedy nie byłoby o czym pisać
ale już o tym pisałem wcześniej i nie chcę się powtarzać, no i to wymaga zrobienia wszystkiego od nowa...
Dla tych zastosowań o których tu piszemy, multipleksowanie w zupełności wystarcza.
PS2: przeczytałem to wszystko jeszcze raz... przepraszam za chaotyczny opis, ale multipleksowanie CANów w niektórych sytuacjach było dość skomplikowane, stąd trudno mi to w prosty sposób opisać by nie zanudzać szczegółami implementacji
Co do sterowania lusterkami się nie wypowiem, nie wiem czy się da, bo nie mam takich bajerów u siebie.