html Modbus Yazmaçları ve 32 Bitlik Sözcük Sırası Açıklaması - FCTELE
                                   +8618758069661 [email protected]
Ürün Arama Kılavuz: boşluk = VE, | = VEYA, ! = DEĞİL

Bir Modbus Değeri Neden Yanlış Olur? 16 Bitlik Yazmaçlar, 32 Bitlik Veriler ve Sözcük Sırası

Sorularınız mı var? Bizi bugün arayın!

+8618758069661

Veya bize mesaj bırakın

Çevrimiçi Mesaj

Bir Modbus Değeri Neden Yanlış Olur? 16 Bitlik Yazmaçlar, 32 Bitlik Veriler ve Sözcük Sırası

Görüntülenme: 14 +14Özgün içerik: FCTELEYazar: FCTELE Teknik Ekibi

MODBUS VERİLERİNİN YORUMLANMASI

İletişim başarılı olduğu hâlde okunan değer neden yanlış olabilir?

Başarılı bir veri alışverişi, yazmaç içeriklerini iletir ancak uygulamanın bunları nasıl yorumlaması gerektiğini kanıtlamaz. 32 bitlik bir değer için tam sözcüklerin doğru sıralanması, doğru veri türü, ölçeklendirme ve birim gerekir. Ayrıca güncelleme zamanlamasının tutarlı olması gerekir. Cihazın yazmaç haritasıyla başlayın ve ham yanıtı saklayın. Bunlar genel kavramlardır; belirli bir ölçüm cihazı yapılandırması veya atomik anlık görüntü garantisi değildir.

01

Baytlar

A standard 16-bit register is carried as two ordered bytes.1234High byte first

Standart bir 16 bitlik yazmaç, sıralı iki bayt olarak taşınır.

02

Sözcükler

Rebuild whole words using the device map and the correct data type.41C80000Float: 25.0

Cihaz haritasını ve doğru veri türünü kullanarak tam sözcükleri yeniden oluşturun.

03

Zaman anları

Check whether both words belong to one coherent update.Old: 0000 FFFFNew: 0001 0000Do not mix halves

Her iki sözcüğün de aynı tutarlı güncellemeye ait olup olmadığını kontrol edin.

01 Haritayı okuyun

Adres gösterimini, yazmaç sayısını, türü, ölçeği ve birimi doğrulayın.

02 Ham verileri saklayın

Yetki kapsamında gerçekleştirilen bir okuma isteğini ve buna karşılık gelen yanıtı kaydedin.

03 Tutarlılığı kontrol edin

Güncelleme davranışını ve varsa ağ geçidi önbelleğinin zaman damgasını doğrulayın.

Seçim ve doğrulama kontrol listesi — genişlet
Kontrol Neler teyit edilmeli Nasıl doğrulanır
Kodlama Bayt ve tam sözcük sırası Ham baytları resmî haritayla karşılaştırın
Anlam Veri türü, ölçek ve birim Bilinen birkaç değeri kontrol edin
Güncellik Tutarlı güncellemeler ve önbellek yaşı Uygulama ayrıntılarını ve zaman damgası kanıtlarını inceleyin

Bir ölçüm cihazı 25 gösterirken bilgisayar gerçekçi olmayan bir ondalık değer gösteriyor ve iletişim günlüğü işlemin başarılı olduğunu bildiriyor olabilir. Kablo veya fiber mutlaka arızalı değildir: veriler bozulmadan ulaşmış, ardından yanlış yorumlanmış olabilir. Modbus sözcük sırasını anlamak için bir sayfa dolusu denklem gerekmez. Başarılı aktarım ile doğru okumayı birbirinden ayırmak için bir yazmacın ne içerdiğini, bir mesajın bunu nasıl taşıdığını ve yazılımın değeri nasıl yeniden oluşturduğunu izleyin.

Tek bir 16 bitlik yazmacın yüksek ve düşük baytları mesaja sırayla girer
Şekil 1: 0x1234 için bayt sıralaması; seri bit zamanlaması veya belirli bir yonga devresi değildir.

Numaralandırılmış veri bölmeleriyle başlayın

Modbus, endüstriyel cihaz verilerinin alışverişine ilişkin kuralları tanımlar. Tutma yazmaçlarını veya giriş yazmaçlarını okurken cihazın veri alanını numaralandırılmış bölmelerden oluşan bir sıra olarak düşünün. Bu yazmaçların her biri 16 bit, yani iki bayt tutar; her bayt sekiz bit içerir. Bunlar mantıksal veri birimleridir; ölçüm cihazının fiziksel olarak ayrı yongalardan oluşan bir sıra içerdiği iddiası değildir.

