Quantex GmbH
Twój region: Europa

Przewodnik po ELM327 dla programistów

Czym jest ELM327?

ELM327 to tekstowy protokół wymiany danych oparty na poleceniach AT, pierwotnie opracowany dla interpretera OBD o tej samej nazwie firmy ELM Electronics. Dzięki swojej prostocie stał się de facto standardem diagnostyki OBD-II i jest obsługiwany przez zdecydowaną większość aplikacji i bibliotek diagnostycznych.

Adapter ScanDoc implementuje ELM327 v2.3 z rozszerzonym zestawem poleceń, obejmującym obsługę DoIP (Diagnostics over IP) do diagnostyki przez Ethernet w nowoczesnych samochodach.

Zasada działania

Wymiana danych odbywa się przez interfejs szeregowy (WLAN, BLE lub USB). Polecenia wysyłane są jako tekst ASCII i zakończone znakiem powrotu karetki (CR, 0x0D). Adapter odpowiada wynikiem, po którym następuje znak zachęty >.

Istnieją dwa rodzaje poleceń:


Przykład wymiany: BMW (rozszerzone adresowanie CAN)

Samochody BMW wykorzystują rozszerzone adresowanie CAN (CAN Extended Addressing), w którym pierwszy bajt danych ramki CAN zawiera adres docelowego ECU. Poniżej przedstawiono rzeczywisty przykład sesji diagnostycznej.

// --- Inicjalizacja adaptera ---

>ATZ                        // Pełny reset adaptera
ELM327 v2.3

>ATE0                       // Wyłącz echo
OK
>ATS0                       // Wyłącz spacje w odpowiedziach
OK
>ATH1                       // Włącz nagłówki w odpowiedziach
OK
>ATL0                       // Wyłącz znak nowej linii
OK
>ATAL                       // Zezwól na długie komunikaty (>7 bajtów)
OK
>ATAT0                      // Wyłącz adaptacyjne taktowanie
OK
>ATSTff                     // Maksymalny limit czasu (FF × 4 ms ≈ 1 s)
OK

// --- Konfiguracja protokołu CAN dla BMW ---

>ATPBC101                   // Protokół B: C1 = 11-bit ID + ISO 15765, 01 = 500 kBaud
OK
>ATSPB                      // Wybierz protokół B (USER1 CAN)
OK
>ATBI                       // Pomiń inicjalizację (BMW nie używa standardowej inicjacji OBD)
OK
>ATSH6F1                    // CAN ID wysyłania = 0x6F1 (adres testera BMW)
OK

// --- Flow Control i rozszerzone adresowanie ---

>ATFCSH6F1                  // Nagłówek Flow Control = 0x6F1
OK
>ATFCSD4030FF32             // Dane FC: 40=adres ECU, 30=CTS, FF=bez limitu, 32=50 ms
OK
>ATFCSM1                    // Tryb FC = 1 (w pełni użytkownika)
OK
>ATCRA640                   // Odbieraj odpowiedzi z CAN ID = 0x640
OK
>ATCEA40                    // Rozszerzony adres CAN = 0x40 (adres ECU)
OK

// --- Zapytanie do ECU pod adresem 0x40 — brak odpowiedzi ---

>1A80                       // Usługa 0x1A (Read ECU Identification), parametr 0x80
NO DATA
>22F150                     // UDS: usługa 0x22 (ReadDataByIdentifier), DID=F150
NO DATA

// --- Przełączenie na ECU pod adresem 0x10 ---

>ATFCSD1030FF32             // Dane FC: adres ECU = 0x10
OK
>ATFCSM1                    // Tryb FC = 1
OK
>ATCRA610                   // Odbieraj odpowiedzi z CAN ID = 0x610
OK
>ATCEA10                    // Rozszerzony adres CAN = 0x10
OK

// --- Pomyślna odpowiedź ---

>22F150                     // UDS: ReadDataByIdentifier, DID=F150
610F10662F1500F25F0         // 610=CAN ID, F1=tester, 06=długość, 62=odpowiedź, F150=DID, 0F25F0=dane

Spis treści


Polecenia ogólne

Polecenie Opis
AT <CR> powtórz ostatnie polecenie
Wysłanie pojedynczego znaku powrotu karetki powoduje, że ELM327 powtarza ostatnio wykonane polecenie. Zwykle używa się tego, gdy chcesz otrzymywać aktualizacje wartości z maksymalną możliwą prędkością — na przykład możesz wysłać 01 0C, aby pobrać obroty silnika, a następnie wysyłać tylko znak powrotu karetki za każdym razem, gdy chcesz otrzymać aktualizację.
AT AL Zezwól na długie komunikaty
Standardowe protokoły OBDII ograniczają liczbę bajtów danych w komunikacie do siedmiu, co zazwyczaj robi również ELM327 (zarówno przy wysyłaniu, jak i odbieraniu). Jeśli wybrano AL, ELM327 będzie zezwalał na długie wysyłanie (osiem bajtów danych) i odbieranie (nieograniczona liczba). Domyślnie AL jest wyłączony (i wybrany NL). Do wysyłania 8-bajtowych komunikatów CAN ELM327 nie wymaga zmiany AL, ale musisz wiedzieć, że jeśli dostarczysz 8 bajtów danych CAN z włączonym rozszerzonym adresowaniem CAN lub zwykłym formatowaniem ISO 15765, bajty danych mogą zostać utracone. Wynika to z tego, że komunikat CAN jest w stanie przesłać tylko 8 bajtów danych, więc jeśli konieczne jest dodanie rozszerzonego adresu lub bajtu PCI, może zostać wysłanych mniej bajtów danych.
AT AMC display Activity Monitor Count
Monitor aktywności używa licznika do określenia, jak aktywne są wejścia OBD ELM327. Za każdym razem, gdy wykryta zostanie aktywność, licznik ten jest zerowany, a jeśli aktywności nie ma, licznik jest zwiększany (co 0,655 sekundy). Licznik ten reprezentuje czas, jaki upłynął od ostatniego wykrycia aktywności, i może być przydatny przy pisaniu własnej logiki opartej na aktywności OBD. Licznik nie zwiększa się powyżej FF (wewnętrzna logika zatrzymuje go na tej wartości) i pozostaje na 00 podczas monitorowania.
AT AMT hh ustaw limit czasu Act Mon Timeout na hh
ELM327 może przechodzić w tryb obniżonego poboru mocy ("uśpienia"), jeśli przez określony czas nie zostanie wykryta aktywność OBD. Regulacja tego okresu odbywa się za pomocą bitu 4 PP 0F lub wartości AMT hh. Jeśli wartość AMT hh jest niezerowa, czas do wyzwolenia sygnału alarmowego wyniesie (hh+1) x 0,65536 sekundy. Jeśli wartość ustawiono na 00, to wszystkie wyjścia obniżonego poboru mocy monitora aktywności są zablokowane (patrz Rysunek 6 na str. 68). Dodatkowe informacje o monitorze aktywności znajdują się w rozdziale "Zarządzanie zasilaniem".
AT AT0, AT1 i AT2 Adaptacyjne sterowanie czasem
Po otrzymaniu odpowiedzi z pojazdu ELM327 tradycyjnie oczekuje na odpowiedź przez czas ustawiony parametrem AT ST hh. Aby zapewnić działanie układu z szerokim zakresem pojazdów, wartość domyślną ustawiono jako zachowawczą (powolną). Mimo możliwości regulacji wiele osób nie dysponowało sprzętem ani doświadczeniem pozwalającym wyznaczyć najlepszą wartość. Funkcja Adaptive Timing automatycznie ustawia wartość limitu czasu zgodnie z rzeczywistym czasem reakcji Twojego pojazdu. Przy zmianie warunków, takich jak obciążenie magistrali itp., algorytm uczy się i wprowadza odpowiednią korektę. Zwróć uwagę, że zawsze wykorzystuje Twoją wartość AT ST hh jako wartość maksymalną i nigdy nie wybierze dłuższej. Dostępne są trzy ustawienia synchronizacji adaptacyjnej. Domyślnie włączona jest opcja Adaptive Timing option 1 (AT1) i jest to ustawienie zalecane.
AT0 służy do wyłączenia synchronizacji adaptacyjnej (limit czasu jest wtedy zawsze równy czasowi ustawionemu przez AT ST), a AT2 jest bardziej agresywną wersją AT1 (efekt jest wyraźniejszy przy bardzo wolnych połączeniach - przy szybszych systemach OBD możesz nie zauważyć dużej różnicy). Protokół J1939 nie obsługuje synchronizacji adaptacyjnej - używa stałych limitów czasu określonych normą.
AT BD wykonaj zrzut bufora OBD
Wszystkie wiadomości wysłane i odebrane przez ELM327 są tymczasowo przechowywane w zestawie dwunastu komórek pamięci nazywanym buforem OBD. Czasami przydatne jest podejrzenie zawartości tego bufora, na przykład w celu poznania przyczyny nieudanej inicjalizacji, zobaczenia bajtów nagłówka ostatniej wiadomości lub po prostu w celu nauki struktury wiadomości OBD. W dowolnej chwili możesz poprosić o "zrzut" zawartości tego bufora (tj. jej wydrukowanie) - gdy to zrobisz, ELM327 wyśle bajt długości (reprezentujący długość wiadomości w buforze), po którym nastąpi zawartość wszystkich dwunastu komórek bufora OBD. Na przykład oto jeden "zrzut":

>AT BD 05 C1 33 F1 3E 23 C4 00 00 10 F8 00 00


