
36 900,00 zł
Bezpieczna implementacja protokołu Modbus TCP w języku Structured Text
Modbus TCP Safe to wysokiej jakości biblioteka komunikacyjna przeznaczona dla sterowników PLC programowanych w języku IEC 61131-3 Structured Text (ST). Projekt powstał z myślą o zastosowaniach przemysłowych, gdzie niezawodność, bezpieczeństwo pamięci oraz zgodność z protokołem Modbus mają kluczowe znaczenie.
Biblioteka jest rozwijana jako wspólna platforma dla sterowników:
Beckhoff (TwinCAT)
WAGO (e!COCKPIT / CODESYS)
ABB (Automation Builder)
Dzięki zachowaniu wspólnego interfejsu API możliwe jest łatwe przenoszenie aplikacji pomiędzy producentami sterowników.
Cała biblioteka została napisana w standardowym języku ST zgodnym z IEC 61131-3, bez wykorzystywania zewnętrznych bibliotek w języku C ani kodu zależnego od konkretnego producenta.
Projekt od początku tworzony był zgodnie z zasadą Safety First.
Każda operacja na wskaźnikach jest kontrolowana, a biblioteka zawiera między innymi:
walidację wskaźników,
kontrolę długości buforów,
ochronę przed wyjściem poza zakres pamięci,
kontrolę poprawności ramek Modbus,
weryfikację parametrów wejściowych.
Dzięki temu ryzyko uszkodzenia pamięci sterownika zostało ograniczone do minimum.
Biblioteka zachowuje pełną zgodność ze specyfikacją Modbus TCP.
Obsługiwane są między innymi:
Holding Registers
Input Registers
Coils
Discrete Inputs
wszystkie standardowe wyjątki (Exception Codes)
serializacja danych zgodna z Big Endian
obsługa ramek MBAP
Algorytmy komunikacyjne zostały zaprojektowane tak, aby zachowywać identyczne działanie niezależnie od platformy PLC.
Projekt został podzielony na niezależne warstwy:
warstwa protokołu Modbus,
warstwa transportowa TCP,
warstwa HAL (Hardware Abstraction Layer),
warstwa bazy danych rejestrów,
warstwa aplikacyjna.
Takie podejście umożliwia łatwe rozszerzanie biblioteki o nowe funkcjonalności bez ingerencji w istniejący kod.
Jednym z głównych założeń projektu jest maksymalna przenośność.
Kod został przygotowany z uwzględnieniem rzeczywistych ograniczeń kompilatorów różnych producentów PLC, dzięki czemu ta sama biblioteka może pracować na różnych platformach przy minimalnych zmianach w warstwie sprzętowej.
Implementacja została zoptymalizowana pod kątem pracy w sterownikach PLC.
Biblioteka:
nie wykonuje zbędnych kopii danych,
operuje bezpośrednio na buforach komunikacyjnych,
minimalizuje wykorzystanie pamięci,
zachowuje przewidywalny czas wykonania.
Dzięki temu doskonale nadaje się do zastosowań czasu rzeczywistego.
Rdzeń biblioteki został opracowany zgodnie z rygorystyczną metodologią translacji kodu niskopoziomowego.
Każdy algorytm zachowuje:
identyczną kolejność operacji,
identyczne efekty uboczne,
zgodność binarną danych,
zgodność semantyczną z implementacją referencyjną.
Takie podejście pozwala uzyskać wysoką przewidywalność działania oraz ułatwia audyt kodu. Zastosowane zasady translacji obejmują m.in. bezpieczną obsługę wskaźników, jawne indeksowanie pamięci oraz wierne odwzorowanie algorytmów komunikacyjnych.
Biblioteka rozwijana jest etapowo.
Aktualny plan obejmuje:
Modbus TCP Server (Slave)
Modbus TCP Client (Master)
obsługę wielu jednoczesnych połączeń TCP
timeouty komunikacyjne
mechanizmy retransmisji
diagnostykę komunikacji
statystyki ramek
rejestrację błędów
konfigurację poprzez struktury ST
Modbus TCP Safe może zostać wykorzystany w:
sterownikach maszyn,
systemach SCADA,
systemach BMS,
energetyce,
automatyce budynkowej,
przemyśle procesowym,
systemach monitoringu,
integracji urządzeń różnych producentów.
✔ implementacja napisana w czystym Structured Text
✔ wspólny kod dla Beckhoff, WAGO i ABB
✔ bezpieczna obsługa pamięci i wskaźników
✔ zgodność ze standardem Modbus TCP
✔ architektura przygotowana do dalszego rozwoju
✔ wysoka wydajność
✔ kod tworzony z myślą o zastosowaniach przemysłowych
Standardowy protokół Modbus TCP nie posiada mechanizmów uwierzytelniania urządzeń. Oznacza to, że każde urządzenie mające dostęp do sieci może wysyłać żądania do serwera Modbus, a ten – o ile ramka jest poprawna – będzie je realizował.
Biblioteka Modbus TCP Safe rozszerza standard Modbus TCP o opcjonalny mechanizm autoryzacji komunikacji, który skutecznie ogranicza możliwość wysyłania poleceń przez nieuprawnione urządzenia.
Każde żądanie wysyłane przez klienta (Master) zawiera dodatkowy 32-bitowy kod autoryzacyjny wyliczany na podstawie:
losowo generowanego identyfikatora Transaction ID,
aktualnego znacznika czasu (Timestamp),
tajnego klucza współdzielonego pomiędzy urządzeniami.
Kod autoryzacyjny obliczany jest z wykorzystaniem zaimplementowanego algorytmu i dołączany do ramki Modbus TCP.
Po odebraniu żądania serwer (Slave) wykonuje identyczne obliczenia i porównuje otrzymaną wartość z kodem przesłanym przez klienta.
Jeżeli wartości są zgodne, żądanie zostaje zrealizowane. W przeciwnym przypadku jest natychmiast odrzucane, bez wykonania jakiejkolwiek operacji na rejestrach PLC.
Wykorzystanie aktualnego znacznika czasu oraz losowego identyfikatora Transaction ID powoduje, że każda ramka posiada unikalny kod autoryzacyjny.
Przechwycenie poprawnej ramki i ponowne jej wysłanie w późniejszym czasie nie pozwala na uzyskanie dostępu do sterownika, ponieważ kod autoryzacyjny przestaje być ważny.
Autoryzacja opiera się na tajnym kluczu znanym wyłącznie autoryzowanym urządzeniom Master i Slave.
Klucz nigdy nie jest przesyłany przez sieć, dzięki czemu jego poznanie nie jest możliwe poprzez analizę ruchu komunikacyjnego.
Mechanizm zabezpieczenia stanowi rozszerzenie biblioteki i może zostać włączony lub wyłączony konfiguracyjnie.
Po jego wyłączeniu biblioteka zachowuje pełną zgodność ze standardowym protokołem Modbus TCP, umożliwiając komunikację z urządzeniami innych producentów.
Modbus TCP Safe to nowoczesna biblioteka komunikacyjna przeznaczona dla systemów automatyki przemysłowej, w których niezawodność, bezpieczeństwo komunikacji oraz odporność na nieautoryzowany dostęp są równie istotne jak zgodność z protokołem Modbus. Architektura biblioteki została zaprojektowana z uwzględnieniem współczesnych wymagań dotyczących cyberbezpieczeństwa przemysłowych systemów sterowania.