Implementacja kompleksowego urządzenia zabezpieczającego silnik z wykorzystaniem komunikacji szeregowej RS-485 i protokołu Modbus

Jan 04, 2026 Zostaw wiadomość

1 Wprowadzenie

 

Mikrokontrolery są coraz częściej stosowane w zautomatyzowanych urządzeniach sterujących, opartych na mikroprocesorach-zintegrowanych systemach zabezpieczeń sieci elektroenergetycznych i innych obszarach sterowania automatyką przemysłową, przy czym złożoność tych urządzeń stale rośnie. Aby sprostać-wielozadaniowym-wymaganiom celów programistycznych w czasie rzeczywistym, model z jednym-procesorem i jednym-programistą zostaje zastąpiony podejściem opartym na współpracy, obejmującym wiele procesorów różnych typów i wielu programistów. Ten nowy paradygmat rozwoju wprowadza krytyczne wyzwanie: standaryzację sprzętu i oprogramowania do wymiany informacji między procesorami podczas wdrażania. Ta standaryzacja ma kluczowe znaczenie dla pomyślnego przyjęcia nowego modelu. Wśród wielu metod komunikacji powszechnie stosowany jest protokół komunikacji szeregowej RS-485 oparty na UART-ze względu na proste okablowanie, wysoką niezawodność i możliwość obsługi wielu procesorów. Jeśli chodzi o protokoły komunikacji oprogramowania, protokół Modbus oferuje użytkownikom znaczne korzyści ze względu na jego uniwersalny charakter i dojrzałe oprogramowanie do debugowania. Dlatego podczas opracowywania nowego kompleksowego urządzenia zabezpieczającego silnik przyjęto metodę komunikacji szeregowej RS-485 i protokół komunikacyjny Modbus, aby zapewnić wymianę danych i informacji o poleceniach sterujących pomiędzy wieloma procesorami. Aby zwiększyć efektywność i koordynację komunikacji szeregowej, autor wdrożył liczne środki w architekturze sprzętowej i programowej mechanizmu komunikacji, uzyskując doskonałe rezultaty. Podczas fazy debugowania komunikacji systemowej zastosowano metodę, w której każdy moduł procesora najpierw skomunikował się ze standardowym oprogramowaniem testowym Modbus, a następnie przeszedł debugowanie wzajemnych połączeń, co znacznie poprawiło efektywność wspólnego rozwoju. Praktyka udowodniła, że ​​taka filozofia projektowania upraszcza strukturę systemu, jednocześnie znacznie zwiększając wydajność operacyjną i niezawodność urządzenia.


2 Cechy kompleksowego urządzenia zabezpieczającego silnik


Oprócz kompleksowych funkcji ochronnych, urządzenie zabezpieczające silnik integruje możliwości pomiarowe, telekontrolę i komunikację. Duży-ekran LCD z chińskimi znakami zapewnia-przyjazny interfejs użytkownika. Wykorzystując komunikację magistrali CAN z hostem monitorującym, tworzy podsystem w ramach hierarchicznego, rozproszonego systemu automatyki podstacji. Aby zoptymalizować funkcjonalność systemu pod kątem wymagań-wielozadaniowości, przyjęto architekturę wielo-procesorową. Jeden procesor obsługuje okresowe próbkowanie i transmisję impulsów; główny moduł CPU zarządza przetwarzaniem danych, obliczaniem parametrów elektrycznych, diagnostyką usterek i operacjami przełączania; podczas gdy procesor modułu płytki nadzoruje interakcję-człowieka z maszyną i ułatwia komunikację z głównym modułem zabezpieczającym i hostem monitorującym. Każdy moduł procesora ma jasno określone zadania, ułatwiając wspólny rozwój wielu inżynierów podczas wdrażania. Komunikacja szeregowa łączy główny procesor z procesorem panelu, umożliwiając interakcję człowiek-maszyna, a tym samym zajmowanie krytycznej pozycji. Ustanowienie racjonalnego mechanizmu komunikacji jest podstawą sekcji komunikacji szeregowej, określając koordynację komunikacji i skuteczność debugowania na późniejszych etapach rozwoju systemu.


3 Wprowadzenie do mechanizmów komunikacji

 

3.1 Projekt sprzętowy mechanizmu komunikacyjnego