Wartość 05 jest bajtem długości - mówi nam, że wiarygodne jest tylko pierwszych 5 bajtów (czyli C1 33 F1 3E i 23). Pozostałe bajty najprawdopodobniej pozostały po poprzedniej operacji. Bajt długości zawsze reprezentuje rzeczywistą liczbę odebranych bajtów, niezależnie od tego, czy zmieściły się w buforze OBD, czy nie. Może to być przydatne podczas przeglądania długich strumieni danych (za pomocą AT AL), ponieważ reprezentuje rzeczywistą liczbę odebranych bajtów, mod 256. Zwróć uwagę, że w buforze zapisywanych jest tylko pierwszych dwanaście odebranych bajtów.
AT BI Pominięcie sekwencji inicjalizacji
Tej komendy należy używać ostrożnie. Pozwala ona uaktywnić protokół OBD bez konieczności inicjalizacji ani uzgadniania (handshake). Proces inicjalizacji jest zwykle wykorzystywany do sprawdzenia wiarygodności protokołu, a bez niego wyniki mogą być trudne do przewidzenia. Nie powinna być używana w codziennych zastosowaniach OBD i została udostępniona wyłącznie do tworzenia symulatorów ECU oraz demonstratorów szkoleniowych.
AT BRD hh try Baud Rate Divisor hh
Ta komenda służy do zmiany dzielnika prędkości transmisji RS232 na wartość szesnastkową podaną w hh, pod kontrolą komputera. Nie jest przeznaczona do przypadkowych eksperymentów - jeśli chcesz zmienić prędkość transmisji z poziomu programu terminalowego, powinieneś użyć PP 0C. Ponieważ niektóre układy interfejsowe nie mogą pracować przy wysokich prędkościach transmisji, komenda BRD wykorzystuje sekwencję wysyłania i odbierania do testu interfejsu, przy czym każdy błąd powoduje powrót do poprzedniej prędkości transmisji. Pozwala to przetestować kilka prędkości transmisji i wybrać niezawodną dla komunikacji. Cały proces został szczegółowo opisany w rozdziale "Korzystanie z wyższych prędkości transmisji RS232" na stronie 53. W razie powodzenia rzeczywista prędkość transmisji (w kbit/s) będzie równa 4000 podzielonemu przez dzielnik (hh). Wartość 00 nie jest wiarygodna i nie jest akceptowana przez komendę BRD.
AT BRT hh ustaw limit czasu prędkości transmisji na hh
Ta komenda pozwala zmienić limit czasu używany do uzgadniania prędkości transmisji (tj. AT BRD). Opóźnienie czasowe wynosi hh x 5,0 ms, gdzie hh to wartość szesnastkowa. Domyślnie dla tego ustawienia przyjęto wartość 0F, zapewniającą 75 ms. Zwróć uwagę, że wartość 00 nie daje 0 ms - zapewnia maksymalny czas 256 x 5,0 ms, czyli 1,28 sekundy.
AT D ustaw wszystko na wartości domyślne
Ta komenda służy do ustawienia parametrów domyślnych (lub fabrycznych), tak jak przy pierwszym włączeniu zasilania. Ostatni zapisany protokół zostanie pobrany z pamięci i stanie się bieżącym ustawieniem (prawdopodobnie zamykając inne aktywne protokoły). Wszelkie ustawienia wprowadzone przez użytkownika dla niestandardowych nagłówków, filtrów lub masek zostaną przywrócone do wartości domyślnych, a wszystkie ustawienia timera również zostaną przywrócone do wartości domyślnych.
AT D0 i D1 wyświetlanie DLC wyłączone lub włączone
Standard CAN (ISO 15765-4) OBD wymaga, aby wszystkie wiadomości składały się z 8 bajtów danych, dlatego wyświetlanie liczby bajtów danych (DLC) zwykle nie jest zbyt przydatne. Jednak podczas eksperymentowania z innymi protokołami możliwość zobaczenia długości danych może być pomocna. Komendy D0 i D1 sterują wyświetlaniem cyfry DLC (aby zobaczyć tę cyfrę, muszą być włączone nagłówki). Gdy jest wyświetlana, pojedyncza cyfra DLC pojawia się między bajtami ID (nagłówka) a bajtami danych. Ustawienie domyślne jest określane przez PP 29.
AT DM1 monitoruj DM1s
Protokół SAE J1939 okresowo przesyła kody usterek w postaci wiadomości Diagnostic Mode 1 (DM1). Ta komenda konfiguruje ELM327 do stałego monitorowania tego typu wiadomości, podążając za wielosegmentowymi protokołami transportowymi, jeśli to konieczne. Zwróć uwagę, że do uzyskania podobnego rezultatu można użyć kombinacji masek i filtrów, ale nie pozwolą one na wykrycie wielowierszowych wiadomości. Komenda DM1 dodaje dodatkową logikę niezbędną dla wielowierszowych wiadomości. Ta komenda jest dostępna tylko wtedy, gdy do formatowania J1939 wybrano protokół CAN (A, B lub C). Przy próbie jej wykonania w jakichkolwiek innych warunkach zwracany jest błąd.
AT DP Opisz bieżący protokół
ELM327 automatycznie wykrywa protokół OBD pojazdu, ale zwykle go nie zgłasza. Komenda DP to wygodny sposób, aby dowiedzieć się, na jaki protokół układ jest aktualnie skonfigurowany (nawet jeśli nie jest jeszcze podłączony do pojazdu). Jeśli wybrano protokół oraz wybrano opcję automatyczną, AT DP pokaże słowo 'AUTO' przed opisem protokołu. Zwróć uwagę, że w opisie podane są rzeczywiste nazwy protokołów, a nie numery używane przez komendy konfiguracji protokołów.
AT DPN "Opisz protokół według numeru"
Ta komenda jest podobna do komendy DP, lecz zwraca liczbę oznaczającą bieżący protokół. Jeśli włączona jest również funkcja automatycznego wyszukiwania, numer poprzedzony będzie literą 'A'. Jest to ten sam numer, który jest używany w komendach "Ustaw protokół" oraz "Test protokołu".
AT E0 i E1 "Echo" wyłączone lub włączone
Te komendy sterują tym, czy znaki odebrane przez port RS232 będą odsyłane echem (powtórnie) do komputera głównego. Echo znaków może zostać wykorzystane do potwierdzenia, że znaki wysłane do ELM327 zostały odebrane poprawnie. Domyślnie ustawiono wartość E1 (czyli echo włączone).
AT FE Forget Events
Istnieją określone zdarzenia, które mogą zmienić zachowanie ELM327 od tej chwili. Jednym z nich jest wystąpienie błędu krytycznego CAN (ERR94), który blokuje późniejsze wyszukiwanie po protokołach CAN, jeśli bit 5 PP 2A jest równy '1'. Zwykle takie zdarzenie wpływa na wszystkie wyszukiwania aż do następnego wyłączenia i włączenia zasilania, ale można je "zapomnieć" programowo, za pomocą komendy AT FE.
Innym przykładem jest zdarzenie 'LV RESET', które uniemożliwia wyszukiwanie po protokołach CAN, jeśli bit 4 PP 2A jest równy '1'. To zdarzenie również może zostać zapomniane za pomocą komendy AT FE.
AT H0 i H1 "Nagłówki" wyłączone lub włączone
Te komendy sterują tym, czy wyświetlać dodatkowe (nagłówkowe) bajty informacji w odpowiedziach z pojazdu. Zwykle nie są one wyświetlane przez ELM327, ale mogą być interesujące (zwłaszcza jeśli otrzymałeś kilka odpowiedzi i chcesz ustalić, z których modułów zostały odebrane). Włączenie nagłówków (za pomocą AT H1) w rzeczywistości pokazuje nie tylko bajty nagłówka - zobaczysz pełną przesłaną wiadomość, w tym cyfry kontrolne i bajty PCI, a także ewentualnie kod długości danych CAN (DLC), jeśli został włączony za pomocą PP 29 lub AT D1. Bieżąca wersja tego układu nie wyświetla kodu CAN CRC ani specjalnych bajtów J1850 IFR (których niektóre protokoły używają do potwierdzenia odbioru wiadomości).
AT I Przedstaw się
Ta komenda powoduje, że układ identyfikuje się, drukując łańcuch identyfikatora produktu (obecnie 'ELM327 v2.3'). Oprogramowanie może jej użyć do ustalenia, z którym dokładnie układem scalonym się komunikuje, bez konieczności resetowania układu.
AT IA Czy protokół jest aktywny?
Ta komenda pozwala dowiedzieć się, czy ELM327 uważa bieżący protokół za aktywny, czy nie. W odpowiedzi na zapytanie zwróci Y lub N, czyli "Tak" lub "Nie".
Aby ELM327 odpowiadał na niektóre komendy, wymagany jest "aktywny" protokół. Protokół uważa się za aktywny, jeśli otrzymał poprawne odpowiedzi na standardowe zapytanie lub uzgadnianie bajtów, albo jeśli użytkownik pominął ten proces za pomocą komendy AT BI. Zwróć uwagę, że ELM327 początkowo oznacza protokół jako aktywny, ale później go nie monitoruje, dlatego nie wie, czy ECU przestało odpowiadać na zapytania w którymś momencie w przyszłości (tj. czy protokół nie jest już aktywny). Twoje oprogramowanie może wymagać okresowego wysyłania standardowego zapytania (najlepiej 01 00), aby ustalić, czy ECU rzeczywiście jest jeszcze aktywne.
AT IB10 ustaw prędkość transmisji ISO na 10400
Ta komenda przywraca prędkość transmisji ISO 9141-2 i ISO 14230-4 (protokoły 3, 4 i 5) do wartości domyślnej 10400. Zwróć uwagę, że komenda IB10 może być użyta w dowolnym momencie (tj. "w locie").
AT IB12 ustaw prędkość transmisji ISO na 12500
Ta komenda służy do zmiany prędkości transmisji używanej dla protokołów ISO 9141-2 i ISO 14230-4 (numery 3, 4 i 5) na 12500 Baud. Zwróć uwagę, że komenda IB12 może być użyta w dowolnym momencie (tj. "w locie").
AT IB15 ustaw prędkość transmisji ISO na 15625 Baud
Ta komenda służy do zmiany prędkości transmisji używanej dla protokołów ISO 9141-2 i ISO 14230-4 (numery 3, 4 i 5) na 15625 Baud. Zwróć uwagę, że komenda IB15 może być użyta w dowolnym momencie (tj. "w locie").
AT IB48 ustaw prędkość transmisji ISO na 4800 Baud
Ta komenda służy do zmiany prędkości transmisji używanej dla protokołów ISO 9141-2 i ISO 14230-4 (numery 3, 4 i 5) na 4800 Baud. Zwróć uwagę, że komenda IB48 może być użyta w dowolnym momencie (tj. "w locie").
AT IB96 ustaw prędkość transmisji ISO na 9600 Baud
Ta komenda służy do zmiany prędkości transmisji używanej dla protokołów ISO 9141-2 i ISO 14230-4 (numery 3, 4 i 5) na 9600 Baud. Zwróć uwagę, że komenda IB96 może być użyta w dowolnym momencie (tj. "w locie").
AT IFR0, IFR1 i IFR2 Sterowanie IFR - bez monitorowania
Protokół SAE J1850 pozwala wysłać bajt In-Frame Response (IFR) po każdej wiadomości, zwykle w celu potwierdzenia poprawnego odbioru tej wiadomości. ELM327 automatycznie generuje i wysyła ten bajt za Ciebie, o ile nie prowadzisz monitorowania (domyślnie ELM327 zawsze milczy podczas monitorowania). To zachowanie można zmienić za pomocą komendy IFR.
Komenda IFR0 wyłącza wysyłanie wszystkich IFR, niezależnie od tego, jaka wiadomość jest wymagana. Komenda IFR2 działa odwrotnie - w odpowiedzi na wiadomość bajt IFR będzie zawsze wysyłany, nawet jeśli zawiera ona błędy. Ustawienie IFR1 powoduje wysłanie IFR, jeśli wiadomość została odebrana poprawnie i jeśli wartość bitu 'K' w pierwszym bajcie nagłówka (zarówno dla PWM, jak i VPW) na to pozwala. Domyślnie używane jest ustawienie IFR1.
AT IFR4, IFR5 i IFR6 Sterowanie IFR - w dowolnym momencie
Choć oryginalne układy ELM327 nigdy nie wysyłały IFR podczas monitorowania, istnieją pewne sytuacje monitorowania, w których możesz chcieć wysłać IFR. Komendy IFR4, IFR5 i IFR6 pozwalają sterować wysyłaniem IFR w dowolnym momencie, niezależnie od tego, czy prowadzone jest monitorowanie, czy nie. Naśladują one komendy IFR0, IFR1 i IFR2 - ustawienie IFR4 powoduje, że IFR nigdy nie jest wysyłany, IFR5 wysyła IFR, jeśli nie ma błędów i bit 'K' na to zezwala, a ustawienie IFR6 wymusza generowanie IFR zawsze (nawet jeśli wystąpił błąd).
AT IFR H i IFR S IFR z nagłówka lub źródła
Wartość wysyłana w bajcie odpowiedzi J1850 In-Frame Response (IFR) zwykle pokrywa się z wartością wysłaną w bajcie adresu źródłowego (tj. testera), która znajdowała się w nagłówku zapytania. Zdarzają się jednak sytuacje, w których pożądane jest użycie innej wartości, a ten zestaw komend na to pozwala. Jeśli wyślesz AT IFR S, ELM327 użyje wartości zdefiniowanej jako adres źródłowy (zwykle F1, ale można ją zmienić za pomocą PP 06 lub AT TA), nawet jeśli w bajcie nagłówka wysłano inną wartość. Nie jest to coś, co zwykle jest wymagane, i należy zachować ostrożność. AT IFR H przywraca wysyłanie bajtów IFR do tych podanych w Nagłówku i jest ustawieniem domyślnym.
AT IGN odczyt poziomu sygnału wejściowego IgnMon
Ta komenda odczytuje poziom sygnału na wyprowadzeniu 15. Zakłada się, że poziom logiczny jest powiązany z napięciem zapłonu, więc jeśli na wejściu jest poziom wysoki, odpowiedzią będzie 'ON', a przy poziomie niskim - 'OFF'. Funkcja ta jest najbardziej przydatna, jeśli chcesz realizować funkcje zarządzania zasilaniem za pomocą własnego oprogramowania. Jeśli wyłączysz automatyczną reakcję Low Power na niski poziom na tym wyprowadzeniu (ustawiając bit 2 PP 0E na 0), to wyprowadzenie 15 będzie działać jako wejście RTS. Niski poziom na tym wejściu nie wyłączy zasilania, lecz przerwie wszelką bieżącą aktywność OBD. Wszystko, co musisz zrobić, to wykryć wiadomość 'STOPPED', która jest wysyłana przy przerwaniu pracy ELM327, a następnie sprawdzić poziom na wyprowadzeniu 15 za pomocą AT IGN. Jeśli okaże się, że jest wyłączony, możesz samodzielnie wykonać uporządkowane wyłączenie.
AT IIA hh ustaw początkowy adres ISO na hh
Standardy ISO 9141-2 i ISO 14230-4 stanowią, że przy rozpoczęciu sesji pracy z ECU sekwencja inicjalizacji powinna być skierowana na określony adres ($33). Jeśli chcesz poeksperymentować, kierując powolną sekwencję pięciu Baud na inny adres, można to zrobić za pomocą tej komendy. Na przykład, jeśli chcesz, aby inicjalizacja była wykonywana z ECU pod adresem $7A, po prostu wyślij: >AT IIA 7A, a ELM327 użyje tego adresu przy zwracaniu się do niego (protokoły 3 lub 4). Pełna wartość ośmiobitowa jest używana w takiej postaci, w jakiej została zadana - nie wprowadza się do niej żadnych zmian (tj. nie dodaje się bitów parzystości itp.)
. Zwróć uwagę, że ustawienie tej wartości nie wpływa na wartości adresów używanych w bajtach nagłówka. Przy przywróceniu ustawień domyślnych lub resecie ELM327 początkowy adres ISO jest przywracany do wartości $33.
AT L0 and L1 Przejście do nowej linii wyłączone lub włączone
Ta opcja steruje wysyłaniem znaków przejścia do nowej linii po każdym znaku powrotu karetki. Przy AT L1 znak przejścia do nowej linii będzie generowany po każdym znaku powrotu karetki, a przy AT L0 — wyłączony. Zwykle użytkownicy wolą włączać tę opcję podczas pracy z programem terminalowym i wyłączać ją przy korzystaniu z własnego interfejsu (nadmiarowe znaki tylko spowalniają wymianę danych). Ustawienie domyślne jest określane przez poziom napięcia na wyprowadzeniu 7 przy włączeniu zasilania (lub resecie). Jeśli poziom jest wysoki — przejście do nowej linii jest włączone, w przeciwnym razie — wyłączone.
AT LP przejdź w tryb niskiego poboru mocy
Ta komenda powoduje, że ELM327 wyłącza wszystko poza «usługami podstawowymi», aby zminimalizować pobór mocy. ELM327 odpowie «OK» (bez powrotu karetki), a po sekundzie zmieni stan wyjścia PwrCtrl (wyprowadzenie 16) i przejdzie w tryb obniżonego poboru mocy (oczekiwanie). Układ można przywrócić do normalnego trybu znakiem na wejściu RS232, narastającym zboczem na wejściu IgnMon (wyprowadzenie 15), a także zwykłymi sposobami resetu (wyłączenie/włączenie zasilania, niski poziom na wyprowadzeniu 1 lub zanik zasilania). Szczegóły znajdują się w rozdziale «Zarządzanie zasilaniem» (str. 67).
AT M0 and M1 Pamięć wyłączona lub włączona
ELM327 posiada wewnętrzną pamięć nieulotną, zdolną zapamiętać ostatnio używany protokół nawet po wyłączeniu zasilania. Jest to wygodne, jeśli układ jest często używany dla jednego protokołu — będzie on pierwszy przy następnym włączeniu. Aby włączyć funkcję pamięci, należy użyć komendy AT M1 lub podłączyć wyprowadzenie 5 do wysokiego poziomu logicznego.
Gdy funkcja pamięci jest włączona, za każdym razem przy wykryciu prawidłowego protokołu OBD zostanie on zapisany i stanie się nową wartością domyślną. Jeśli funkcja pamięci jest wyłączona, znalezione protokoły nie są zapisywane, a ELM327 zawsze uruchamia się z ostatnim zapisanym protokołem. Jeśli ELM327 jest używany w środowisku z często zmieniającymi się protokołami, lepiej wyłączyć pamięć i wykonać AT SP 0. Jeśli natomiast łączysz się z jednym pojazdem, zapisanie jego protokołu jako domyślnego będzie najbardziej rozsądne.
Ustawienie domyślne jest określane przez poziom napięcia na wyprowadzeniu 5 przy włączeniu zasilania (lub resecie). Wysoki poziom (VDD) — pamięć włączona, niski — wyłączona.
AT NL Wiadomości o normalnej długości
Ta komenda ustawia ELM327 na wysyłanie normalnej liczby bajtów danych, zgodnie z wymaganiami standardów OBD. Służy do cofnięcia zmian wprowadzonych w trybie Allow Long (AT AL). Zwróć uwagę, że ELM327 nie wymaga zmiany AL, aby zezwolić na odbiór dłuższych wiadomości dla protokołów KWP. Możesz po prostu pozostawić dla IC ustawienie NL, przyjęte domyślnie, a wszystkie odebrane bajty zostaną pokazane.
AT R0 i R1 Odpowiedzi wyłączone lub włączone
Te komendy sterują automatycznym odbiorem (i wyświetlaniem) przez ELM327 wiadomości zwracanych przez pojazd. Jeśli odpowiedzi są wyłączone, to po wysłaniu zapytania układ nie będzie czekał na odpowiedź z pojazdu, lecz od razu wróci do oczekiwania na następną komendę RS232 (ELM327 nie wydrukuje niczego, aby poinformować, że wysyłka się powiodła, ale zobaczysz wiadomość, jeśli się nie powiodła). R0 może być przydatne do wysyłania komend "w ciemno" przy używaniu układu w sieciowych zastosowaniach niezwiązanych z OBD lub przy symulacji ECU w procesie szkolenia. Nie zaleca się jednak używania tej opcji w zwykłej komunikacji OBD, ponieważ pojazd może mieć trudności, jeśli oczekuje potwierdzenia, a go nie otrzymuje. Ustawienie R0 zawsze unieważnia wszelką "cyfrę liczby odpowiedzi" podawaną przy zapytaniu OBD. Domyślnie używana jest wartość R1, czyli "odpowiedzi włączone".
AT RD Odczyt danych z pamięci użytkownika
Wartość bajtu zapisana komendą SD jest pobierana za pomocą tej komendy. Dostępna jest tylko jedna komórka pamięci, dlatego adres nie jest wymagany.
AT RV Read the input Voltage
Powoduje to zainicjowanie odczytu napięcia obecnego na wyprowadzeniu 2 i przekształcenie go w napięcie w postaci dziesiętnej. Domyślnie zakłada się, że wejście jest podłączone do mierzonego napięcia przez dzielnik napięcia o stosunku 1:5,7 (na przykład szeregowo połączone rezystory 47KΩ i 10KΩ, przy czym 10KΩ jest podłączony od wyprowadzenia 2 do Vss), a zasilanie ELM327 wynosi nominalne 5 V. Pozwoli to mierzyć napięcie wejściowe do około 28 V (napięcie na wyprowadzeniu 2 nie może przekraczać Vdd) z niekalibrowaną dokładnością, zwykle około 2 %. Informacje o kalibracji znajdują się w rozdziale "Odczyt napięcia akumulatora".
AT S0 and S1 Drukowanie spacji wyłączone lub włączone
Te komendy sterują tym, czy w odpowiedziach ECU wstawiane są znaki spacji. ELM327 zwykle wyświetla odpowiedzi ECU jako sekwencję znaków hex rozdzielonych spacjami (dla wygody odczytu), ale wiadomości można przesyłać znacznie szybciej, jeśli usunie się co trzeci bajt (spację). Choć czyni to wiadomość mniej czytelną dla człowieka, może znacznie przyspieszyć przetwarzanie danych przez komputer. Domyślnie spacje są włączone (S1) i znaki spacji są wstawiane do każdej odpowiedzi.
AT SD hh Zapisz bajt danych hh
ELM327 może zapisać jeden bajt informacji w specjalnej pamięci nieulotnej, która zachowuje swoją zawartość nawet po wyłączeniu zasilania. Po prostu podaj bajt, który chcesz zapisać, a następnie pobierz go za pomocą komendy odczytu danych (AT RD). Ta komórka doskonale nadaje się do przechowywania ustawień użytkownika, identyfikatorów urządzeń, liczenia powtórzeń lub innych informacji.
AT WS Ciepły restart
Podobna do komendy AT Z, ale bez testowania diod LED przy włączeniu. Użytkownicy mogą uznać to za wygodny sposób na szybkie «rozpoczęcie od nowa» bez zbędnego opóźnienia AT Z. Przy używaniu zmiennych prędkości RS232 (komendy AT BRD) zaleca się resetowanie układu tą komendą, a nie AT Z, ponieważ AT WS nie zresetuje prędkości RS232.
AT Z pełny reset
Ta komenda powoduje, że układ wykonuje pełny reset, tak jakby zasilanie zostało wyłączone i ponownie włączone. Wszystkie ustawienia wracają do wartości domyślnych, a układ przechodzi w stan oczekiwania na znaki na magistrali RS232. Zwróć uwagę, że prędkość ustawiona komendą AT BRD zostanie utracona, a ELM327 wróci do domyślnego ustawienia prędkości.
AT @1 pokaż opis urządzenia
Ta komenda wyświetla łańcuch opisu urządzenia. Tekst domyślny to «OBDII to RS232 Interpreter».
AT @3 cccccccccccc zapisz identyfikator urządzenia
Ta komenda służy do ustawienia kodu identyfikatora urządzenia. Należy wysłać dokładnie 12 znaków; po zapisaniu w pamięci nie można ich zmienić (komendy @3 można użyć tylko raz). Znaki muszą być drukowalne (kody ASCII od 0x21 do 0x5F włącznie). Jeśli opracowujesz oprogramowanie do zapisu identyfikatorów, może Cię zainteresować układ ELM328, który pozwala na wielokrotny zapis komendą @3 (ale nie może wysyłać wiadomości OBD).

