KNX dla profesjonalisty cz. 18 – Warstwa łącza danych – kontrola poprawności i wymagania czasowe
WARSTWA ŁĄCZA DANYCH
Kontrola poprawności i wymagania czasowe
Jak zostało już wcześniej powiedziane do kontroli poprawności przesyłanej ramki wykorzystywane są bity parzystości i bajt kontrolny. Bit parzystości jest oceną poprawności pojedynczego bajtu, zaś bajt kontrolny całej ramki. Bit parzystości przyjmuje w każdym bajcie taką wartość, by suma logiczna bajtu wynosiła zero – liczba jedynek w bajcie (ośmiu bitach informacyjnych po pominięciu bitu startu i stopu) była parzysta. Taki test jest mało odporny na błędy – w przypadku wystąpienia dwóch błędów w bajcie przesłanie wadliwej ramki nie zostanie wykryte.
Bajt kontrolny na końcu ramki zawiera bity nieparzystości. Każdy kolejny bit jest dopełnieniem do nieparzystości bitów o tym numerze w całej ramce. Przykładowo bit trzeci bajtu kontrolnego dopełnia do nieparzystej liczby jedynek sumę bitów trzecich każdego bajtu ramki. Taki sposób kodowania poprawności nazywa się sprawdzianem krzyżowym. Oczywiście bajt kontrolny zawiera również pole startu, stopu i parzystości wzmacniającej zabezpieczenie. Można zaprojektować sytuację, w której ramka zostanie przesłana błędnie i nie zostanie wykryte przez te zabezpieczenia, jednak jest to sytuacja na tyle mało prawdopodobna, że w praktyce niespotykana.
Przyjęcie każdej ramki przez urządzenie jest przez nie potwierdzane. Potwierdzają ją tylko te elementy sieci, do których była ona adresowana. Potwierdzenie jest słowem 1-bajtowym. Możliwe są następujące odpowiedzi:
BUSY – Magistrala jest zajęta i nadawanie ramki zostało wstrzymane. Konieczne będzie jego powtórzenie.
NAK – Ramka została odebrana niepoprawnie, lub nastąpiły błędy w jej transmisji. Również konieczne będzie powtórzenie ramki.
ACK – Komunikacja przebiegła poprawnie.
Prędkość przesyłu danych na przewodzie TP wynosi 9600 bitów na sekundę. Oznacza to, że każdy bit przesyłany jest przez około 104μs. Pomiędzy każdym bajtem wprowadzana jest również przerwa trwająca dwa bity. Przesłanie pojedynczego bajtu trwa zatem 1.35ms.
Przed wysłaniem ramki urządzenia zawsze sprawdzają, czy magistrala jest wolna. Musi minąć okres 50 bitów stanu wolnego magistrali, by obiekt mógł wysłać ramkę (zawierającą 110 – 253 bitów). Następnie ramka zajmuje czas na magistrali oczekując na potwierdzenia przez okres 13 bitów. Ostatnim etapem jest przesłanie potwierdzenia – 1 bajt. Przesłanie jednej ramki wymaga zatem przesłania od 181 do 324 bitów co odpowiada zajęciu magistrali na czas 19 – 34ms. W czasie sekundy na niezależnym odcinku sieci może być przesłanych do 50 ramek.
Maciej Turski