Mechanizm komunikacji zaproponowany dla tego systemu ma na celu wysoką wydajność i niezawodność. RS-485 wykorzystuje strukturę pół-dupleksu, która w zastosowaniach terenowych jest często bardziej praktyczna niż pełny dupleks. Przyjęto tutaj uproszczone połączenie wykorzystujące tylko dwie linie sygnałowe. Schemat obwodu interfejsu systemowego pokazano na rysunku 1. Poziomy logiczne TTL wysyłane przez mikrokontroler 8051 na głównym module zabezpieczającym są izolowane optycznie, a następnie konwertowane na poziomy RS-495 przez układ MAX485. Następnie układ MAX485 w module panelu konwertuje je z powrotem na poziomy logiczne TTL do odczytu przez mikrokontroler 8031. Po stronie mikrokontrolera 8051 pin P2.7 równoległego portu we/wy 2 steruje pinem włączającym wejście MAX RE i pinem włączającym wyjście DE. Jak pokazano na rysunku 1, gdy P2.7 generuje wysoki poziom, RE jest włączone, umożliwiając stronie mikrokontrolera odbieranie danych. Gdy P2.7 generuje niski poziom, DE jest włączone, umożliwiając stronie mikrokontrolera przesyłanie danych. Takie podejście zapobiega utracie danych w wyniku nakładania się danych spowodowanego ślepą transmisją, zapewniając wysoką jakość komunikacji i niezawodną prędkość transmisji.

采用RS-485串行通信和Modbus通信协议实现电动机综合保护装置的设计

 

3.2 Protokół komunikacyjny

 

Aby zapewnić dokładną transmisję danych między dwoma modułami w urządzeniu zabezpieczającym, niezbędny jest zestaw specyfikacji regulujących przesyłanie informacji,-w tym tryby transmisji, formaty danych i treść-. Stanowi to protokół lub protokół komunikacyjny. Bez łatwo dostępnego, dojrzałego oprogramowania do debugowania główny moduł procesora działa zasadniczo jak czarna skrzynka, co prowadzi do licznych i trudnych--przezwyciężeń wyzwań podczas testowania integracji systemu. Dlatego też wybrano powszechnie przyjęty protokół komunikacyjny Modbus i uproszczono go tak, aby odpowiadał specyficznym wymaganiom urządzenia, umożliwiając skuteczną komunikację między-modułami ze sprawdzoną skutecznością. Modbus wykorzystuje model komunikacji typu master-slave. Urządzenie nadrzędne najpierw wysyła polecenie żądania komunikacji do urządzenia podrzędnego. Następnie urządzenie podrzędne odpowiada urządzeniu nadrzędnemu danymi w oparciu o kod funkcji zawarty w poleceniu żądania. Każdy niewolnik posiada unikalny adres. Zarówno ramki żądań wysyłane przez urządzenie nadrzędne, jak i ramki odpowiedzi wysyłane przez urządzenie podrzędne zaczynają się od adresu urządzenia podrzędnego. Urządzenia podrzędne czytają tylko polecenia skierowane do siebie i ignorują wiadomości zaczynające się od innych adresów urządzeń podrzędnych. Ta funkcja jest realizowana przy użyciu trybu 2 lub trybu 3 portu szeregowego 8051. Ten model komunikacji typu pytania-i-odpowiedzi znacznie zwiększa dokładność komunikacji. W tym urządzeniu przyjęto tryb transmisji RTU Modbus.


4 środki zwiększające niezawodność komunikacji


Ostatnie dwa bajty komunikatu Modbus służą jako bajty sumy kontrolnej. Komunikacja RTU wykorzystuje cykliczną kontrolę redundancji CRC-16 w celu wykrywania błędów. Mechanizm kodowania/dekodowania jest stosunkowo prosty i charakteryzuje się niskim poziomem błędów, który można osiągnąć metodami obliczeniowymi lub programistycznymi. Poniżej opisano kilka podejść:


4.1 Algorytm podstawowy (obliczenia ręczne)


Używając przykładu CRC16-CCITT: suma kontrolna CRC wynosi 16 bitów, a wielomian generujący wynosi 17 bitów. Załóżmy, że strumień danych ma 4 bajty: BYTE, BYTE, BYTE, BYTE[0];


Przesuń strumień danych w lewo o 16 bitów, skutecznie rozszerzając go o współczynnik 256×256. Następnie wykonaj dzielenie przez wielomian generujący 0x11021, używając dzielenia innego niż-pożyczania (równoważnego bitowemu XOR). Wynikowa reszta to suma kontrolna CRC. Przesyłany strumień danych składa się z 6 bajtów: BYTE, BYTE, BYTE, BYTE[0], CRC, CRC[0].


4.2 Algorytm komputerowy 1 (algorytm typu bitowego-)


1) Umieść górne 16 bitów (BYTE, BYTE) rozszerzonego strumienia danych (6 bajtów) w 16-bitowym rejestrze;