Polecenia wyboru protokołu

Polecenie Opis
AT PC "Zamknięcie protokołu"
Zdarzają się sytuacje, gdy konieczne jest zatrzymanie (dezaktywacja) protokołu. Być może nie korzystasz z automatycznego wyszukiwania protokołów, lecz chcesz ręcznie aktywować i dezaktywować protokoły. Być może chcesz zaprzestać wysyłania komunikatów podtrzymujących (wybudzających) lub masz inny powód. Polecenie PC jest używane w takich przypadkach, aby wymusić zamknięcie protokołu.
AT SP h Ustaw protokół h
To polecenie ustawia ELM327 do pracy z protokołem wskazanym w „h” i zapisuje go jako nowe ustawienie domyślne. Protokół zostanie zapisany niezależnie od ustawienia AT M0/M1.
ELM327 obsługuje 12 różnych protokołów (dwa mogą być definiowane przez użytkownika):
0 — Automatyczny, 1 — SAE J1850 PWM (41,6 kBaud), 2 — SAE J1850 VPW (10,4 kBaud), 3 — ISO 9141-2 (5 Baud, 10,4 kBaud), 4 — ISO 14230-4 KWP (5 Baud, 10,4 kBaud), 5 — ISO 14230-4 KWP (szybka inicj., 10,4 kBaud), 6 — ISO 15765-4 CAN (11 bit, 500 kBaud), 7 — ISO 15765-4 CAN (29 bit, 500 kBaud), 8 — ISO 15765-4 CAN (11 bit, 250 kBaud), 9 — ISO 15765-4 CAN (29 bit, 250 kBaud), A — SAE J1939 CAN (29 bit, 250* kBaud), B — USER1 CAN (11* bit, 125* kBaud), C — USER2 CAN (11* bit, 50* kBaud). (* — konfigurowane przez użytkownika)
Protokół 0 wskazuje ELM327, że protokół pojazdu jest nieznany i należy wykonać wyszukiwanie. Polecenie AT SP 0 ustawia protokół na 0, ale nie wykonuje zapisu do EEPROM (dla przyspieszenia). Jeśli wybrano konkretny protokół (na przykład AT SP 3), stanie się on domyślnym i będzie jedynym używanym.
AT SP 00 skasuj zapisany protokół
Aby przyspieszyć wykrywanie protokołu, polecenie SP 0 ustawia tryb automatyczny, ale nie wykonuje (czasochłonnego) zapisu do EEPROM. Zmniejsza to zużycie EEPROM. Czasami jednak konieczne jest zapisanie wartości 0 w zapisanym protokole — do tego służy polecenie SP 00.
AT SP Ah Ustaw protokół h z automatycznym wyszukiwaniem
Ten wariant polecenia SP pozwala wybrać początkowy (domyślny) protokół, zachowując jednocześnie możliwość automatycznego wyszukiwania prawidłowego protokołu w razie niepowodzenia połączenia. Na przykład, jeśli Twój pojazd używa ISO 9141-2, ale chcesz czasami stosować ELM327 z innymi pojazdami, możesz użyć AT SP A3 — pierwszy będzie protokół 3, ale w razie niepowodzenia nastąpi automatyczne wyszukiwanie. Nie zapomnij wyłączyć funkcji pamięci, w przeciwnym razie każdy nowo wykryty protokół stanie się domyślnym.
SP Ah zapisuje informacje o protokole, nawet jeśli pamięć jest wyłączona (ale SP A0 i SP 0A nie zapisują do EEPROM). Litera „A” może stać przed lub po h, więc AT SP A3 i AT SP 3A są równoważne.
AT SS użyj standardowej sekwencji wyszukiwania
Norma SAE J1978 określa kolejność wyszukiwania protokołów, jaką powinny stosować przyrządy diagnostyczne. Odpowiada ona numeracji protokołów ELM327. W celu przyspieszenia wyszukiwania ELM327 zwykle nie przestrzega tej kolejności, ale zastosuje się do niej, jeśli wydasz polecenie AT SS.
AT TP h Testuj protokół h
To polecenie jest identyczne z SP, z tą różnicą, że wybrany protokół nie jest od razu zapisywany w wewnętrznej pamięci EEPROM, czyli nie zmienia ustawienia domyślnego. Zwróć uwagę: jeśli funkcja pamięci jest włączona (AT M1) i nowy protokół okazał się prawidłowy, zostanie on zapisany w pamięci jako nowe ustawienie domyślne.
AT TP Ah Testuj protokół h z automatycznym wyszukiwaniem
To polecenie jest podobne do AT TP, ale jeśli wybranego protokołu nie uda się zainicjować, ELM327 automatycznie przechodzi przez pozostałe protokoły, próbując połączyć się z jednym z nich.

