Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Dijital haberleşmede veriyi bir noktadan diğerine göndermek işin sadece ilk kısmıdır. Asıl zorluk, gönderilen verinin karşı tarafa hiç bozulmadan, eksiksiz ve doğru ulaştığından emin olmaktır.
Özellikle endüstriyel ortamlarda, yüksek gerilim hatlarının ve motorların oluşturduğu elektriksel gürültüler kablodaki 1leri 0a, 0ları 1e dönüştürebilir. Peki, alıcı cihaz yolda bir şeylerin ters gittiğini nasıl anlar? İşte burada devreye Hata Kontrol Mekanizmaları (Data Integrity) girer.
Parity bit, seri haberleşmede (özellikle UART/UART-TTL) gönderilen her 7 veya 8 bitlik veri paketinin arkasına eklenen 1 bitlik en temel hata kontrol yöntemidir. İki türü vardır:
1lerin toplam sayısı sayılır. Eğer toplam sayı tek ise, parity biti 1 yapılarak toplam sayı çift hale getirilir. Toplam zaten çiftse parity 0 olur.1lerin toplam sayısı sayılır. Toplam sayı çift ise, parity biti 1 yapılarak toplam sayı tek hale getirilir. Toplam zaten tekse parity 0 olur.
Parity bit sadece tek sayıda bit değişimini (1 bit, 3 bit vb.) yakalayabilir. Eğer gürültü aynı anda 2 biti birden bozarsa (örneğin iki adet 1 sayısı 0 olursa), toplam çift/tek dengesi değişmeyeceği için alıcı hatayı fark edemez. Bu yüzden kritik endüstriyel sistemlerde tek başına asla yeterli değildir.
İşte gönderdiğin image_383b41.jpg görselindeki içeriğin, hazırladığın makale formatına ve teknik diline uygun Türkçe çevirisi:
Geleneksel olarak, normal bir ASCII karakterini temsil etmek için 7 bit kullanılır ve 8. bit olarak eşlik biti (parity bit) eklenir. Bu senaryoda, cihazlar arasında veri gönderimi çift eşlik (even parity) yöntemi kullanılarak yapılmaktadır. Aşağıda, hem gönderici hem de alıcı tarafındaki veri örnekleri verilmiştir:
| Karakter | Gönderici (Sender) | Eşlik Biti (Parity Bit) | Alıcı (Receiver) | Eşlik Durumu (Parity) |
| “E” | 1000101 | 1 | 10001011 | Çift (Even) |
| “A” | 1000001 | 0 | 10000010 | Çift (Even) |
| “C” | 1000011 | 1 | 11100111 | Çift (Even) |
| “q” | 1110001 | 0 | 11100000 | Tek (Odd) Hata! |

Daha büyük veri paketlerini (örneğin bir Modbus çerçevesini) korumak için çok daha güçlü bir algoritmaya ihtiyaç duyarız: CRC (Döngüsel Redundans Kontrolü).
CRC, gönderilecek tüm veri paketini matematiksel bir işleme tabi tutar. Bu işlem, lise yıllarından bildiğimiz polinom bölmesine dayanır.
Endüstride en sık kullanılan protokollerden biri olan Modbus RTU paketini incelediğimizde bu yapıyı net bir şekilde görürüz. Bir Modbus paketi temel olarak şu elemanlardan oluşur:
| Cihaz Adresi (Slave ID) | Fonksiyon Kodu | Veri (Data) | Hata Kontrolü (CRC-16) |
| 1 Byte | 1 Byte | N Byte (Sensör değerleri vb.) | 2 Byte (16 Bit) |
Öğrencilerin veya sektöre yeni giren mühendislerin Modbus paketlerinde en çok kafasını karıştıran yer, paketin sonunda gördükleri 0x4A 0x35 gibi anlamsız duran 2 byte’lık (16 bit) veridir.
Bu 2 byte, CRC-16 değeridir. Gönderici cihaz (örneğin bir PLC), paketin başındaki Slave ID, Fonksiyon Kodu ve Veri kısımlarını CRC-16 algoritmasından geçirerek bu 2 byte’ı hesaplar ve paketin sonuna yapıştırır.
25°C verisi, yoldaki gürültü yüzünden alıcıya 125°C olarak ulaşabilirdi. Fabrikadaki sistem bu yanlış veriye dayanarak acil durdurma (trip) moduna geçebilir veya üretimi bozabilirdi.
CRC Çalışma Prensibi
CRC (Döngüsel Kırmızı Kontrolü), verinin hatasız bir şekilde iletildiğini doğrulamak için kullanılan güçlü bir hata kontrol mekanizmasıdır. Bu yöntem, polinomsal aritmetiğe dayanır. Verilen kurala göre CRC işleminin adımları şöyledir:
Adım 1: Mesajın Hazırlanması Başlangıç verisine (dataword), bölenin (divisor) uzunluğundan bir eksik sayıda (k-1) sıfır eklenir.
Adım 2: Modülo-2 Bölme İşlemi Hazırlanan veri, önceden belirlenmiş olan polinomsal bölen ile modülo-2 aritmetiği kullanılarak bölünür. Bu işlemde çıkarma yerine XOR kullanılır.
Adım 3: Kalanın (CRC) Hesaplanması Modülo-2 bölme işleminin sonucunda elde edilen kalan, CRC kodunu oluşturur. CRC kodunun uzunluğu da k-1 bittir.
Adım 4: Kod Kelimesinin (Codeword) Oluşturulması Gönderilecek olan kod kelimesi, orijinal veri ile hesaplanan CRC kodunun birleştirilmesiyle elde edilir.
Gönderici ve Alıcı Tarafındaki İş Akışı:
Aşağıdaki şemalar, bu adımların gönderici ve alıcı taraflarında nasıl uygulandığını görselleştirmektedir.
Gönderici Tarafı (Veri Gönderimi):

Görseldeki süreç şu şekildedir:
Bu aşamada, hazırlanan yük verisi, oluşturucu (1001) ile Modülo-2 Bölme işlemine tabi tutulur. Modülo-2 bölmesinde normal çıkarma yerine XOR (Özel Veya) mantık işlemi uygulanır [cite: 11].
Alıcı, kablo üzerinden gelen mesajı alır. Örnekte, iletim sırasında verinin bozulmadığı varsayılmaktadır.
Görselin en altında belirtildiği gibi:
“Sıfır, verinin kabul edildiği anlamına gelir” [cite: 11].
Anahtar Kelimeler: CRC nedir, Parity bit, Hata kontrolü, Modbus RTU paket yapısı, CRC-16, Veri bütünlüğü, Data integrity, Seri haberleşme hataları