2) Jeżeli najbardziej znaczącym bitem rejestru jest 1, należy przesunąć rejestr w lewo o jeden bit (otrzymując najmniej znaczący bit z kolejnego bajtu), a następnie wykonać operację XOR z uproszczoną postacią wielomianu generatora; w przeciwnym razie po prostu przesuń rejestr w lewo o jeden bit (uzyskując najmniej znaczący bit z następnego bajtu);

3) Powtarzaj krok 2, aż cały strumień danych (6 bajtów) zostanie przesunięty do rejestru;

4) Wartością w rejestrze jest suma kontrolna CRC CRC, CRC[0].

 

4.3 Algorytm komputerowy 2 (algorytm typu-bajtów) (256^n oznacza 256 podniesione do potęgi n)

 

Przedstaw strumień danych uporządkowany-bajtowo jako wielomian matematyczny. Niech strumień danych będzie BYTE[n] BYTE[n-1] BYTE[n-2] ... BYTE[0] jest reprezentowany jako wyrażenie matematyczne

BYTE[n] × 256^n + BYTE[n-1] × 256^(n-1) + ... + BYTE × 256 + BYTE[0], gdzie „+” oznacza operację XOR. Niech wielomianem generatora będzie G17 (17-bitowy), wówczas kodem CRC będzie CRC16.

CRC16=(BAJT[n] × 256^n + BYTE[n-1] × 256^(n-1) + ... + BYTE × 256 + BYTE[0]) × 256^2 / G17

Polega to na przesunięciu strumienia danych w lewo o 16 bitów, a następnie podzieleniu przez wielomian generujący G17.

Wyprowadzenie pokazuje, że kod kontrolny CRC dla BYTE[n-1] jest równy wynikowi XOR górnych 8 bitów kodu kontrolnego CRC poprzedniego bajtu Y[n] (YH8[n]) i bieżącego bajtu BYTE[n-1].


Algorytm typu-byte jest następujący:


1) Zainicjuj grupę rejestrów CRC na „0” (0x0000).

2) Przesuń grupę rejestrów CRC o 8 bitów w lewo i zapisz ją w grupie rejestrów CRC.

3) Wykonaj operację XOR pomiędzy 8 najwyższymi bitami oryginalnej grupy rejestrów CRC (przesuniętymi o 8 bitów w prawo) a bajtem danych, aby uzyskać indeks wskazujący tabelę wartości.

4) Wykonaj operację XOR pomiędzy wartością tablicy wskazywaną przez indeks a grupą rejestrów CRC.

5) Zwiększ wskaźnik danych. Jeśli przetwarzanie danych nie zostało zakończone, powtórz krok 2).

6) Uzyskaj CRC.

 

5 środków poprawiających efektywność komunikacji

 

5.1 Oddzielne zadania odbioru i transmisji komunikacji


Mikrokontroler 8051 może przesyłać i odbierać dane przez port szeregowy za pomocą przerwań. Kontroler portu szeregowego SCON obsługuje inicjalizację i adresowanie bitów. Kiedy pojawia się żądanie przerwania portu szeregowego, dwa dolne bity SCON blokują przerwania transmisji i odbioru. Kiedy CPU zapisuje dane lub znak do bufora transmisji portu szeregowego SUBF (instrukcja: MOV SUBF, A), nadajnik rozpoczyna wysyłanie. Po ukończeniu jednej ramki danych sprzęt ustawia flagę TI na „1”, wskazując, że port szeregowy żąda przerwania od procesora w celu wysłania następnej ramki danych. Podobnie, jeśli odbiornik portu szeregowego jest włączony do odbioru, po odebraniu ramki danych flaga RI jest ustawiana na 1, wskazując, że port szeregowy żąda przerwania od procesora w celu odczytania danych z bufora danych odbiorczych.


5.2 Skrócenie czasu trwania przerwania


Ponieważ w projektowaniu architektury oprogramowania stosuje się wiele przerwań, aby zapewnić niezawodne działanie programu i zminimalizować prawdopodobieństwo konfliktów pomiędzy różnymi zadaniami, implementacja oprogramowania powinna dążyć do usprawnienia zadań różnych przerwań i skrócenia czasu ich wykonania. W ramach podprogramu przerwania komunikacyjnego po wejściu do przerwania wykonaj podstawowe zadania, takie jak: czyszczenie odpowiednich bitów stanu w rejestrze sterującym portu szeregowego, odczytywanie odebranych znaków lub zapisywanie znaków, które mają zostać przesłane z/do bufora, zwiększanie liczby odebranych lub przesłanych znaków itp. Następnie natychmiast wyjdź z przerwania. Pozostałe zadania, takie jak sprawdzanie ramek, odpowiadanie na otrzymane polecenia ramkowe (telemetria/telepolecenia) oraz przygotowywanie ramek transmisyjnych, powinny być obsługiwane w ramach programu głównego.


