-
WEcabin Designer #3 - Projektowanie interfejsu operatorskiego 07/02/2026 15:05:00WEcabin Designer #4 - Konfiguracja wejść i wyjść cyfrowych 07/03/2026 12:00:00WEcabin Designer #2 - Magistrala CAN i tagi 07/01/2026 13:20:00WEcabin Designer #1 - Wstęp do środowiska 07/01/2026 11:40:00
Potrzebujesz pomocy?
Ostatnie artykuły
-
WEcabin Designer #3 - Projektowanie interfejsu operatorskiego 07/02/2026 15:05:00WEcabin Designer #4 - Konfiguracja wejść i wyjść cyfrowych 07/03/2026 12:00:00WEcabin Designer #2 - Magistrala CAN i tagi 07/01/2026 13:20:00WEcabin Designer #1 - Wstęp do środowiska 07/01/2026 11:40:00WEcabin Designer #2 - Magistrala CAN i tagiAutor Adrian Godlewski 07/01/2026 13:20:00
Magistrala CAN i tagi w WEcabin Designer
Tagi są jednym z najważniejszych elementów całego projektu w WEcabin Designer. To właśnie za ich pomocą panel HMI komunikuje się z elektroniką pojazdu. Prawie każdy widget umieszczony na ekranie korzysta z jednego lub kilku tagów.
Definicja: Tag jest nazwą przypisaną do konkretnego sygnału lub wartości przesyłanej pomiędzy panelem a modułem zewnętrznym.
Transmisja ta w większości motoryzacyjnych przypadków jest realizowana poprzez magistralę CAN. CAN to standard komunikacyjny stosowany głównie w pojazdach, umożliwiający mikrokontrolerom i komputerom pokładowym wymianę wielu danych za pomocą dwóch przewodów: CAN high oraz CAN low.
Każde urządzenie podłączone do magistrali wysyła lub odbiera wiadomości zwane ramkami CAN. Zawierają one identyfikator oraz dane reprezentujące np. prędkość pojazdu, poziom paliwa, temperatury płynów czy ciśnienie oleju.
-
Ramka (FRAME): Reprezentuje całą wiadomość CAN odebraną z magistrali.
-
Zmienna (VAR): Reprezentuje pojedynczą wartość znajdującą się wewnątrz tej wiadomości. Jedna ramka może zawierać wiele zmiennych.
Panel HMI odbiera te wiadomości, dzięki uprzedniej konfiguracji przypisuje je do tagów i prezentuje w formie graficznej. Może również wysyłać informacje sterujące, takie jak wciśnięcie przycisku na ekranie czy ustawienie konkretnej wartości.

Konfiguracja protokołu komunikacji i tworzenie tagów
Aby utworzyć nowy tag, należy najpierw dodać protokół komunikacji. W tym celu przechodzimy na stronę Configuration → Protocols, a następnie klikamy ikonę „+”.

Z listy wybieramy opcję CAN Direct. W porównaniu do standardu CANopen HMI, wymaga ona indywidualnej konfiguracji każdej ramki, ale w zamian daje całkowitą swobodę i nie potrzebuje wyboru konkretnego sterownika PLC.

W kolejnym kroku należy wybrać konkretny port CAN oraz szybkość transmisji, która musi być identyczna dla obu komunikujących się ze sobą urządzeń.
Po utworzeniu protokołu, tworzenie nowych tagów odbywa się w ścieżce Configuration → Tags w drzewie projektu.

Aby poprawnie utworzyć i skonfigurować nowy tag, należy najpierw zdefiniować ramkę CAN. W jednej ramce CAN może znajdować się jeden sygnał lub wiele sygnałów, z których każdy definiuje się jako osobną zmienną (VAR). W praktyce używa się wielu ramek, ponieważ jednostka sterująca zbiera informacje z wielu modułów pojazdu oraz z różną częstotliwością.
Definicja ramki (FRAME) — Parametry

Parametr
Opis
1. Type
Określa, czy definiowany jest obiekt typu FRAME (cała ramka CAN), czy VAR (pojedyncza zmienna znajdująca się w ramce).
2. Datatype
Rodzaj danych definiujących ramkę –
unsignedBytelubunsignedInt[].3. CAN frame ID
Identyfikator ramki CAN zapisywany w formie dziesiętnej lub szesnastkowej. Dzięki niemu odbiornik wie, czy dane dotyczą silnika, hydrauliki, oświetlenia czy innego modułu. Musi być zgodny z konfiguracją urządzenia wysyłającego dane.
4. Frame Length
Określa wielkość ramki w bajtach (domyślnie wynosi 8).
5. Mux Info
Jeśli ramka jest multipleksowana (zawiera dane zmieniające znaczenie w zależności od wartości MUX). Bity 0-15 określają pozycję multipleksera w ramce, bity 16-21 rozmiar w bitach (1-63), a bit 22 definiuje typ big-endian. Domyślnie parametr wynosi 0 (brak multipleksowania).
6. Frame MODE
Określa kierunek przesyłu danych:
RX(odbierana),TXall(wysyłana po nadpisaniu wszystkich zmiennych),TXany(wysyłana po nadpisaniu jakiejkolwiek zmiennej),TXperiod(wysyłana okresowo).7. Time
Dla ramki RX – częstotliwość [ms] sprawdzania (odbioru) danych; dla TX – częstotliwość [ms] wysyłania ramki.
Definicja zmiennej (VAR) — Parametry

