>
Veri bit ler olarak adlandırılan sıfır ve birler olarak gönderilir.Her bir bit volt eşiği olarak gönderilir.Sıfırlar poizitf değerli birler ise negatif değerli voltajlar olarak gönderilir.Bit iletim hızı 9600 baud (bits saniyede)dir.
Hexadesimal Nedir?
Problemleri çözerken, iletilen ham verinin ne olduğunu görmek yardımcı olabilir.Uzun bir ve sıfırlardan oluşan dizileri okumak zordur.Bu yüzden bit'ler birleşrerek hexadesimak olarak gösterilir.Her bir 4 bitden oluşan blok 0 dan F ye kadar Hexadesimal gösterim ile ifade olunur.
0000 = 0 | 0100 = 4 | 1000 = 8 | 1100 = C |
0001 = 1 | 0101 = 5 | 1001 = 9 | 1101 = D |
0010 = 2 | 0110 = 6 | 1010 = A | 1110 = E |
0011 = 3 | 0111 = 7 | 1011 = B | 1111 = F |
Standart Modbus da Veri Nasıl Saklanır?
Slave cihazda veri dört tabloda saklanır
İki tablo on/off durum değerlerini saklar bunlar "coils" olarak adlandırılır,diğer iki tablo ise sayısal değerleri saklar bunlar ise "register" olarak adlandırılır.
"Coil " ler ve " register " ların her biri ayrı ayrı " read-only "tablosu ile " read-write " tablosuna sahiptir.
Her tablo 9999 değerliğe sahiptir.
Her "coil" veya "contact" 1 bit olup 0000 ve 270E arasında bir adrese sahiptir.
Her ""register " 1 kelime = 16 bits = 2 bytes olup 0000 ve 270E arasında bir adrese sahiptir.
Coil/Register Sayıları
|
Data Addresleri
|
Tip | Tablo Adı |
1-9999
|
0000 den
270E
|
Read-Write | Discrete Output Coils |
10001-19999
|
0000 iden
270E
|
Read-Only | Discrete Input Contacts |
30001-39999
|
0000 den 270E | Read-Only | Analog Input Registers |
40001-49999
|
0000 den 270E | Read-Write | Analog Output Holding Registers |
Örneğin, ilk "Holding Register," sayı 40001 in, Data Addressi 0000 dir.
Bu değerler arasındaki fark offset.dir.
Her tablonun farklı bir offseti vardır. 1, 10001, 30001 and 40001.
Slave ID Nedir ?
Her slave network üzerinde kendine ait olan ve 1 ile 247 arasında değişen adres numarasına sahiptir.Master data(veri) talebinde bulununca, ilk gönderilen "byte" Slave 'in addres bilgisidir. bu şekilde her slave ilk byte dan sonra mesajı gözardı edip etmeyeceğini anlar.
Function code nedir ?
Master tarafından gönderilen ikinci byte "Function code " dur. Bu sayı " slave" e hangi tabloya erişip ondan okuyacağı (Read) veya yazacağı (Write) bilgisini verir.
Function Code | Action | Tablo Adı |
01 (01 hex) | Read | Discrete Output Coils |
05 (05 hex) | Write single | Discrete Output Coil |
15 (0F hex) | Write multiple | Discrete Output Coils |
02 (02 hex) | Read | Discrete Input Contacts |
04 (04 hex) | Read | Analog Input Registers |
03 (03 hex) | Read | Analog Output Holding Registers |
06 (06 hex) | Write single | Analog Output Holding Register |
16 (10 hex) | Write multiple | Analog Output Holding Registers |
CRC açılımı Cyclic Redundancy Check dir. İki byte dan oluşur ve her Modbus mesajının ardına bir hata algılayıcı (Error Detection) olarak eklenir.Mesajdaki her byte CRC yi hesplamak için kullanılır. Alıcı cihaz da CRC yi hesaplar ve gönderici cihazdan gelen CRC ile kıyaslar. Eğer alınan mesajdaki bir bit bile yanlış alınmış ise CRC ler farklı olacağından HATA oluşur.
Modbus yönergelerinin biçimleri ve yanıtlar nelerdir? Talep ve yanıtları ( Request and responses )
Data Addresses | Read | Write Single | Write Multiple |
Discrete Output Coils 0xxxx | FC01 | FC05 | FC15 |
Discrete Input Contacts 1xxxx | FC02 | NA | NA |
Analog Input Registers 3xxxx | FC04 | NA | NA |
Analog Output Holding Registers 4xxxx | FC03 | FC06 | FC16 |
FC03 örneği register 40108 in AE41 i içerdiğini gösterir
16 bit e çevrimi ise 1010 1110 0100 0001
Tamam ama anlamı ne bunun bir kaç anlamı olabilir
Register 40108 aşağıdaki 16-bit data tiplerinden birini ifade edebilir.
16-bit unsigned integer ( 0 ve 65535 arası bir tam sayı)
register 40108 in içeriği AE41 = 44,609 (hex den decimal e çevrim)
16-bit signed integer ( -32768 ve 32767 arası bir tam sayı)
AE41 = -20,927
(hex den decimal e çevrim çuvallar, eğer 32767 inde ise 65536 yi çıkar)
ASCII string 2 karakteri (2 harf )
AE41 = ® A
discrete on/off değer (16-bit integer gibi değerliği 0 yada 1 gibi çalışır).
Hex data 0000 veya 0001 olur
Register 40108 40109 ile birleşip aşağıdaki 32-bit data tipinden birini oluşturur.
32-bit unsigned integer ( 0 ve 4,294,967,295 arasında bir tam sayı)
40108,40109 = AE41 5652 = 2,923,517,522
32-bit signed integer ( -2,147,483,648 ve 2,147,483,647 arasında tam bir sayı)
AE41 5652 = -1,371,449,774
32-bit double precision IEEE floating point number.
Bu bir matematik formül olup herhangi bir gerçek sayının (ondalık noktalı sayı) 7 hane duyarlıklı 32 bit
ifadesini sağlar.
AE41 5652 = -4.395978 E-11
Size excel sayfası olarak 4 byte 2 harfden oluşan Input lar için bir tablo IEEE float calculator sağ tıklayıp kayıt edebilirsiniz...
dört karacter ASCII string (4 harf)
AE41 5652 = ® A V R
Daha uzun ASCII strings leri için daha çok register birleştirilebilir. Her register iki ASCII Karakterden(2 bayt'dan oluşur).
Bayt (byte) ve (Harf) word sıralaması (ordering) nedir?
Modbus spesifikasyonları data'nın registerlarda nasıl saklandığını tam olarak açıklamaz.Bu yüzden kimi imalatçılar cihazlarında Modbus'ın en önce yüksek Bayt'ı önce düşük bayt'ı sonra kayıt edip iletmesini gerçekleştirdiler (AE sonra 41).
Alternatif olarak, diğerleri ise önce düşük Bayt'ı sonra yüksek Bayt'ı kayıt edip ilettiler (41sonra AE).
Benzeri olarak, registerlarda 32-bit data tiplerini birleştirmek istendiğinde ortaya çıktı,Bazı cihazlar yüksek 16 bitleri (yüksek harf) i ilk reg register'da ve geri kalan düşük harfi ikinci registerda kayıt ederken (AE41 sonra 5652) diğerleri tam tersini yaptı (5652 sonra AE41)
Eğer Alıcı Cihaz hangi şekilde kabul edeceğini biliyorsa ne şekilde bitlerin ya da harflerin gönderilmiş olmasının bir önemi yoktur.I
Örneğin 29,235,175,522 sayısı 32 bit unsigned integer olarak gönderilecek ise aşağıdaki dört kombinasyondan birisi olarak gönderilebilir.
AE41 5652 high byte first high word first
5652 AE41 high byte first low word first
41AE 5256 low byte first high word first
5256 41AE low byte first low word first
Modbus Haritası (Map) Nedir?
Modbus map Slave (Esir) cihazların listesi olup aşağıdaki şeyleri tanımlar
- Data nedir (Ör. basınç veya sıcaklık okumaları)
- Data nın nerede kayıt edildiği (hangi tablo ve data adresleri)
- Data'nın nasıl kayıt edildiği (data tipleri, bayt ve harf sıralaması)
Bazı cihazlar imalatçı tarafından sabit map cihaz üzerinde yerleşik olarak imal edilmiştir.Diğer cihazlar ise kullanıcı tarafından atanacak şekilde imal edilirler.
Extended register address Nedir?
Analog output tutan registerlar 40001 den 49999 a kadar olduğundan,9999 registerdan fazlası olamaz demektir. Bu çoğu uygulama için yeterli olsada bazı durumlarda daha fazla register olması faydalıdır.
Registerlar 40001 den 49999 e kadar 0000 den 270E e kadar adress tanımlar. kalan adresler olan 270F den FFFF kadar kısmı verimli kılarsak, altı katdan daha fazla register kullanılabilir olur, toplamda 65536 adet. Bu ise register sayısını 40001 den 105536'ya kadar genişletir.
Çoğu Modbus software driverları (Master PC ler için) 40001 den 49999 kadar sınırlandırılmış olarak sunar bu durumda slave cihazlardaki extended registerlara erişim yapılamaz. Ve çoğu slave cihazda extended regsiterlar kullanan map leri desteklemez. Öte yandan bazı slave cihazlar bu registerları destekler iken bazı master software lerde eğer özel yazılmış ise erişim sağlar.
2-bayt slave adresleme nasıl çalışır?
Tek bayt slave address ini tanımlamak ve her slave için tek ve geçerli addresi atamak için kullanıldığından Network üzerindeki slave adeti 256 ile sınırlanmıştır.Modbus spesifikasyonunda bu sayıs daha düşük olarak 247 adet olarak tanımlanmıştır.
Bu sınırlamayı aşmak için address için iki bayt kullanacak şekilde protokolde modifikasyon yapılabilir.
Master ve slave lerin hepsinin bu modifikasyonu desteklemesi gerekir.2 bayt adresleme network üzerindeki Slave sayısının limitini 65535 adete çıkarır.
Hiç yorum yok:
Yorum Gönder