Numara, yazılıma nereye bakacağını söyler ancak orada neyin saklandığını tam olarak açıklamaz. Aynı iki bayt, işaretsiz bir tamsayıyı veya bir dizi durum bayrağını temsil edebilir. Cihazın yazmaç haritası, verilerin sıcaklık, basınç, enerji veya başka bir şeyi ifade edip etmediğini açıklar. Haritayı bir paketleme listesi gibi ele alın: adres, veri türü, birim, ölçeklendirme ve geçerlilik koşulları birlikte değerlendirilmelidir. Yalnızca adresi kopyalamak yeterli değildir.

Adres gösterimini de kontrol edin. Bir kılavuz, 40001 gibi bir tutma yazmacı referansı kullanırken mesajda bir başlangıç ofseti kullanılabilir; bazı yazılımlar bu dönüşümü kullanıcı adına yapar. Arayüzün bir referans numarası mı yoksa ofset mi beklediğini belirlemek için aynı dokümandaki örnek bir istekle karşılaştırın. Bu, tüm okumanın bir bölme kaymasını önler. Bir adres hatasını telafi etmek için sözcüklerin yerini tekrar tekrar değiştirmek, yalnızca teşhisi zorlaştırır.

Bir yazmaçtan önce hangi bayt çıkar?

Örnek yazmaç değeri 0x1234, 12 ve 34 baytlarına ayrılabilir. Onaltılık gösterim, sahada gerekli olan ileri düzey bir hesaplama değil, ham verileri kaydetmenin kısa bir yoludur. Standart Modbus yazmaç kodlaması, yüksek bayt olan 12 değerini düşük bayt olan 34 değerinden önce yerleştirir. Alıcı yazılım, aynı 16 bitlik içeriği yeniden elde etmek için bu sırayı kullanır.

Bu, mesajdaki bayt sırasını açıklar; bir bayt içindeki tek tek seri bitlerin sırasıyla karıştırılmamalıdır. Bilgisayarın bellek yerleşimi ise ayrı bir konudur: bir işlemcinin yerel depolama düzeni, bir uygulamaya protokolün mesaj kodlamasını değiştirme yetkisi vermez. Bir trafik kaydı mesaj baytlarını gösterirken hata ayıklayıcı zaten dönüştürülmüş bir bellek değerini gösteriyor olabilir. Bunları karşılaştırmadan önce gözlem noktasını belirleyin.

İki yazmaç, sözcük sırasını gündeme getirir

32 bitlik bir değer, tek bir 16 bitlik yazmaca sığmaz ve normalde iki bitişik yazmaçta yer alır. Her yazmaç içindeki bayt sırasına ek olarak başka bir soru ortaya çıkar: önceki yazmaç, tam değerin yüksek 16 bitini mi yoksa düşük 16 bitini mi tutar? Burada ele alınan sözcük sırası budur. Cihazlar ve yapılandırmalar farklılık gösterebilir; dolayısıyla Modbus desteği tek başına ortak bir düzen olduğunu göstermez.

Örneğin, IEEE 754 tek duyarlıklı kayan nokta biçimindeki 25.0 değeri, 41 C8 00 00 şeklinde dört bayttan oluşur. Açıklayıcı bir yazmaç haritası, N yazmacına 41C8 ve N+1 yazmacına 0000 yerleştirirken başka bir harita bu iki sözcüğün sırasını tersine çevirir. Her ikisi de kendi haritalarına göre okunup yeniden oluşturulduğunda 25.0 sonucunu verir. Birincinin yorumunu ikinciye uygulamak, başarılı bir veri alışverişine rağmen tamamen yanlış bir değer üretebilir. Bunlar öğretici örneklerdir; gerçek ölçüm cihazı adresleri veya ayarları değildir.

İki alternatif yazmaç haritası, aynı örnek kayan noktalı değer olan 25.0 değerini yeniden oluşturur
Şekil 2: N, gerçek bir ölçüm cihazı haritasını veya yapılandırmasını değil, soyut bir yazmaç konumunu belirtir.

Sözcüklerin yerini değiştirmek, sözcüklerin içindeki baytların yerini değiştirmekten farklıdır

Her biri üst ve alt sayfasıyla toplam dört veri baytını temsil eden iki kitap düşünün. Kitapların yerlerini değiştirmek, iki 16 bitlik sözcüğün yerini değiştirmeye; her kitabın içindeki sayfaların yerini değiştirmek ise sözcüklerin içindeki baytların yerini değiştirmeye benzer. Bu işlemler farklı sınırları etkiler. big-endian, little-endian veya swap gibi yazılım etiketleri farklı düzeylere işaret edebilir; bu nedenle dönüşümü belirlemek için yalnızca menü adı yeterli değildir.