Parametr
Opis
1. Datatype
Typ zmiennej, np.
boolean,short,int,unsignedInt,float,stringitp.2. Conversion
Opcja służąca do konwersji danych, np. zamiana kolejności pół bajtów (AB→BA – swapnibbles), zamiana kolejności bajtów (ABCD→CDAB – swap2) lub negacja.
3. CAN frame ID
Identyfikator ramki, do której ma być przypisana definiowana zmienna.
4. Mux Val
Określa, dla jakiej wartości MUX dana zmienna jest przesyłana (w przypadku ramek multipleksowanych).
5. Start in frame
Określa, od którego bitu w ramce zaczyna się wartość definiowanej zmiennej. Przykładowo dla ramki 8-bajtowej:
[Bajt0] [Bajt1] [Bajt2] ... [Bajt7]:-
Wartość temperatury (Bajty 0-1) → Start in frame = 0 (pierwszy bit bajtu 0).
-
Wartość ciśnienia (Bajty 2-3) → Start in frame = 16 (pierwszy bit bajtu 2).

6. Bit size of field
Wielkość zmiennej w bitach. Zależy od wybranego typu (np.
boolean– 1 bit,short signed integer– 8 bitów,double integer– 32 bity).7. Flags
Bit 0 określa, czy zmienna jest multipleksowana; bit 1 określa, czy zmienna jest typu big-endian.
Endianowość (Big Endian i Little Endian)
Podczas przesyłania danych składających się z więcej niż jednego bajtu (np. liczb 16-bitowych lub 32-bitowych) kluczowa jest kolejność, w jakiej bajty są zapisane w ramce CAN. Sposób ten nazywany jest endianowością.
-
Big Endian: Najbardziej znaczący bajt (MSB) znajduje się na początku.
Przykład dla liczby 0x1234: Bajt0 = 0x12, Bajt1 = 0x34. Odczytana wartość wynosi 0x1234.
-
Little Endian: Najmniej znaczący bajt (LSB) znajduje się na początku.
Przykład dla liczby 0x1234: Bajt0 = 0x34, Bajt1 = 0x12. Odczytana wartość wynosi 0x1234.
W obu przypadkach wynik końcowy jest identyczny tylko wtedy, gdy odbiornik dokładnie zna zastosowany sposób zapisu danych.
Przykład praktyczny: Odbiór temperatury oleju oraz ciśnienia w jednej ramce
Aby odebrać te dwie informacje (założenie: obie to 16-bitowe zmienne typu
unsignedInt) w ramach jednej wiadomości:1. Definiujemy ramkę (FRAME):
-
-
Ustawiamy typ jako
FRAME, Datatype naunsignedInt[]z wielkością tablicy (Arraysize) równą 8, Frame Length - 8 oraz ID ramki np.0x100.
-

2. Tworzymy zmienne (VAR) przypisane do tej ramki:
-
-
temperatura_oleju: Typ danych
unsignedInt, wielkość bitowa (Bit size of field) = 16, parametr Start in frame = 0. -
cisnienie_oleju: Typ danych
unsignedInt, wielkość bitowa = 16. W tym przypadku parametr Start in frame ustawiamy na 16, ponieważ poprzednia zmienna zajęła już bity od 0 do 15.
-

Podsumowanie
Konfiguracja komunikacji CAN w środowisku WEcabin Designer opiera się na trzech kluczowych krokach:
-
Konfiguracja protokołu komunikacyjnego.
-
Zdefiniowanie ramek CAN (FRAME).
-
Utworzenie zmiennych (VAR) wskazujących konkretne dane znajdujące się wewnątrz tych ramek.
Tak przygotowane zmienne mogą być bezpośrednio przypisywane do widgetów graficznych, systemów alarmowych oraz logiki całej aplikacji. Dzięki temu panel HMI jest w stanie nie tylko wyświetlać bieżący stan pojazdu, ale też wysyłać polecenia sterujące do innych kontrolerów w sieci CAN.
Poprzednia część kursu - WEcabin Designer #1
Następna część kursu - WEcabin Designer #3