5.3 Skuteczne wykrywanie zakończenia ramki w celu zapobiegania stagnacji komunikacji


Wykorzystanie dedykowanego timera programowego do wykrywania końca odebranej ramki zapobiega utrzymywaniu się zadań komunikacyjnych w przypadku niekompletnego odbioru ramki, zapewniając w ten sposób terminowy odbiór kolejnych ramek. Ponieważ odstęp czasu między bajtami w ramce jest znacznie krótszy niż odstęp między klatkami-do-ramek, programowy licznik czasu jest uruchamiany za każdym razem, gdy odebrany zostanie nowy bajt. Timer jest ustawiony na minimalny odstęp-do-klatek. Odstęp ten zmienia się w zależności od różnych szybkości transmisji. Jeśli następny bajt zostanie odebrany przed upływem ustawionego czasu, oznacza to, że ramka jest niekompletna i licznik czasu zostaje uruchomiony ponownie. Jeśli timer pomyślnie odliczy ustawiony czas, uruchomi odpowiedni numer przerwania. W ramach podprogramu przerwania czasowego ustawiany jest bajt flagi końca ramki, oznaczający zakończenie odbioru ramki. Gdy program główny wykryje zakończenie odbioru ramki, sprawdza integralność ramki weryfikując adres urządzenia podrzędnego i bajt cyklicznej kontroli nadmiarowej (CRC). Jeśli zostanie potwierdzona jako ważna ramka przeznaczona dla mastera, przetwarza polecenie ramki w oparciu o swój kod funkcji i przygotowuje się do wysłania ramki. Gdy urządzenie podrzędne odbierze niepoprawny komunikat, odsyła ramkę błędu. Jeżeli otrzymana wiadomość zawiera nieprawidłowe CRC, urządzenie podrzędne może zdecydować się nie odpowiadać. Jeśli master nie otrzyma odpowiedzi od slave w określonym czasie, ponownie wyśle ​​wiadomość z żądaniem. Jeśli wielokrotne retransmisje nie przyniosą odpowiedzi od urządzenia podrzędnego, zgłaszany jest błąd komunikacji.


5.4 Określanie szybkości komunikacji


Ponieważ wszystkie urządzenia znajdują się w tej samej obudowie, odległość między modułami jest minimalna. Modbus wykorzystuje RS485 do komunikacji-na duże odległości, eliminując potrzebę uwzględniania wpływu odległości na szybkość transmisji. Co więcej, tryb komunikacji master-slave zapobiega przeciążeniu linii. Dlatego z punktu widzenia efektywności komunikacji, o ile ustawiona prędkość transmisji nie przekracza maksymalnej prędkości transmisji chipa zastosowanego w module, wyższa prędkość transmisji skutkuje szybszą wymianą informacji i wyższą wydajnością komunikacji. Ustawienie dokładnie takiej samej szybkości transmisji dla obu stron komunikacji gwarantuje, że strona odbiorcza będzie próbkować każdy bit danych w połowie cyklu bitowego, zapewniając w ten sposób niezawodną komunikację.


5.5 Rozsądne metody debugowania


Podczas debugowania najpierw przetestuj komunikację pomiędzy każdym modułem procesora a mikrokomputerem za pośrednictwem modułu konwersji danych RS485/RS232. Po pomyślnych testach indywidualnych przejdź do debugowania-między modułami, co znacznie poprawia ogólną wydajność debugowania. Podczas debugowania komunikacji modułu-z-komputerem komputer wykorzystuje oprogramowanie do debugowania Modbus w celu symulacji procesu komunikacji urządzenia głównego, aktywnie żądając informacji od urządzenia podrzędnego. Dzięki temu cały proces odbioru i transmisji jest przejrzysty i przejrzysty, umożliwiając terminowe rozwiązywanie problemów modułowych. Podczas wspólnego debugowania oprogramowanie monitorujące magistralę obserwuje dane z obu stron, aby szybko identyfikować i rozwiązywać problemy.

 

6 punktów innowacyjnych tego artykułu


Po pierwsze, w tym artykule przyjęto Modbus, uniwersalny standard przemysłowy, w urządzeniu zabezpieczającym. Wymagane oprogramowanie narzędziowe można uzyskać bezpośrednio z odpowiednich stron internetowych, bez ponoszenia kosztów własności intelektualnej. Po drugie, urządzenie zabezpieczające realizuje wielozadaniowość i wykorzystuje protokół Modbus do stworzenia rozsądnego wspólnego mechanizmu debugowania pomiędzy modułami CPU, znacznie poprawiając efektywność wspólnego rozwoju systemu.

Wyślij zapytanie

whatsapp

Telefon

Adres e-mail

Zapytanie