Dört ham baytı alınış sırasıyla kaydedin ve yanlarına yazılımın yeniden oluşturma sırasını yazın. Her seferinde açıkça tanımlanmış tek bir yorumlama ayarını değiştirin ve bunu resmî yazmaç haritasıyla karşılaştırın. Aynı yer değiştirme işlemini tüm noktalara körü körüne uygulamaktan veya makul görünen tek bir sayıyı tüm haritanın doğru olduğunun kanıtı saymaktan kaçının. Sıfıra yakın değerler bir sıralama hatasını gizleyebilir; bu nedenle bilinen, birbirinden farklı birkaç değeri kontrol edin.

Bir Modbus RTU çerçevesinin sonundaki CRC, iletilen içeriğin değişip değişmediğini kontrol etmeye yardımcı olan bir hata algılama kodudur. Bir cihaz verileri kasıtlı olarak önce düşük sözcük gelecek şekilde döndürüyorsa CRC geçerli olabilir. Yazılımın daha sonra bunları önce yüksek sözcük gelecek şekilde yorumlaması, CRC kodunun bu yorumlama hatasını bildirmesine yol açmaz. Farklı ama geçerli bir adresin okunması da kontrolden geçebilir. Neyin ulaştığına ve bunun nasıl yorumlandığına ilişkin kanıtları ayrı tutun.

Aynı baytlar farklı yorumlar gerektirebilir

Doğru sıralama, gerekliliklerden yalnızca biridir. 32 bitlik bir tamsayı ile 32 bitlik bir kayan noktalı değer farklı biçimlerde yorumlanır. Kayan nokta biçimleri kesirleri temsil edebilir ancak bu, her dört baytlık öğenin kayan noktalı sayı olarak çözümlenmesi gerektiği anlamına gelmez. İşaretli tamsayılar negatif değerlere izin verirken işaretsiz tamsayılar farklı bir değer aralığı yorumuna sahiptir. Ekrandaki değerin ne kadar makul göründüğüne bakarak tahmin etmek yerine bu seçimleri cihaz dokümanlarından edinin.

Ölçeklendirme ve birimler de yorumlama zincirinin parçasıdır. Bir yazmaç haritası, ham tamsayı 253 değerinin 25.3 santigrat derece anlamına geldiğini açıkça belirtiyorsa yazılım, 253 santigrat derece göstermek yerine bu kuralı uygulamalıdır. Bu, yukarıdaki 25.0 kayan noktalı değerinden ayrı bir örnektir. Geçersiz değer kodlamalarını, çevrimdışı göstergelerini ve ayrılmış bitleri de kontrol edin. Özel bir kullanılamayan değer kodunu normal bir ölçüm gibi grafiğe aktarmak, inandırıcı ama gerçekte olmayan bir proses bozulması görüntüsü oluşturabilir.

Bir sayaç güncellemesinin öncesinde ve sonrasında yapılan okumalar, farklı anlara ait sözcükleri birleştirir
Şekil 3: Güncelleme tutarlılığına ilişkin kavramsal bir örnektir, ölçüm değildir. Blok okuma tek başına atomik bir anlık görüntüyü garanti etmez.

Doğru sıra için yine de tutarlı bir örnekleme anı gerekir

İki yazmaç ayrı isteklerle okunduğunda cihaz, okumalar arasında güncellenebilir. 0000 FFFF değerinden 0001 0000 değerine geçen örnek bir 32 bitlik işaretsiz sayaç düşünün. Önce eski yüksek sözcük 0000 ve ardından yeni düşük sözcük 0000 okunduğunda 0000 0000 elde edilir. Bu sonuç ne tam eski değerdir ne de tam yeni değerdir. Sorun, örnekleme tutarlılığıdır.

Ardışık iki yazmacı tek bir istekle okumak, genellikle ayrı isteklerin oluşturduğu zaman aralığını daraltır ancak her cihazın atomik bir anlık görüntü sağladığını kanıtlamaz. Tutarlı bir güncellemeyi tanımlayan kilitleme, yenileme davranışı, sıra numaraları veya zaman damgaları için uygulama dokümanlarını kontrol edin. Bir ağ geçidi verileri önbelleğe alıyorsa önbelleğin güncelleme zamanını da kaydedin. Yeni döndürülen bir mesaj mutlaka yeni ölçülmüş bir değer içermez ve daha hızlı sorgulama, bir tutarlılık mekanizmasının yerini tutamaz.