Polecenia CAN

Polecenie Opis
AT C0 i C1 Potwierdzenie wyłączenia lub włączenia wysyłki CAN
ELM327 zawsze czekał po wysłaniu komunikatu CAN, aby upewnić się, że transmisja danych przebiegła prawidłowo. Jeśli tak się nie działo, zwracany był komunikat 'CAN ERROR'. W oprogramowaniu sprzętowym v2.3 możesz wyłączyć to potwierdzenie i ewentualnie nieco szybciej powrócić do stanu zapytania. Może to zaoszczędzić czas wysyłki jednego komunikatu (około 230 µs dla 500 kbit/s), ale przy tym nie będzie informacji zwrotnej w przypadku nieprawidłowej wysyłki. Zalecamy, aby zawsze pozostawiać ten parametr na wartości domyślnej (C1 - Potwierdzenie włączone).
AT CAF0 i CAF1 Automatyczne formatowanie CAN wyłączone lub włączone
Te polecenia określają, czy ELM327 będzie pomagać Ci formatować wysyłane i odbierane dane CAN. Przy włączonym automatycznym formatowaniu CAN (CAF1) bajty formatujące (PCI) będą automatycznie generowane przy wysyłaniu i usuwane przy odbiorze. Oznacza to, że możesz nadal wysyłać zapytania OBD (01 00 itd.) jak zwykle, nie zwracając uwagi na dodatkowe bajty, których wymagają systemy diagnostyczne CAN. Ponadto przy włączonym formatowaniu wszystkie zbędne (nieużywane) bajty danych odebrane w ramce zostaną usunięte, a komunikaty z niedozwolonymi bajtami PCI zostaną zignorowane. (Podczas monitorowania wszystkie komunikaty z niedozwolonymi bajtami PCI są jednak wyświetlane, a obok nich pojawia się komunikat '
AT CEA wyłącz rozszerzony adres CAN
Polecenie CEA służy do wyłączenia funkcji specjalnych ustawionych za pomocą polecenia CEA hh. Przywraca również adres ustawiony poleceniem AT CER hh do wartości domyślnej.
AT CEA hh ustaw rozszerzony adres CAN na hh
Niektóre (nie OBD) protokoły CAN rozszerzają pola adresowania, używając pierwszego z ośmiu bajtów danych jako adresu celu (odbiornika). To polecenie pozwala ELM327 współpracować z takimi protokołami. Wysłanie polecenia CEA hh powoduje, że ELM327 wstawia wartość hh jako pierwszy bajt danych do wszystkich wysyłanych przez Ciebie komunikatów CAN. Dodaje również kolejny etap filtrowania odebranych komunikatów, przepuszczając tylko te, które mają adres testera na pozycji pierwszego bajtu (oprócz wymogu, aby bity ID odpowiadały wzorcom ustawionym przez AT CF i CM, FT lub CRA). Polecenie AT CEA hh może zostać wysłane w dowolnym momencie, a zmiany wchodzą w życie natychmiast, co pozwala zmieniać adres "w locie". Adresowanie rozszerzone jest omówione bardziej szczegółowo w rozdziale "Korzystanie z rozszerzonych adresów CAN" na stronie 64. Tryb pracy CEA jest domyślnie wyłączony i włącza się przez wysłanie polecenia CEA z adresem docelowym. Po włączeniu można go wyłączyć, wysyłając polecenie AT CEA (bez adresu) lub przywracając ustawienia domyślne układu za pomocą AT D, AT Z itd. Zwróć uwagę, że ustawienie CEA nie ma wpływu, jeśli włączone jest formatowanie J1939.
AT CER hh ustaw rozszerzony adres Rx CAN na hh
Domyślnie ELM327 odbiera odpowiedzi na zapytania rozszerzonego adresowania CAN, które zawierają "adres testera" na pozycji pierwszego bajtu danych. Polecenie CER pozwala wybrać inny adres odbioru. Wartości ustawione za pomocą tego polecenia są resetowane do wartości domyślnej za pomocą polecenia AT CEA.
AT CF hhh ustaw filtr CAN ID na hhh
Filtr CAN działa w połączeniu z maską CAN, aby określić, jakie informacje zostaną przyjęte przez odbiornik. Przy odbiorze każdego komunikatu przychodzące bity CAN ID są porównywane z bitami CAN Filter (jeśli bit maski wynosi '1 '). Jeśli wszystkie odpowiadające bity się zgadzają, komunikat zostanie przyjęty i przetworzony przez ELM327, w przeciwnym razie zostanie odrzucony. Ta trzybitowa wersja polecenia CAN Filter nieco upraszcza ustawianie filtrów w systemach CAN z identyfikatorem 11-bitowym. Wykorzystywanych jest tylko 11 skrajnie prawych bitów z podanych półbajtów, a najstarszy bit jest ignorowany. W rzeczywistości jednak dane są przechowywane jako cztery bajty, a to polecenie dodaje wiodące zera dla pozostałych bajtów. Więcej informacji znajdziesz w poleceniu(ach) CM. Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 przy jednoczesnym użyciu polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w protokole J1939 w żadnym momencie. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CF hh hh hh hh ustaw filtr CAN ID na hhhhhhh
To polecenie pozwala ustawić od razu wszystkie cztery bajty (faktycznie 29 bitów) filtra CAN. Trzy najstarsze bity będą zawsze ignorowane i można im przypisać dowolną wartość. Tego polecenia można też użyć do wprowadzania 11-bitowych filtrów ID, ponieważ są one przechowywane w tych samych miejscach wewnątrz urządzenia (wprowadzenie AT CF 00 00 0h hh jest dokładnie takie samo jak wprowadzenie krótszego polecenia AT CF hhh). Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 przy jednoczesnym użyciu polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w protokole J1939 w żadnym momencie. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CFC0 and CFC1 Sterowanie przepływem CAN wył lub wł
Protokół ISO 15765-4 CAN oczekuje, że komunikat «Flow Control» będzie zawsze wysyłany w odpowiedzi na komunikat «First Frame», a ELM327 wysyła je automatycznie bez ingerencji użytkownika. Podczas eksperymentów z systemem innym niż OBD może być konieczne wyłączenie tej automatycznej odpowiedzi — do tego służy polecenie AT CFC0. Począwszy od oprogramowania sprzętowego v2.0, te polecenia włączają/wyłączają również wysyłanie komunikatów J1939 TP.CM_CTS w odpowiedzi na zapytania TP.CM_RTS. Podczas monitorowania (AT MA, MR lub MT) komunikaty Flow Control nigdy nie są wysyłane, niezależnie od ustawienia CFC. Ustawienie domyślne to CFC1 (Flow Control włączone).
AT CM hhh ustaw maskę identyfikatora CAN na hhh
W systemie CAN może być jednocześnie przesyłana duża liczba komunikatów. Aby ograniczyć liczbę komunikatów przeglądanych przez ELM327, niezbędny jest system filtrowania potrzebnych spośród wszystkich pozostałych. Służy do tego filtr, który działa w połączeniu z maską. Maska to grupa bitów, które wskazują ELM327, które bity w filtrze są istotne, a które można zignorować. Warunek 'must match ' jest sygnalizowany ustawieniem bitu maski na '1 ', a 'don 't care' jest sygnalizowany ustawieniem bitu na '0'. Ta trzycyfrowa odmiana polecenia CM służy do uzyskiwania wartości maski dla systemów identyfikacji 11-bitowej (najstarszy bit jest zawsze ignorowany). Zwróć uwagę, że dla masek 29-bitowych i 11-bitowych używane jest wspólne miejsce przechowywania, dlatego maskę 11-bitową można przypisać następującym poleceniem (CM hh hh hh hh), jeśli chcesz wpisać więcej. Wartości są wyrównane do prawej, dlatego należy podać pięć wiodących zer, po których następują trzy bajty maski. Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 przy jednoczesnym użyciu polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w protokole J1939 w żadnym momencie. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CM hh hh hh hh ustaw maskę CAN ID na hhhhhhhhh
To polecenie służy do przypisywania wartości masek dla systemów identyfikacji 29-bitowej. Zobacz omówienie polecenia CM hhh, ponieważ jest ono praktycznie identyczne, z wyjątkiem długości. Zwróć uwagę, że trzy najstarsze bity, które podasz w pierwszej cyfrze, zostaną zignorowane. Zwróć uwagę na ostrzeżenie, że nie można go używać z protokołem J1939. Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 i jednocześnie użyjesz polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w protokole J1939 w żadnym momencie. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CP hh ustaw bity priorytetu CAN na hh
To polecenie zapewnia jeden ze sposobów przypisania pięciu najstarszych bitów 29-bitowego identyfikatora CAN, który będzie używany do wysyłania komunikatów (pozostałe 24 bity można ustawić za pomocą polecenia AT SH). Wiele systemów wykorzystuje te bity do przypisywania komunikatom wartości priorytetu oraz określania protokołu komunikatu. Wszelkie bity podane ponad pięć wymaganych są ignorowane i nie są zapisywane przez ELM327 (używa on tylko pięciu najmłodszych bitów tego bajtu). Domyślnie dla wartości CP hh używana jest wartość szesnastkowa 18, którą można przywrócić w dowolnym momencie poleceniem AT D.
AT CRA reset CAN Rx Addr
Polecenie AT CRA służy do przywracania filtrów odbioru CAN do wartości domyślnych. Zwróć uwagę, że nie przyjmuje ono argumentów (tzn. żadnych danych).
AT CRA hhh ustaw CAN Rx Addr na hhh
Konfigurowanie masek i filtrów CAN bywa czasem skomplikowane, dlatego jeśli chcesz odbierać informacje tylko z jednego adresu (tzn. z jednego CAN ID), to polecenie może okazać się bardzo przydatne. Na przykład, jeśli chcesz widzieć informacje tylko z adresu 7E8, po prostu wyślij AT CRA 7E8, a ELM327 wykona niezbędne dostosowanie maski i filtra. Jeśli chcesz zezwolić na odbiór zakresu wartości, możesz użyć litery X do oznaczenia warunku "obojętne". Czyli AT CRA 7EX pozwoli przepuszczać wszystkie identyfikatory zaczynające się od 7E (7E0, 7E1 itd.). Dla bardziej konkretnego zakresu identyfikatorów może być konieczne przypisanie maski i filtra. Aby cofnąć zmiany dokonane poleceniem CRA, po prostu wyślij AT CRA lub AT AR. Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 przy jednoczesnym użyciu polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w żadnym momencie podczas korzystania z protokołu J1939. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CRA hhhhhhhh ustaw CAN Rx Addr na hhhhhhhh
To polecenie jest identyczne z poprzednim, z tą różnicą, że jest używane z 29-bitowymi identyfikatorami CAN. Wysłanie AT CRA lub AT AR również cofnie wszystkie zmiany dokonane tym poleceniem. Zwróć uwagę, że odpowiedzi nie będą przewidywalne, jeśli użyjesz poleceń CRA, CF lub CM z protokołem SAE J1939 przy jednoczesnym użyciu polecenia MP lub polecenia DM1. W rzeczywistości nie zalecamy używania poleceń CRA, CM lub CF w protokole J1939 w żadnym momencie. Jeśli potrzebujesz dodatkowego filtrowania w protokole J1939, rozważ użycie polecenia FT.
AT CS pokaż liczniki stanu CAN
Protokół CAN wymaga prowadzenia statystyk dotyczących liczby wykrytych błędów transmisji i odbioru. Przy znacznej liczbie błędów (z powodu problemu sprzętowego lub programowego) urządzenie się wyłącza, aby nie wpływać na inne dane na magistrali. Polecenie AT CS pozwala zobaczyć liczbę błędów nadajnika (Tx) i odbiornika (Rx) w formacie szesnastkowym. Jeśli nadajnik musi zostać wyłączony (licznik >FF), zobaczysz 'OFF', a nie konkretną wartość licznika. Począwszy od oprogramowania sprzętowego v2.2, odpowiedź CS będzie również pokazywać bieżącą częstotliwość sygnału na CAN. Typowa odpowiedź może wyglądać następująco:

``` >AT CS
AT CSM0 i CSM1 Wyłączenie lub włączenie cichego monitorowania CAN
ELM327 został zaprojektowany tak, aby być całkowicie cichym podczas monitorowania magistrali CAN. Dzięki temu może raportować dokładnie to, co widzi, nie zniekształcając w żaden sposób informacji. Czasami (podczas testów stanowiskowych lub przy podłączeniu do dedykowanego portu CAN) może być wymagane, aby ELM327 pracował niecicho (tzn. generował bity ACK itd.), i właśnie do tego służy polecenie CSM. CSM1 je włącza, CSM0 wyłącza, a wartość domyślna jest określana przez PP 21. Zachowaj ostrożność podczas eksperymentowania z tym. Jeśli wybierzesz nieprawidłową prędkość transmisji danych, a następnie będziesz obserwować magistralę CAN z wyłączonym cichym monitorowaniem, zakłócisz strumień danych. Zawsze pozostawiaj ciche monitorowanie włączone, dopóki nie upewnisz się, że wybrałeś prawidłową prędkość transmisji danych.
AT CTM1 ustaw mnożnik timera na 1
To polecenie powoduje, że wszystkie limity czasu ustawione przez AT ST są mnożone przez współczynnik 1. Zwróć uwagę, że obecnie wpływa to tylko na protokoły CAN (od 6 do C). Domyślnie używana jest wartość CTM1. CTM5 [ ustaw mnożnik timera na 5 ] To polecenie powoduje, że wszystkie limity czasu ustawione przez AT ST są mnożone przez współczynnik 5. Zwróć uwagę, że obecnie wpływa to tylko na protokoły CAN (od 6 do C). Pierwotnie to polecenie zostało dodane (jako JTM5), aby pomóc w odbiorze niektórych komunikatów J1939. Od tamtej pory otrzymaliśmy kilka próśb, aby umożliwić mu wpływanie na wszystkie tryby CAN, dlatego zmieniliśmy kod JTM5 i dodaliśmy nowe polecenia CTM1/CTM5. Przy używaniu CTM5 ostrzegamy, że kod Adaptive Timing nie śledzi zmian w ustawieniach, dlatego radzimy go wyłączyć (za pomocą AT AT0). Domyślnie ten mnożnik jest wyłączony.
AT FC SD 1-5 bajtów
Za pomocą tego polecenia można zdefiniować bajty danych, które są wysyłane w komunikacie sterowania przepływem CAN. Można podać od jednego do pięciu bajtów danych, przy czym pozostałe bajty danych w komunikacie są automatycznie ustawiane na domyślny bajt wypełniający CAN, jeśli wymaga tego protokół. Dane przekazywane za pomocą tego polecenia są używane tylko wtedy, gdy włączone są tryby sterowania przepływem 1 lub 2.
AT FC SH hhh Ustaw nagłówek Flow Control
Za pomocą tego polecenia można ustawić bajty nagłówka (lub bardziej poprawnie "CAN ID") używane dla komunikatów sterowania przepływem CAN. Wykorzystanych zostanie tylko 11 skrajnie prawych bitów - najstarszy bit jest zawsze usuwany. To polecenie wpływa tylko na tryb sterowania przepływem 1.
AT FC SH hhhhhhhh Ustaw nagłówek Flow Control
To polecenie służy do ustawienia nagłówka (lub 'CAN-bitów dla odpowiedzi Flow Control z 29-bitowymi systemami CAN ID. Ponieważ 8 półbajtów definiuje 32 bity, wykorzystanych zostanie tylko 29 skrajnie prawych bitów - najstarsze trzy bity są zawsze usuwane. To polecenie wpływa tylko na tryb sterowania przepływem 1.
AT FC SM h Ustaw tryb Flow Control na h
To polecenie ustawia, jak ELM327 reaguje na komunikaty First Frame, jeśli włączone są automatyczne odpowiedzi Flow Control. Jednocyfrowa wartość może wynosić '0' (domyślnie) dla całkowicie automatycznych odpowiedzi, '1' dla całkowicie zdefiniowanych przez użytkownika odpowiedzi lub '2' dla zdefiniowanych przez użytkownika bajtów danych w odpowiedzi. Zwróć uwagę, że tryby FC 1 i 2 mogą zostać włączone tylko wtedy, gdy zdefiniowałeś niezbędne bajty danych i ewentualnie ID. W przeciwnym razie otrzymasz błąd. Więcej informacji i przykładów znajdziesz w rozdziale Zmiana komunikatów sterowania przepływem (str. 62).
AT FT Filtr według nadajnika wył
Jeśli ustawiono filtr ograniczający odbierane komunikaty, można go wyłączyć za pomocą polecenia AT FT.
AT FT hh Filtr według nadajnika = hh
To polecenie zapewnia dodatkowy poziom filtrowania odbieranych komunikatów. Komunikat zostanie przyjęty, jeśli wartość przekazana poleceniem hh jest zgodna z wartością trzeciego bajtu standardowego trzybajtowego nagłówka lub z ośmioma najmłodszymi bitami identyfikatora CAN. Jest to uzupełnienie wszelkiego innego filtrowania zapewnianego przez inne polecenia. Aby uzyskać więcej informacji, zapoznaj się z rozdziałem "Filtrowanie według nadajnika".
AT PB xx yy ustaw parametry protokołu B
To polecenie pozwala zmienić parametry protokołu B (USER1) oraz prędkość transmisji danych bez konieczności zmiany odpowiednich parametrów programowalnych (PP 2C i PP 2D). Pozwala to łatwiej zmieniać protokół podczas testu. Aby skorzystać z tej funkcji, po prostu ustaw xx na wartość dla PP 2C, a yy na wartość dla PP 2D, i wykonaj polecenie. Przy następnej inicjalizacji protokołu zostaną użyte te wartości. Na przykład, aby skonfigurować protokół B do użytku z 500 kbit/s J1939, po prostu wykonaj polecenie: >AT PB 42 01 Jako inny przykład załóżmy, że chcesz monitorować system używający 11-bitowego CAN z prędkością 33,3 kbit/s. Jeśli nie jest wymagane żadne specjalne formatowanie, oznacza to wartość 11000000 lub C0 hex dla PP 2C oraz 15 dziesiętnie lub 0F szesnastkowo dla PP 2D. Po prostu wyślij te wartości do ELM327 za pomocą polecenia: >AT PB C0 0F następnie rozpocznij monitorowanie za pomocą polecenia: >AT MA Jeśli widzisz błędy CAN ERROR i zdajesz sobie sprawę, że potrzebna była prędkość transmisji 83,3 kbit/s, zamknij protokół i wyślij nowe wartości: >AT PC OK >AT PB C0 06 OK >AT MA Wartości przekazane w ten sposób nie wpływają na te przechowywane w parametrach programowalnych 2C i 2D i są tracone przy ponownym uruchomieniu ELM327. Jeśli chcesz, aby Twoje ustawienia były zachowywane przez wiele cykli zasilania, możesz zapisać je w parametrach programowalnych dla protokołów CAN USER1 lub USER2.
AT RTR wyślij komunikat RTR
To polecenie powoduje wysłanie specjalnego komunikatu CAN 'Remote Frame'. Ten typ komunikatu nie zawiera bajtów danych i ma ustawiony bit Remote Transmission Request (RTR). Nagłówki i filtry pozostaną takie, jak zostały ustawione wcześniej (tzn. ELM327 nie czyni żadnych założeń co do formatu, jaki może mieć odpowiedź), dlatego może być konieczne dostosowanie maski i filtra. To polecenie powinno być używane z aktywnym protokołem CAN (który wysyła i odbiera komunikaty), ponieważ nie może ono zainicjować wyszukiwania protokołu. Zwróć uwagę, że ustawienie CAF1 zwykle wyklucza wyświetlanie wszystkich RTR, dlatego jeśli monitorujesz komunikaty i chcesz widzieć RTR, musisz wyłączyć formatowanie lub włączyć nagłówki.
ELM327 traktuje RTR jak każdy inny komunikat i oczekuje odpowiedzi od pojazdu (o ile nie wybrano AT R0).
AT SH xyz Ustaw nagłówek na 00 0x yz
Wprowadzanie 11-bitowych CAN ID (nagłówków) zwykle wymaga dodawania wiodących zer (na przykład AT SH 00 07 DF), ale to polecenie to upraszcza. Polecenie AT SH xyz przyjmuje trzycyfrowy argument, bierze z niego tylko 11 prawych bitów, dodaje wiodące zera i zapisuje wynik. Na przykład AT SH 7DF to prawidłowe polecenie, wygodne do pracy z 11-bitowymi systemami CAN. Faktycznie nagłówek jest zapisywany jako 00 07 DF.
AT SH xx yy zz Ustaw nagłówek na xx yy zz
To polecenie pozwala użytkownikowi ręcznie sterować wartościami trzech bajtów nagłówka komunikatu. Zwykle te bajty są przypisywane automatycznie, ale zdarzają się sytuacje, gdy pożądana jest ich zmiana (szczególnie podczas eksperymentów z adresowaniem fizycznym).
Zaleca się ustawianie nagłówków po aktywacji protokołu, aby komunikaty wakeup itd. korzystały z wartości domyślnych.
Bajty nagłówka są podawane cyframi szesnastkowymi: xx — pierwszy bajt (priorytet/typ), yy — drugi (odbiornik), zz — trzeci (nadajnik). Obowiązują one do następnego ustawienia lub przywrócenia wartości domyślnych poleceniami D, WS lub Z.
To polecenie służy do przypisywania wszystkich bajtów nagłówka — J1850, ISO 9141, ISO 14230 lub CAN. Systemy CAN używają tych trzech bajtów do wypełnienia bitów 0–23 ID (dla 29-bit ID) lub tylko 11 prawych bitów dla 11-bit CAN ID. Dodatkowe 5 bitów dla systemu 29-bit ustawia się poleceniem AT CP.
AT SH ww xx yy zz Ustaw nagłówek na ww xx yy zz
Czterobajtowa wersja polecenia AT SH pozwala ustawić pełny 29-bitowy CAN ID jedną instrukcją. Jest to odpowiednik jednoczesnego użycia AT CP (dla pięciu najstarszych bitów) oraz trzybajtowej wersji AT SH (dla pozostałych trzech bajtów).
AT ST hh Ustaw limit czasu na hh
Po wysłaniu zapytania ELM327 oczekuje odpowiedzi przez zadany czas, po czym może ogłosić, że od pojazdu nie otrzymano "NO DATA". To samo ustawienie timera może być również używane po otrzymaniu odpowiedzi, w oczekiwaniu, czy nie nadejdzie jeszcze jakaś (ale zależy to od ustawień AT). Polecenie AT ST pozwala dostroić ten timer z krokiem 4 ms (lub 20 ms, jeśli w protokole CAN wybrano CTM5). Jeśli włączona jest funkcja Adaptive Timing, czas AT ST ustawia maksymalny czas, jaki ma być dozwolony, nawet jeśli algorytm adaptacyjny ustali, że ta wartość powinna być większa. W większości przypadków lepiej pozostawić czas AT ST na wartości domyślnej i pozwolić algorytmowi synchronizacji adaptacyjnej ustalić, co zastosować jako limit czasu. Domyślnie timer ST jest ustawiony na 32 (co daje czas około 200 ms), ale to ustawienie domyślne można dostroić, zmieniając wartość PP 03. Zwróć uwagę, że wartość 00 nie spowoduje czasu 0 ms - przywróci ona timer do wartości domyślnej. Ponadto podczas wyszukiwania protokołu używany jest wewnętrznie ustalony minimalny czas - za pomocą AT ST można wybrać większy czas, ale nie mniejszy.
AT V0 and V1 Zmienna długość danych wył lub wł
Wiele protokołów CAN (na przykład ISO 15765-4) oczekuje wysyłania ośmiu bajtów danych. Polecenia V0 i V1 pozwalają zmienić to zachowanie (dla dowolnego protokołu CAN). Wybór V1 powoduje, że bieżący protokół CAN wysyła komunikaty o zmiennej długości, analogicznie do bitu 6 w PP 2C i PP 2E dla protokołów B i C. Wartość V0 (domyślnie) wyłącza wymuszone wysyłanie komunikatów o zmiennej długości, a format wraca do ustawień protokołu.

Polecenia ISO (9141 / 14230)

Polecenie Opis
AT FI wykonaj fast Initiation
W jednej z wersji protokołu Keyword do rozpoczęcia wymiany danych używana jest tak zwana sekwencja "fast Initiation". Zwykle sekwencja ta jest wykonywana, gdy trzeba wysłać pierwszą wiadomość, i bezpośrednio po niej wysyłana jest wiadomość. Niektóre ECU mogą jednak wymagać więcej czasu pomiędzy tymi dwiema czynnościami, a osobne polecenie inicjacji pozwala kontrolować ten czas. Wystarczy wysłać AT FI, odczekać chwilę, a następnie wysłać wiadomość. Być może trzeba będzie poeksperymentować, aby uzyskać odpowiednią wielkość opóźnienia.
Innym zastosowaniem tego polecenia może być wykonanie fast Initiation dla protokołu typu ISO 9141 (tj. 3 - format CARB). Wystarczy wykonać następujące kroki, aby utworzyć fast Initiation, a następnie przełączyć się na protokół 3: AT SP 5 AT FI AT SP 3 AT BI Po tym można komunikować się z ECU.
Należy pamiętać, że zamknięcie protokołu (tj. AT PC) w powyższym kodzie nie jest wymagane, ponieważ ELM327 wykonuje je automatycznie podczas przełączania protokołów. Aby użyć polecenia AT FI, musi być wybrany protokół 5, w przeciwnym razie wystąpi błąd.
AT KW wyświetl słowa kluczowe
Podczas inicjalizacji protokołów ISO 9141-2 i ISO 14230-4 do ELM327 przesyłane są dwa specjalne bajty (słowa kluczowe) (ich wartości służą do określenia, czy ELM327 może obsługiwać dany wariant protokołu). Jeśli chcesz poznać wartość tych bajtów, po prostu wyślij polecenie AT KW.
AT KW0 i KW1 Sprawdzanie słowa kluczowego wyłączone lub włączone
ELM327 szuka określonych bajtów (nazywanych słowami kluczowymi), które ECU powinno mu wysłać podczas inicjacji według ISO 9141-2 i ISO 14230-4. Jeśli bajty nie zostaną znalezione, uznaje się, że inicjacja się nie powiodła (i można zobaczyć komunikat 'UNABLE TO CONNECT' lub być może 'BUS INIT: ...ERROR'). Może się to zdarzyć, gdy próbujesz połączyć się z ECU niezgodnym z OBD lub być może ze starym ECU. Jeśli chcesz poeksperymentować z niestandardowymi systemami, być może trzeba będzie polecić ELM327 wykonanie sekwencji inicjacji, ale zignorowanie zawartości odebranych bajtów słowa kluczowego. W tym celu po prostu wyślij polecenie Key Words off:

>AT KW0


Po wyłączeniu sprawdzania słów kluczowych ELM327 nadal będzie wymagał dwóch bajtów słów kluczowych w odpowiedzi, ale nie będzie sprawdzał ich rzeczywistych wartości. Wyśle również potwierdzenie do ECU i będzie czekał na ostateczną odpowiedź od niego (ale nie zatrzyma się ani nie zgłosi błędu, jeśli jej nie otrzyma). Może to pozwolić na nawiązanie połączenia w innej "niemożliwej" sytuacji. Normalne zachowanie można przywrócić za pomocą AT KW1, które jest ustawieniem domyślnym.
AT SI wykonaj slow Initiation
Protokoły 3 i 4 używają tak zwanej 5-bodowej (lub wolnej) sekwencji inicjacji do rozpoczęcia wymiany danych. Zwykle sekwencja jest wykonywana podczas wysyłania pierwszej wiadomości, po czym wiadomość jest wysyłana od razu. Niektóre ECU mogą jednak wymagać więcej czasu pomiędzy tymi czynnościami, a osobne polecenie inicjacji pozwala kontrolować to opóźnienie. Wystarczy wysłać AT SI, odczekać chwilę, a następnie wysłać wiadomość. Być może trzeba będzie poeksperymentować z wielkością opóźnienia. Aby użyć polecenia AT SI, musi być wybrany protokół 3 lub 4, w przeciwnym razie wystąpi błąd.
AT SW hh Ustaw interwał Wakeup na hh
Po nawiązaniu połączenia niektóre protokoły wymagają okresowej wymiany danych co kilka sekund, aby ECU utrzymywało kanał komunikacyjny otwarty. Jeśli wiadomości nie nadchodzą, ECU uznaje, że zakończyłeś pracę, i zamyka kanał. ELM327 automatycznie generuje okresowe wiadomości w celu podtrzymania połączenia. Odpowiedzi na te wiadomości są ignorowane.
(Obecnie tylko protokoły 3, 4 i 5 obsługują te wiadomości — dla CAN nie przewidziano niczego.)
Interwał między wiadomościami Wakeup ustawia się z krokiem 20 ms poleceniem AT SW hh (hh — wartość hex od 00 do FF). Maksymalne opóźnienie ~5 sekund przy FF. Domyślnie (92) — nominalne opóźnienie 3 sekundy.
Wartość 00 zatrzymuje okresowe wiadomości. Po AT SW 00 można je przywrócić tylko poprzez zamknięcie i ponowną inicjalizację protokołu.
AT WM 1–6 bajtów
To polecenie pozwala nadpisać ustawienia wiadomości Wakeup (czasami nazywanych „okresowymi wiadomościami bezczynności”). Wystarczy podać wiadomość do wysłania (zwykle trzy bajty nagłówka i jeden–trzy bajty danych), a ELM327 doda sumę kontrolną i będzie je wysyłał zgodnie z ustawieniem AT SW. Wartości domyślne: 68 6A F1 01 00 dla ISO 9141 oraz C1 33 F1 3E dla KWP.

Polecenia J1939

Polecenie Opis
AT JE włącz format danych ELM dla J1939
Standard J1939 wymaga, aby zapytania PGN były wysyłane z odwróconą kolejnością bajtów względem standardowej kolejności „od lewej do prawej”. Na przykład dla zapytania o temperaturę silnika (PGN 00FEEE) bajty danych są faktycznie wysyłane w odwrotnej kolejności (EE FE 00), a ELM327 zwykle oczekuje, że dostarczysz dane właśnie w takiej kolejności.
Podczas eksperymentów ciągła konieczność odwracania bajtów może być myląca, dlatego zdefiniowano format ELM, który wykonuje odwrócenie za Ciebie. Gdy włączony jest format J1939 ELM (JE), wybrany jest protokół J1939 i dostarczasz trzy bajty danych, ELM327 zmieni ich kolejność przed wysłaniem do ECU. Dla zapytania o temperaturę silnika wysyłasz 00 FE EE (a nie EE FE 00). Format JE jest włączony domyślnie.
AT JHF0 and JHF1 Formatowanie nagłówków J1939 wył lub wł
Podczas drukowania odpowiedzi ELM327 zwykle formatuje bity J1939 ID (nagłówka) w taki sposób, aby wyizolować bity priorytetu, pogrupować wszystkie informacje PGN i oddzielić bajt adresu źródłowego. Jeśli wolisz widzieć informacje ID jako cztery oddzielne bajty (jak robi to większość programów J1939), po prostu wyłącz formatowanie poleceniem JHF0. Polecenie CAF0 ma ten sam efekt (i nadpisuje ustawienie JHF), ale wpływa również na inne formatowanie. Ustawienie domyślne to JHF1.
AT JS włącz format danych SAE dla J1939
Polecenie AT JS wyłącza automatyczne przestawianie bajtów, które wykonuje polecenie JE. Jeśli chcesz wysyłać bajty danych do pojazdu J1939 bez żadnej zmiany kolejności bajtów (tj. w kolejności podanej w dokumentach SAE), wybierz format JS. Na przykład wysyłając zapytanie o temperaturę silnika (PGN 00FEEE) w formacie JS, należy przesłać bajty jako EE FE 00 (jest to również znane jako kolejność bajtów little-endian). Format JS jest domyślnie wyłączony.
AT JTM1 ustaw mnożnik timera J1939 na 1
To polecenie ustawia mnożnik czasu AT ST na x1 dla protokołu SAE J1939. Począwszy od firmware v2.1 to polecenie po prostu wywołuje CTM1.
AT JTM5 ustaw mnożnik timera J1939 na 5
To polecenie ustawia mnożnik czasu AT ST na x5 dla protokołu SAE J1939. Począwszy od firmware v2.1 to polecenie po prostu wywołuje CTM5.
AT MP hhhh Monitorowanie PGN hhhh
Polecenia AT MA, MR i MT są bardzo przydatne do monitorowania określonego bajtu w nagłówku typowej wiadomości OBD. Jednak dla protokołu SAE J1939 często wymagane jest monitorowanie wielobajtowych numerów grup parametrów (PGN), które mogą znajdować się zarówno w nagłówku, jak i w bajtach danych. Polecenie MP to specjalne polecenie wyłącznie dla J1939, używane do śledzenia odpowiedzi na zapytanie o konkretny PGN.
Należy pamiętać, że to polecenie nie pozwala zdefiniować pierwszych dwóch cyfr PGN — zawsze przyjmuje się je równe 00. Na przykład PGN DM2 ma wartość 00FECB (patrz SAE J1939-73). Aby monitorować DM2, wyślij AT MP FECB.
To polecenie jest dostępne tylko po wybraniu protokołu CAN (A, B lub C) z formatowaniem SAE J1939. W innych warunkach zwracany jest błąd.
AT MP hhhh n Monitorowanie PGN, odbierz n wiadomości
To polecenie jest podobne do poprzedniego, ale dodaje możliwość zdefiniowania liczby wiadomości, która ma zostać odebrana, zanim ELM327 automatycznie zakończy monitorowanie i wyświetli znak zachęty. Wartość „n” to jedna cyfra szesnastkowa.
AT MP hhhhhh Monitorowanie PGN hhhhhh
To polecenie jest podobne do MP hhhh, ale rozszerza liczbę dostarczanych bajtów o jeden, zapewniając pełną kontrolę nad definicją PGN (nie przyjmuje założenia, że bit Data Page jest równy 0, jak polecenie MP hhhh). Pozwala to wykorzystać przyszłe rozszerzenia, jeśli zostaną zdefiniowane dodatkowe PGN z ustawionym bitem Data Page. Należy pamiętać, że w dodatkowym bajcie znaczący jest tylko bit Data Page — pozostałe bity są ignorowane.
AT MP hhhhhh n Monitorowanie PGN, odbierz n wiadomości
To polecenie jest podobne do poprzedniego, ale dodaje możliwość zdefiniowania liczby wiadomości, która ma zostać odebrana, zanim ELM327 automatycznie zakończy monitorowanie i wyświetli znak zachęty. Wartość „n” to jedna cyfra szesnastkowa.

Polecenia monitorowania

Polecenie Opis
AT MA Monitor All
To polecenie przełącza ELM327 w tryb monitorowania magistrali, w którym nieprzerwanie śledzi (i wyświetla) wszystkie wiadomości, które widzi na magistrali OBD. Jest to cichy monitor, który nie wysyła odpowiedzi w ramce dla systemów J1850, potwierdzeń dla systemów CAN (chyba że wyłączysz tryb cichy za pomocą CSM0) ani wiadomości Wakeup ("keep-alive") dla protokołów ISO 9141 i ISO 14230. Monitorowanie będzie kontynuowane do momentu, aż zatrzymasz je aktywnością na wejściu RS232 lub na wyprowadzeniu RTS. Aby zatrzymać monitorowanie, po prostu wyślij dowolny pojedynczy znak do ELM327, a następnie poczekaj na odpowiedź w postaci znaku zachęty ('>') lub niskiego poziomu na wyprowadzeniu Busy. (Ustawienie wejścia RTS na niski poziom również przerwie pracę urządzenia). Oczekiwanie na znak zachęty jest konieczne, ponieważ czas odpowiedzi zależy od tego, co układ robił w momencie przerwania. Jeśli na przykład znajdował się w trakcie drukowania linii, to najpierw ją dokończy, a następnie wydrukuje 'STOPPED', po czym wróci do stanu poleceń i wyśle znak zachęty. Gdyby po prostu czekał na dane wejściowe, wróciłby znacznie szybciej. Należy pamiętać, że znak zatrzymujący monitorowanie jest zawsze odrzucany i nie wpływa na kolejne polecenia.
Jeśli to polecenie jest używane z protokołami CAN i jeśli filtr i/lub maska CAN zostały wcześniej ustawione (za pomocą CF, CM lub CRA), to polecenie MA będzie zależeć od tych ustawień. Na przykład, jeśli dla adresu odbioru wcześniej ustawiono wartość CRA 4B0, to polecenie MA będzie mogło "zobaczyć" tylko wiadomości o identyfikatorze 4B0. Może to nie być dokładnie to, czego potrzebujesz - być może najpierw należy zresetować maski i filtry (za pomocą AR lub CRA).
Wszystkie polecenia monitorowania (MA, MR i MT) działają, zamykając bieżący protokół (wykonywane jest PC), zanim skonfigurują układ do monitorowania danych. Gdy zostanie przekazane następne polecenie OBD, protokół zostanie ponownie zainicjowany, o czym możesz zobaczyć komunikaty. Ponadto może pojawić się komunikat 'SEARCHING...', w zależności od tego, jakie zmiany zostały wprowadzone podczas monitorowania.
AT MR hh Monitorowanie według adresu odbiorcy hh
To polecenie jest podobne do AT MA, ale wyświetla tylko wiadomości wysłane na szesnastkowy adres hh. Są to wiadomości, w których wartość hh znajduje się w drugim bajcie standardowego trzybajtowego nagłówka OBD, w bitach 8–15 29-bitowego CAN ID lub w bitach 8–10 11-bitowego CAN ID. Monitorowanie jest przerywane dowolnym znakiem RS232, podobnie jak polecenie MA.
Należy pamiętać: jeśli to polecenie jest używane z protokołami CAN i wcześniej ustawiono filtr/maskę CAN (poleceniami CF, CM lub CRA), to polecenie MR nadpisze tylko odpowiednie bity — pozostałe pozostaną bez zmian. Być może należy najpierw zresetować maski i filtry (AT AR). Podobnie jak AT MA, to polecenie zaczyna się od wewnętrznego zamknięcia protokołu.
AT MT hh Monitorowanie według adresu nadawcy hh
To polecenie jest podobne do AT MA, ale wyświetla tylko wiadomości wysłane przez nadajnik o szesnastkowym adresie hh. Są to wiadomości, w których ta wartość znajduje się w trzecim bajcie standardowego trzybajtowego nagłówka OBD lub w bitach 0–7 CAN ID. Podobnie jak w trybach MA i MR, monitorowanie jest przerywane dowolnym znakiem RS232.
Należy pamiętać: jeśli wcześniej ustawiono filtr/maskę CAN, to polecenie MT nadpisze tylko odpowiednie bity. Być może należy najpierw zresetować maski i filtry (AT AR). Podobnie jak AT MA, to polecenie zaczyna się od wewnętrznego zamknięcia protokołu.

Polecenia adresowania

Polecenie Opis
AT AR Automatyczne ustawianie adresu odbioru
Odpowiedzi z pojazdu zostaną potwierdzone i wyświetlone na ekranie ELM327, jeśli wewnętrzny adres odbioru jest zgodny z adresem, na który wysyłana jest wiadomość. W trybie automatycznego odbioru wartość używana dla adresu odbioru zostanie wybrana na podstawie bieżących bajtów nagłówka i będzie automatycznie aktualizowana przy zmianie bajtów nagłówka. Wartość używana dla adresu odbioru zależy od takich parametrów, jak zawartość pierwszego bajtu nagłówka, a także od tego, czy w wiadomości używane jest adresowanie fizyczne, adresowanie funkcjonalne, czy też użytkownik zdefiniował wartość za pomocą poleceń SR lub RA. Automatyczny odbiór jest włączony domyślnie i nie jest używany przez protokół J1939.
AT RA hh ustaw adres odbioru na hh
W zależności od aplikacji użytkownicy mogą chcieć ręcznie ustawić adres, na który będzie odpowiadać ELM327. To polecenie wyłącza tryb AR i wymusza, aby układ przyjmował tylko odpowiedzi adresowane na hh. Należy zachować ostrożność przy tym ustawieniu — w zależności od wartości można przyjąć (i potwierdzić IFR) wiadomość przeznaczoną dla innego modułu. Aby wyłączyć filtrowanie RA, wyślij AT AR. To polecenie ma ograniczone zastosowanie z CAN, ponieważ śledzi tylko część bitów ID — polecenie CRA może być lepszym wyborem. Polecenie nie wpływa również na adresy J1939. Polecenie RA jest identyczne z SR i może być używane zamiennie. Rozszerzone adresowanie CAN używa wartości ustawionej poleceniem AT TA.
AT SR hh Ustaw adres odbioru na hh
W zależności od aplikacji użytkownicy mogą chcieć ręcznie ustawić adres, na który będzie odpowiadać ELM327. To polecenie wyłącza tryb AR i wymusza, aby układ przyjmował tylko odpowiedzi adresowane na hh. Należy zachować ostrożność przy tym ustawieniu — w zależności od wartości można przyjąć (i potwierdzić IFR) wiadomość przeznaczoną dla innego modułu. Aby wyłączyć filtrowanie RA, wyślij AT AR. To polecenie ma ograniczone zastosowanie z CAN, ponieważ śledzi tylko część bitów ID — polecenie CRA może być lepszym wyborem. Polecenie nie wpływa również na adresy J1939. Polecenie RA jest identyczne z SR i może być używane zamiennie. Rozszerzone adresowanie CAN używa wartości ustawionej poleceniem AT TA.
AT TA hh ustaw adres testera na hh
To polecenie służy do zmiany bieżącego adresu testera (przyrządu diagnostycznego), który jest używany w nagłówkach, okresowych wiadomościach, filtrach itd. ELM327 zwykle używa wartości z PP 06, ale polecenie TA pozwala tymczasowo ją nadpisać. AT TA wpływa na wszystkie protokoły, w tym J1939, co jest wygodne przy zmianie adresu J1939 z domyślnego F9. Chociaż polecenie może działać „w locie”, nie zaleca się zmiany adresu po aktywacji protokołu — wyniki mogą być nieprzewidywalne.

Parametry programowalne

Polecenie Opis
AT PP hh OFF wyłącz parametr programowalny hh OFF
To polecenie wyłącza parametr programowalny o numerze hh. Każda wartość przypisana za pomocą polecenia PP hh SV nie będzie już używana i ponownie obowiązywać będzie fabryczne ustawienie domyślne. Rzeczywisty czas wejścia w życie nowej wartości dla tego parametru jest określony przez jego typ. Bardziej szczegółowe informacje o typach znajdują się w rozdziale "Parametry programowalne" (str. 72). Należy pamiętać, że 'PP FF OFF' to specjalne polecenie, które wyłącza wszystkie parametry programowalne, tak jakby wprowadzono PP OFF dla każdego możliwego parametru. Niektóre parametry programowalne można zmienić w taki sposób, że komunikacja z ELM będzie utrudniona lub nawet niemożliwa. Brak możliwości komunikacji z ELM327. Jeśli tak się stało, istnieje sprzętowy sposób zresetowania wszystkich parametrów programowalnych naraz. Podłącz zworkę od wspólnego wyprowadzenia obwodu do wyprowadzenia 28, przytrzymując ją w tym położeniu podczas podawania zasilania do obwodu ELM327. Przytrzymaj ją w tym położeniu do momentu, aż zobaczysz, że dioda LED odbioru RS232 zaczyna migać (oznacza to, że wszystkie PP zostały wyłączone). W tym momencie zdejmij zworkę, aby umożliwić układowi normalny rozruch. Należy pamiętać, że reset PP następuje dość szybko - jeśli przytrzymasz zworkę dłużej niż kilka sekund i nie zobaczysz migania wskaźnika odbioru RS232, zdejmij zworkę i spróbuj ponownie, ponieważ może występować problem z połączeniem.
AT PP hh ON włącz parametr programowalny hh
To polecenie włącza parametr programowalny o numerze hh. Po włączeniu każda wartość przypisana za pomocą polecenia PP hh SV będzie używana tam, gdzie wcześniej obowiązywała fabryczna wartość domyślna. (Wszystkie wartości programowalne są fabrycznie ustawiane na wartości domyślne, dlatego włączenie parametru programowalnego przed przypisaniem mu wartości nie spowoduje problemów). Rzeczywisty czas wejścia w życie wartości tego parametru jest określony przez jego typ. Dodatkowe informacje o typach znajdują się w rozdziale "Parametry programowalne" (str. 72). Należy pamiętać, że 'PP FF ON' to specjalne polecenie, które włącza wszystkie parametry programowalne jednocześnie.
AT PP hh SV yy Param. prog. hh: Ustaw wartość yy
Za pomocą tego polecenia parametrowi programowalnemu przypisywana jest wartość. System nie będzie mógł użyć tej nowej wartości, dopóki parametr programowalny nie zostanie włączony za pomocą polecenia PP hh ON.
AT PPS Podsumowanie parametrów programowalnych
Za pomocą tego polecenia wyświetlany jest pełny zestaw bieżących parametrów programowalnych (nawet te, które nie zostały jeszcze zaimplementowane). Każdy z nich jest wyświetlany jako numer PP, po którym następuje dwukropek i przypisana mu wartość. Następnie pojawia się jedna cyfra - 'N' lub 'F', aby pokazać, że parametr jest włączony (ON) lub wyłączony (OFF), odpowiednio. Bardziej szczegółowy opis znajduje się w rozdziale "Parametry programowalne".

Kalibracja napięcia

Polecenie Opis
AT CV dddd Kalibracja napięcia do dd.dd V
Odczyt napięcia, który ELM327 pokazuje na zapytanie AT RV, można skalibrować za pomocą tego polecenia. Argument ('dddd') musi być zawsze podany w postaci 4 cyfr bez kropki dziesiętnej (zakłada się, że miejsce dziesiętne znajduje się między drugą a trzecią cyfrą). Aby skorzystać z tej funkcji, po prostu użyj dokładnego przyrządu pomiarowego do odczytu rzeczywistego napięcia wejściowego, a następnie użyj polecenia CV do zmiany wewnętrznego współczynnika kalibracji (skali). Na przykład, jeśli ELM327 pokazuje napięcie 12,2 V, a Ty mierzysz 11,99 V, wyślij AT CV 1199, a ELM327 skalibruje się dla tego napięcia (w rzeczywistości odczyta 12,0 V z powodu zaokrąglenia cyfr). Dodatkowe informacje o tym, jak odczytywać napięcie i wykonywać kalibrację, znajdują się na str. 31.
AT CV 0000 przywrócenie fabrycznej wartości kalibracji
Jeśli eksperymentujesz z poleceniem CV dddd, ale nie masz dokładnego woltomierza jako wzorca, to wkrótce mogą pojawić się problemy. W takim przypadku zawsze możesz wysłać AT CV 0000, aby przywrócić fabryczne wartości kalibracji ELM327.

Programmable Parameters Summary

The following pages provide a list of the currently available Programmable Parameters. The value shown in the ‘Type’ column indicates when any changes take effect. Possible values are: - I - the effect is Immediate, - D - takes effect after Defaults are restored (AT D, AT Z, AT WS, MCLR or power off/on) - R - takes effect after a Reset (AT Z, AT WS, MCLR or power off/on) - P - needs a Power off/on type reset (AT Z, MCLR, or power off/on)

Type: I — Immediate, D — after Defaults (AT D, AT Z, AT WS), R — after Reset (AT Z, AT WS), P — after Power off/on (AT Z)

PP Opis Wartości Domyślnie Typ
00 Wykonaj AT MA po włączeniu zasilania lub resecie 00 = ON; FF = OFF FF(OFF) R
01 Drukowanie bajtów nagłówka (domyślne ustawienie AT H) 00 = ON; FF = OFF FF(OFF) D
02 Zezwól na długie komunikaty (domyślne ustawienie AT AL) 00 = ON; FF = OFF FF(OFF) D
03 Czas limitu NO DATA (domyślne ustawienie AT ST) 00 to FF 32(205 msec) D
04 Domyślny tryb synchronizacji adaptacyjnej (ustawienie AT AT) 00 to 02 01 D
06 Domyślny adres testera (Source Address) 00 to FF F1 R
07 Ostatni protokół do próby podczas automatycznego wyszukiwania 01 to 0C 09 I
09 Echo znaków (domyślne ustawienie AT E) 00 = ON; FF = OFF 00 (ON) R
0A Znak przejścia do nowej linii (line feed) 00 to 20 0A R
0C RS232 baud rate divisor when pin 6 is high (logic 1) P baud rate (in kbps) = 4000 ÷ (PP 0C value) For example, 500 kbps requires a setting of 08 (since 4000/8 = 500) Here are some example baud rates, and the divisor to be used:
Baud Rate(kbps)PP 0C value (hex)
19.2D0
38.457.6
19.245
115.223
230.411
50008

Notes:
- 1. The PP 0C value must be provided as hex digits only. The decimal values (listed above in brackets) are only shown for your convenience.
- 2. The ELM327 can only process continuous byte receives at rates of about 600 kbps maximum. If you need to connect at a higher rate, add a delay between the bytes to maintain an average rate of 600 kbps or less.
- 3. A value of 00 provides a baud rate of 9600 bps.
00 to FF 68 (38,4) P
0D Znak powrotu karetki (carriage return) 00 to 20 0D R
0E Power Control options Each bit controls an option, as follows:
b7: Master enable 0: off 1: on if 0, pins 15 and 16 perform as described for v1.0 to v1.3a (must be 1 to allow any Low Power functions)
b6: Pin 16 full power level 0: low 1: high normal output level, is inverted when in low power mode
b5: Auto LP control (0: disabled 1: enabled) allows low power mode if the RS232 activity stops
b4: Auto LP timeout 0: 5 mins 1: 20 mins no RS232 activity timeout setting
b3: Auto LP warning (0: disabled 1: enabled) if enabled, says ‘ACT ALERT’ 1 minute before RS232 timeout
b2: Ignition control (0: disabled 1: enabled) allows low power mode if the IgnMon input goes low

b1: Ignition delay 0: 1 sec 1: 5 sec delay after IgnMon (pin 15) returns to a high level, before normal operation resumes
b0: reserved for future - leave set at 0
00 to FF 9A R
0F Activity Monitor options.
Each bit controls an option, as follows:
b7: monitor master control (0: disabled 1: enabled) must be 1 to allow b3 to b6
b6: allow wake from Low Power (0: no 1: yes) wakes on shift from no activity to activity
b5: Auto LP control (0: disabled 1: enabled) allows low power mode if the OBD activity stops
b4: Auto LP timeout 0: 30 secs 1: 150 secs no OBD activity timeout setting
b3: Auto LP warning (0: disabled 1: enabled) if enabled, says ‘ACT ALERT’ on timeout
b2: reserved for future - leave set at 1
b1: add exclamation mark (0: no 1: yes). if 1, sends ‘!’ before ACT ALERT and LP ALERT
b0: LP LED (0: disabled 1: enabled). if 1, the OBD Tx LED flashes when in Low Power mode (one 16 msec flash repeated every 4 seconds)
00 to FF D5 D
10 Czas ustalania napięcia J1850 (ms) = (PP 10) × 4,096 00 to FF 0D R
11 Monitorowanie sygnału Break J1850 (zgłasza BUS ERROR po przekroczeniu limitów) 00 = ON; FF = OFF 00 (ON) D
12 J1850 Volts (pin 3) output polarity
normal = Low output for 5V, High output for 8V
invert = High output for 5V, Low output for 8V
00 = invert R; FF = normal FF (normal) R
13 Time delay added between protocols 1 & 2 during a search setting (in msec) = 150 + (PP 13 value) x 4.096 00 = ON; FF = OFF 55 (498 msec) I
14 ISO/KWP final stop bit width (provides P4 interbyte time) setting (in µsec) = 98 + (PP 14 value) x 64 00 to FF 50 (5.2 msec) D
15 ISO/KWP maximum inter-byte time (P1), and also used for the minimum inter-message time (P2). setting (in msec) = (PP 15 value) x 2.112 00 to FF 0A D
16 Default ISO/KWP baud rate (AT IB default setting)
Note:
4800, 12500, and 15625 baud can not be set as defaults
00 = 96;FF = 10 FF(10.4K) R
17 ISO/KWP wakeup message rate (AT SW default setting) setting (in msec) = (PP 17 value) x 20.48 00 to FF 92(3.0 sec) D
18 ISO/KWP delay before a fast init, if a slow init has taken place setting (in msec) = 1000 + (PP 18 value) x 20.48 00 to FF 31(2.0 sec) I
19 ISO/KWP delay before a slow init, if a fast init has taken place setting (in msec) = 1000 + (PP 19 value) x 20.48 If you are having trouble connecting, increasing this time to 5 seconds (C3) may help. 00 to FF 4F (2.6 sec) I
1A Protocol 5 fast initiation active time (TiniL) setting (in msec) = (PP 1A value) x 2.5 00 to FF 0A(25 msec) D
1B Protocol 5 fast initiation passive time (TiniH) setting (in msec) = (PP 1B value) x 2.5 00 to FF 0A(25 msec) D
1C ISO/KWP outputs used for initiation (b7 to b2 are not used)
b1: L line (pin 22) 0: disabled 1: enabled
b0: K line (pin 21) 0: disabled 1: enabled
If disabled, an output will remain low during protocol initiations
00 to FF 03 D
1D ISO/KWP P3 time (delay before sending requests) Ave time (in msec) = (PP 1D value - 0.5) x 4.096 00 to FF 0F D
1E ISO/KWP K line minimum quiet time before an init can begin (W5) setting (in msec) = (PP 1E value) x 4.096 00 to FF 4A(303 msec) D
1F KWP byte count includes the checksum byte? FF = NO;00 = YES FF(NO) R
20 ISO/KWP 5 baud initiation W1 timer start point
The minimum time, measured from the beginning of the Address byte stop bit before the Sync byte may appear.
T = (PP 20 value) x 1.984 msec
Note that the standards define a range for this value from 260 msec to 500 msec.
00 to FF 5D(185 msec) R
21 Domyślne ustawienie cichego monitorowania CAN (AT CSM) FF = ON; 00 = OFF FF(ON) R
24 Automatyczne formatowanie CAN (domyślne ustawienie AT CAF) 00 = ON; FF = OFF 00(ON) D
25 Automatyczne sterowanie przepływem CAN (domyślne ustawienie AT CFC) 00 = ON; FF = OFF 00(ON) D
26 Bajt wypełniający CAN (używany do uzupełniania komunikatów CAN do 8 bajtów) 00 to FF 00 D
28 CAN Filter settings (controls CAN sends while searching)
The bits of this byte control options, as follows:
b7: 500 kbps match 0: ignored 1: required
b6: 250 kbps match 0: ignored 1: required
b5 to b1: reserved for future - leave set to 1
b0: send if bus is quiet 0: not allowed 1: allowed
00 to FF FF D
29 Drukowanie długości danych CAN (DLC) przy wyświetlaniu nagłówków (domyślne ustawienie AT D0/D1) 00 = ON; FF = OFF FF(OFF) D
2A CAN Error Checking (applies to protocols 6 to C).
Each bit of this byte controls an option, as follows:
b7: ISO15765 Data Length 0: accept any 1: must be 8 bytes
b6: ISO15765 PCI = 00 0: allowed 1: not allowed
b5: Search after ERR94 0: normal 1: CAN is blocked
b4: Search after LV RESET 0: normal 1: CAN is blocked
b3: Wiring Test 0: bypass 1: perform
Processing 7F xx 78’s:
b2: enabled (CAN & KWP) 0: no 1: yes
b1: valid Modes (xx values) 0: all 1: only 00 to 0F
b0: valid CAN protocols 0: all 1: only ISO15765
00 to FF 3C D
2B Protocol A (SAE J1939) CAN baud rate divisor baud rate (in kbps) = 500 ÷ (PP 2B value). For example, setting this PP to 19 (ie. decimal 25) provides a baud rate of 500/25 = 20 kbps. 01 to 40 02(250 Kbps) R
2C Protocol B (USER1) CAN options.
Each bit of this byte controls an option, as follows:
b7: Transmit ID Length 0: 29 bit ID 1: 11 bit ID
b6: Data Length 0: fixed 8 byte 1: variable DLC
b5: Receive ID Length 0: as set by b7 1: both 11 and 29 bit
b4: baud rate multiplier 0: x1 1: x 8/7 (see note 3)
b3: reserved for future - leave set at 0.
b2, b1, and b0 determine the data formatting options:
b2 b1 b0 Data Format
0 0 0 none
0 0 1 ISO 15765-4
0 1 0 SAE J1939
Other combinations are reserved for future updates – results will be unpredictable if you should select one of them.
00 to FF E0 R
2D Protocol B (USER1) baud rate divisor baud rate (in kbps) = 500 ÷ (PP 2D value). For example, setting this PP to 0A (ie. decimal 10) provides a baud rate of 500/10 = 50 kbps. 01 to 40 04(125 Kbps) R
2E Protocol C (USER2) CAN options.
Each bit of this byte controls an option, as follows:
b7: Transmit ID Length 0: 29 bit ID 1: 11 bit ID
b6: Data Length 0: fixed 8 byte 1: variable DLC
b5: Receive ID Length 0: as set by b7 1: both 11 and 29 bit
b4: baud rate multiplier 0: x1 1: x 8/7 (see note 3)
b3: reserved for future - leave set at 0.
b2, b1, and b0 determine the data formatting options:
b2 b1 b0 Data Format
0 0 0 none
0 0 1 ISO 15765-4
0 1 0 SAE J1939
Other combinations are reserved for future updates – results will be unpredictable if you should select one of them.
00 to FF 80 R
2F Protocol C (USER2) baud rate divisor. baud rate (in kbps) = 500 ÷ (PP 2B value) For example, setting this PP to 19 (ie. decimal 25) provides a baud rate of 500/25 = 20 kbps. 01 to 40 0A(50 Kbps) R

Rozszerzenie DoIP (ScanDoc)

Adapter ScanDoc rozszerza protokół ELM327 o obsługę DoIP (Diagnostics over Internet Protocol, ISO 13400). Umożliwia to wykonywanie diagnostyki Ethernet nowoczesnych samochodów za pomocą znanego interfejsu poleceń AT ELM327.

Szczegółowy opis protokołu DoIP (ISO 13400) →


Rozszerzenie BMW HSFZ (ScanDoc)

Adapter ScanDoc rozszerza protokół ELM327 o obsługę BMW HSFZ (High Speed Fahrzeug Zugang). Jest to zastrzeżony protokół BMW do diagnostyki Ethernet, wykorzystujący 1-bajtowe adresowanie i uproszczony format ramek bez Routing Activation.

Szczegółowy opis protokołu BMW HSFZ →


Przykłady poleceń OBD

W trybie normalnym (bez prefiksu AT) polecenia są wysyłane bezpośrednio do samochodu. Polecenia zapisuje się bajtami szesnastkowymi:

Polecenie Opis
01 00Zapytanie o obsługiwane PID (Mode 01)
01 0COdczyt obrotów silnika
01 0DOdczyt prędkości samochodu
03Odczyt zapisanych kodów błędów (Mode 03)
04Kasowanie kodów błędów (Mode 04)
09 02Odczyt numeru VIN (Mode 09)