İletişim yolu boyunca sorumlulukları belirleyin

FCTELE web sitesinde, Modbus seri iletişiminin fiber üzerinden noktadan noktaya taşınması için FCP-D8G endüstriyel DIN ray tipi Modbus optik modem listelenmektedir. Bu, yararlı bir görev ayrımını gösterir: optik bağlantı iletişim verilerini taşırken ölçüm cihazının yazmaç haritası bunların anlamını tanımlar. Bir Modbus optik modem kullanılması; her ölçüm cihazının kayan nokta sözcük sırasının otomatik tanınmasını, birim dönüşümünü veya eşzamanlı ölçüm anlık görüntülerini sağladığı anlamına gelmez. Gerçek yetenekleri, ilgili ürün sürümünün dokümanlarına göre doğrulayın.

Doğrulamaya tek bir cihaz ve yetki kapsamındaki tek bir salt okunur noktayla başlayın. Aynı işlemin isteğini ve yanıtını kaydedin; hedefi, fonksiyon kodunu, başlangıç adresi kuralını ve yazmaç sayısını doğrulayın; ardından ham yazmaçları, sözcük sırasını, veri türünü, ölçeklendirmeyi, birimleri ve güncelleme zamanını kontrol edin. Başarılı bir bütünlük kontrolü, verinin iş bağlamında doğru yorumlandığının kanıtı değil, adımlardan biridir. Çalışmayı diğer noktalara genişletmeden önce bu eksiksiz okuma zincirini açıklayın ve belgelendirin. Bu kayıt, daha sonra bir ölçüm cihazı veya yazılım paketi değiştiğinde sistematik kontrolleri destekler.

Bir nokta yerel bir araçla doğru, ancak optik bağlantı üzerinden yanlış okunuyorsa aynı cihazdan aynı yapılandırma altında alınan ham yanıtları karşılaştırın; ardından kanal seçimini, seri iletişim ayarlarını ve günlükleri inceleyin. Ham baytların aynı, görüntülenen değerlerin farklı olması kod çözücü ayarlarına işaret eder; baytların farklı olması veya işlemlerin eşleşmemesi ise iletişim yolu boyunca daha fazla inceleme gerektirir. Bu sıra, gerçek aktarım arızalarını sözcük sırası sorunu diye göz ardı etmeden gereksiz donanım değişimlerini azaltır.

Kaynaklar ve kapsam

Modbus Organization: yazmaçlar ve veri biçimleri; Uygulama Protokolü V1.1b3, bölüm 4.2: bayt kodlaması; Schneider Electric: yazmaç eşlemesi ve sözcük sırası örnekleri; Schneider Electric: sözcükleri yer değiştirmiş kayan noktalı değerlerin okunması; FCTELE FCP-D8G Modbus optik modem bilgileri (Çince). Üçüncü taraf ayarları, FCTELE ürünlerinin yeteneklerini belirlemez. Görseller ve örnekler bağımsız olarak oluşturulmuş açıklamalardır; ölçüm sonuçları veya kablolama talimatları değildir.

Çince teknik makaleden çevrilmiştir: Çince özgün makaleyi okuyun.

Sık sorulan sorular

Başarılı bir Modbus veri alışverişi neden yine de yanlış bir değer gösterebilir?

Aktarım ve yorumlama birbirinden ayrıdır. Hedefi, adres kuralını, yazmaç sayısını, sözcük sırasını, veri türünü, ölçeklendirmeyi, birimi ve güncelleme zamanını kontrol edin. Geçerli bir CRC, verinin iş bağlamında doğru yorumlandığını kanıtlamaz.

İki yazmacın yerini değiştirmek, baytların yerini değiştirmekle aynı şey midir?

Hayır. Biri, tam 16 bitlik sözcüklerin yerlerini değiştirir; diğeri ise bir sözcük içindeki baytların yerlerini değiştirebilir. Yalnızca bir menü etiketine bakmak yerine cihaz haritasını ve gerçek yeniden oluşturma işlemini kontrol edin.

İki yazmaç için tek bir istek, tek bir örnekleme anını garanti eder mi?

Hayır. Blok okuma, ayrı isteklerin oluşturduğu zaman aralığını daraltabilir ancak atomik anlık görüntüler, kilitleme ve yenileme davranışı uygulamaya bağlıdır. Ağ geçidinin önbelleğe aldığı veriler için de güncelleme zamanı kontrol edilmelidir.

Ek okumalar

Birden fazla PLC ve bir Modbus hub · UART bayt çerçeveleme ve örnekleme

Bu makaleyi paylaşın