Modbus network linking a controller with distributed field devices

Modbus: İlkin sənaye sahə şini protokolu

Modbus remains widely deployed because its data model is simple, not because every implementation is simple. This guide explains frames, register mapping, ti...

Sahə şini sənaye şəbəkələrində sahə qurğularını sənaye kontrollerlərinə qoşmaq üçün istifadə olunan kommunikasiya protokoludur. Sahə şini kontrollerlərlə qurğular arasında tələb olunan naqillərin miqdarını azaldır, çünki bir neçə qurğu eyni naqil cütlüyünə qoşula bilər.

Modbus, Profibus, Foundation Fieldbus, ControlNet, DeviceNet və bir çox başqaları da daxil olmaqla, bir sıra populyar sahə şini texnologiyaları mövcuddur.

1979-cu ildə Modicon OSI modelinin tətbiq səviyyəsindən istifadə edən və xüsusi olaraq öz PLC-ləri üçün nəzərdə tutulmuş yeni protokol təqdim etdi. Bu protokol Modbus adlandırıldı və avtomatlaşdırma tarixində geniş istifadə olunan ilk sahə şini oldu.

 

Sahə şini vasitəsilə sahə qurğularına qoşulmuş PLC

Şəkil 1. Sahə qurğularına qoşulmuş PLC 

 

Modbus-a giriş

Modbus sahə qurğularını sənaye kontrollerlərinə qoşmaq üçün hazırlanmışdı. İxtira edildiyi dövrdə əksər qurğular qurğunun vəziyyətini çatdırmaq üçün gərginlik və ya cərəyan göstəricilərindən istifadə edirdi. Modbus yüksək/aşağı sensor və aktuator vəziyyətlərini əks etdirən diskret bitlərlə, eləcə də analoq proses qiymətlərinə uyğun tam ədədləri saxlayan registrlərlə səmərəli işləyə bilir.

Sahə şinləri texnologiyalarına keçidin yavaş baş verməsi Modbus-un ən sadə protokollardan birinə çevrilməsinə səbəb oldu və illər ərzində yeni versiyalar əlavə edildi.

Əvvəlcə Modbus ardıcıl kommunikasiya bağlantısı, yəni RS-232/RS-485 üzərindən tətbiq edilirdi. Bu variantlar bu gün də Modbus RTU və ASCII adları ilə geniş istifadə olunur. Sonradan protokol TCP/IP və Ethernet üzərindən istifadə üçün uyğunlaşdırıldı. Bu, adətən Modbus TCP adlanır və müasir quraşdırmalarda Modbus-un ən geniş yayılmış tətbiqidir.

 

Kommunikasiya modeli

Modbus kommunikasiya üçün master/slave modelindən istifadə edir (Modbus TCP-də müştəri/server modeli). Modbus masteri Modbus slave-inə sorğu göndərir; slave müvafiq əməliyyatları yerinə yetirir və masterə cavab verir. Bu ssenaridə master çox vaxt PLC olur, sahə qurğuları isə slave kimi fəaliyyət göstərir. 

Modbus-da mesaj çərçivəsi tətbiq məlumat vahidindən (ADU) və protokol məlumat vahidindən (PDU) ibarətdir. ADU istifadə olunan Modbus növündən asılı olaraq fərqlənir, PDU isə kommunikasiya metodundan asılı deyil.

PDU adətən funksiya kodu və müəyyən məlumatlardan ibarət olur. Bu, ünvan və xəta yoxlama kodu vasitəsilə ADU daxilində kapsullaşdırılır. Modbus TCP ADU-da MBAP (Modbus Tətbiq Protokolu) başlığından istifadə edir.

 

Şəkil 2. Modbus ASCII/RTU (yuxarıda) və Modbus TCP (aşağıda) üçün Modbus ADU və PDU. Şəkil Modbus.org materialı əsasında uyğunlaşdırılıb

 

PDU əsas kommunikasiya qatından asılı qalmamaq üçün ilkin serial spesifikasiyanın ölçü məhdudiyyətlərinə uyğun olmalıdır. RS-485 üzərindən ADU üçün bu ölçü 256 bayt idi. Buna görə ADU-dan — 1 ünvan baytından və 2 xətanın yoxlanılması baytından — çıxış edərək PDU-nun ümumilikdə 253 baytla məhdudlaşdığını nəzərə almalıyıq. Qeyd edək ki, ADU-dakı ünvan əslində Modbus şəbəkəsindəki slave cihazının identifikatorudur.

PDU-nun verilənlər hissəsində funksiya koduna xas sahələr və ötürülən faktiki verilənlər yerləşir. Bu sahələr məqalənin sonrakı hissəsində ətraflı müzakirə olunacaq.

 

Verilənlərin təqdim olunması

Klassik Modbus-un iki ötürmə rejimi var: ASCII və RTU.

ASCII rejimində verilənlər 0-9 və A-F ASCII simvolları kimi göndərilir, RTU rejimində isə 8-bitlik ikilik formatda təqdim olunur. Verilənlər və ünvanlar böyük sonluq sırası ilə kodlaşdırılır və nəticədə ən əhəmiyyətli bayt əvvəl ötürülür.

Modbus verilənləri dörd əsas növə bölünür:

  • Diskret girişlər
  • Bobinlər (çıxışlar)
  • Giriş registrləri
  • Saxlama registrləri

Diskret girişlər verilənlərin bir bitini təmsil edir və yalnız oxunur. Bobinlər də bir biti təmsil edir, lakin onlardan həm oxumaq, həm də onlara yazmaq mümkündür. Giriş registrləri 16-bitlik yalnız oxunan verilənləri, saxlama registrləri isə 16-bitlik oxuma-yazma verilənlərini təmsil edir.

 

Şəkil 3. Modbus Protokol Spesifikasiyasından

 

Hər bir növ üzrə cihazın yaddaşında maksimum 2^16 (65536) verilənlər elementi yerləşə bilər. Müxtəlif verilənlər növlərinə giriş üçün xüsusi funksiya kodları mövcuddur və hər bir növün çox vaxt özünə məxsus yaddaş bloku olur.

Verilənlər elementinə müraciət etmək üçün master sadəcə 0-65535 diapazonundan istifadə edir. 1-ci verilənlər elementi 0x0000 ünvanında yerləşir. 2-ci verilənlər elementi 0x0001 ünvanında olur. 65536-cı verilənlər elementi 0xFFFF ünvanında tapılır. Nəzərə alın ki, cihazların bütün 65536 verilənlər elementinə malik olması tələb olunmur; əslində, Modbus-dan istifadə edən uzaqdan I/O terminallarının əksəriyyətində bu maksimum həddən xeyli az element olur.

 

Modbus tranzaksiyaları

Modbus-da verilənlərin necə təqdim olunduğunu başa düşdükdən sonra tranzaksiyaları ətraflı nəzərdən keçirə bilərik. Bu, PDU baxımından izah ediləcək, çünki PDU kommunikasiya qatından asılı deyil.

Modbus tranzaksiyalarında onaltılıq simvol təlimatlarından istifadə olunur; burada bir 8-bitlik bayt 0x00 formatında olur və hər simvol üçün diapazon 0-F aralığındadır. Beləliklə, 16-bitlik registr iki bayta bərabərdir və 0x0000 formatında göstərilir. 

Modbus spesifikasiyası PDU-ların üç növünü müəyyən edir:

  • Modbus sorğusu
  • Modbus cavabı
  • Modbus istisna cavabı

Master funksiya kodundan istifadə etməklə sorğunu başladır, kölə qurğu isə həmin sorğuya cavab olaraq cavab göndərir. Uğurlu cavab master tərəfindən göndərilən funksiya kodunu olduğu kimi qaytarır. İstisna cavabında eyni funksiya kodu göndərilir, lakin nəyinsə səhv getdiyini bildirmək üçün msb (ən əhəmiyyətli bit) yüksək qiymətə təyin edilir. 

Modbus spesifikasiyasında bir sıra funksiya kodları müəyyən edilib. 0x01 funksiya kodu coil-lərin oxunması funksiyasıdır.

Şəkil 4-də coil-lərin oxunması sorğusu və cavabının necə görünə biləcəyinə dair nümunə göstərilir. Modbus masteri 0x01 funksiya kodu ilə (coil-lərin oxunması) ilk məlumat elementindən (0x0000 ünvanı) başlayaraq yalnız bir coil oxumaq üçün sorğu göndərir. Coil-lərin oxunması funksiyasından eyni anda 2000-ə (0x7D0) qədər coil oxumaq üçün istifadə edilə bilər. 

 

Şəkil 4. Coil-lərin oxunması tranzaksiyası

 

Uğurlu olduqda, kölə qurğu eyni funksiya kodu və cavab verdiyi coil-lərin sayını göndərir. Coil statusu n bayt uzunluğunda olur və hər bit müvafiq coil-in AKTİV (1) və ya QEYRİ-AKTİV (0) olduğunu göstərir.

Bu halda 0x0000 ünvanındakı coil AKTİVDİR. Sorğu uğurlu olmasaydı, istisna cavabında msb-si yüksək qiymətə təyin edilmiş funksiya kodu (0x81) və nəyin səhv getdiyini izah edən istisna kodu olardı. 0x02 istisna kodu qeyri-qanuni məlumat ünvanından istifadə edildiyini, yəni bu kölə qurğunun yaddaşında 0x0000 ünvanında coil olmadığını bildirir. 

Növbəti nümunədə tək registrə yazma tranzaksiyası (funksiya kodu 0x06) göstərilir. Burada master 0x00FF ünvanına 0xA0A0 məlumatının yazılmasını tələb edir. Kölə qurğunun cavabı sadəcə sorğunun əks-sədasıdır.

Buradakı nümunəvi istisna cavabında msb-si yüksək qiymətə təyin edilmiş funksiya kodu və 0x04 istisna kodu göstərilir. Bu kod kölə qurğunun sorğunu yerinə yetirməyə çalışdığı zaman bərpaolunmaz xətanın baş verdiyini bildirir. 

 

Şəkil 5. Tək registrə yazma tranzaksiyası 

 

Bütün Modbus funksiya kodları yuxarıda göstərilən iki nümunədəki kimi oxşar sxemə əsaslanır.

Şəkil 6-da istisna cavabları üçün ümumi funksiya kodlarının siyahısı istisna kodları ilə birlikdə göstərilir. Ətraflı məlumat üçün Modbus spesifikasiyasına müraciət edin. 

 

Şəkil 6. Funksiya kodları və istisna kodları

 

Nəticə

Modbus PLC-lərə giriş-çıxış blokları, terminal qurğuları və digər kontrollerlər də daxil olmaqla, bütün növ uzaq qurğularla əlaqə saxlamağa imkan verir. Bunun üçün diskret və tam ədədi məlumatların oxunması və yazılması üzrə standart metoddan istifadə edir və rəqəmsal məlumatların ötürülməsi ilə bağlı demək olar ki, bütün ssenariləri əhatə edir.

Modbus bu gün sənayedə standart hesab olunur və əksər müasir idarəetmə sistemlərindən əvvəl yaranmasına baxmayaraq, bu günə qədər ən geniş yayılmış royaltisiz sənaye protokoludur. O, dünyanın müxtəlif zavod və fabriklərində geniş istifadə olunur və uzunömürlü olmasına baxmayaraq, gələcək illər ərzində də aktual sənaye protokolu olaraq qalacağı şübhəsizdir.

 

2019-cu ildə dərc olunmuş orijinal məqalə

Modbus: İlkin sənaye sahə şini protokolu

Modbus remains widely deployed because its data model is simple, not because every implementation is simple. This guide explains frames, register mapping, timing, diagnostics, and the design limits...

Sahə şini sənaye şəbəkələrində sahə qurğularını sənaye kontrollerlərinə qoşmaq üçün istifadə olunan kommunikasiya protokoludur. Sahə şini kontrollerlərlə qurğular arasında tələb olunan naqillərin miqdarını azaldır, çünki bir neçə qurğu eyni naqil cütlüyünə qoşula bilər.

Modbus, Profibus, Foundation Fieldbus, ControlNet, DeviceNet və bir çox başqaları da daxil olmaqla, bir sıra populyar sahə şini texnologiyaları mövcuddur.

1979-cu ildə Modicon OSI modelinin tətbiq səviyyəsindən istifadə edən və xüsusi olaraq öz PLC-ləri üçün nəzərdə tutulmuş yeni protokol təqdim etdi. Bu protokol Modbus adlandırıldı və avtomatlaşdırma tarixində geniş istifadə olunan ilk sahə şini oldu.

 

Sahə şini vasitəsilə sahə qurğularına qoşulmuş PLC

Şəkil 1. Sahə qurğularına qoşulmuş PLC 

 

Modbus-a giriş

Modbus sahə qurğularını sənaye kontrollerlərinə qoşmaq üçün hazırlanmışdı. İxtira edildiyi dövrdə əksər qurğular qurğunun vəziyyətini çatdırmaq üçün gərginlik və ya cərəyan göstəricilərindən istifadə edirdi. Modbus yüksək/aşağı sensor və aktuator vəziyyətlərini əks etdirən diskret bitlərlə, eləcə də analoq proses qiymətlərinə uyğun tam ədədləri saxlayan registrlərlə səmərəli işləyə bilir.

Sahə şinləri texnologiyalarına keçidin yavaş baş verməsi Modbus-un ən sadə protokollardan birinə çevrilməsinə səbəb oldu və illər ərzində yeni versiyalar əlavə edildi.

Əvvəlcə Modbus ardıcıl kommunikasiya bağlantısı, yəni RS-232/RS-485 üzərindən tətbiq edilirdi. Bu variantlar bu gün də Modbus RTU və ASCII adları ilə geniş istifadə olunur. Sonradan protokol TCP/IP və Ethernet üzərindən istifadə üçün uyğunlaşdırıldı. Bu, adətən Modbus TCP adlanır və müasir quraşdırmalarda Modbus-un ən geniş yayılmış tətbiqidir.

 

Kommunikasiya modeli

Modbus kommunikasiya üçün master/slave modelindən istifadə edir (Modbus TCP-də müştəri/server modeli). Modbus masteri Modbus slave-inə sorğu göndərir; slave müvafiq əməliyyatları yerinə yetirir və masterə cavab verir. Bu ssenaridə master çox vaxt PLC olur, sahə qurğuları isə slave kimi fəaliyyət göstərir. 

Modbus-da mesaj çərçivəsi tətbiq məlumat vahidindən (ADU) və protokol məlumat vahidindən (PDU) ibarətdir. ADU istifadə olunan Modbus növündən asılı olaraq fərqlənir, PDU isə kommunikasiya metodundan asılı deyil.

PDU adətən funksiya kodu və müəyyən məlumatlardan ibarət olur. Bu, ünvan və xəta yoxlama kodu vasitəsilə ADU daxilində kapsullaşdırılır. Modbus TCP ADU-da MBAP (Modbus Tətbiq Protokolu) başlığından istifadə edir.

 

Şəkil 2. Modbus ASCII/RTU (yuxarıda) və Modbus TCP (aşağıda) üçün Modbus ADU və PDU. Şəkil Modbus.org materialı əsasında uyğunlaşdırılıb

 

PDU əsas kommunikasiya qatından asılı qalmamaq üçün ilkin serial spesifikasiyanın ölçü məhdudiyyətlərinə uyğun olmalıdır. RS-485 üzərindən ADU üçün bu ölçü 256 bayt idi. Buna görə ADU-dan — 1 ünvan baytından və 2 xətanın yoxlanılması baytından — çıxış edərək PDU-nun ümumilikdə 253 baytla məhdudlaşdığını nəzərə almalıyıq. Qeyd edək ki, ADU-dakı ünvan əslində Modbus şəbəkəsindəki slave cihazının identifikatorudur.

PDU-nun verilənlər hissəsində funksiya koduna xas sahələr və ötürülən faktiki verilənlər yerləşir. Bu sahələr məqalənin sonrakı hissəsində ətraflı müzakirə olunacaq.

 

Verilənlərin təqdim olunması

Klassik Modbus-un iki ötürmə rejimi var: ASCII və RTU.

ASCII rejimində verilənlər 0-9 və A-F ASCII simvolları kimi göndərilir, RTU rejimində isə 8-bitlik ikilik formatda təqdim olunur. Verilənlər və ünvanlar böyük sonluq sırası ilə kodlaşdırılır və nəticədə ən əhəmiyyətli bayt əvvəl ötürülür.

Modbus verilənləri dörd əsas növə bölünür:

  • Diskret girişlər
  • Bobinlər (çıxışlar)
  • Giriş registrləri
  • Saxlama registrləri

Diskret girişlər verilənlərin bir bitini təmsil edir və yalnız oxunur. Bobinlər də bir biti təmsil edir, lakin onlardan həm oxumaq, həm də onlara yazmaq mümkündür. Giriş registrləri 16-bitlik yalnız oxunan verilənləri, saxlama registrləri isə 16-bitlik oxuma-yazma verilənlərini təmsil edir.

 

Şəkil 3. Modbus Protokol Spesifikasiyasından

 

Hər bir növ üzrə cihazın yaddaşında maksimum 2^16 (65536) verilənlər elementi yerləşə bilər. Müxtəlif verilənlər növlərinə giriş üçün xüsusi funksiya kodları mövcuddur və hər bir növün çox vaxt özünə məxsus yaddaş bloku olur.

Verilənlər elementinə müraciət etmək üçün master sadəcə 0-65535 diapazonundan istifadə edir. 1-ci verilənlər elementi 0x0000 ünvanında yerləşir. 2-ci verilənlər elementi 0x0001 ünvanında olur. 65536-cı verilənlər elementi 0xFFFF ünvanında tapılır. Nəzərə alın ki, cihazların bütün 65536 verilənlər elementinə malik olması tələb olunmur; əslində, Modbus-dan istifadə edən uzaqdan I/O terminallarının əksəriyyətində bu maksimum həddən xeyli az element olur.

 

Modbus tranzaksiyaları

Modbus-da verilənlərin necə təqdim olunduğunu başa düşdükdən sonra tranzaksiyaları ətraflı nəzərdən keçirə bilərik. Bu, PDU baxımından izah ediləcək, çünki PDU kommunikasiya qatından asılı deyil.

Modbus tranzaksiyalarında onaltılıq simvol təlimatlarından istifadə olunur; burada bir 8-bitlik bayt 0x00 formatında olur və hər simvol üçün diapazon 0-F aralığındadır. Beləliklə, 16-bitlik registr iki bayta bərabərdir və 0x0000 formatında göstərilir. 

Modbus spesifikasiyası PDU-ların üç növünü müəyyən edir:

  • Modbus sorğusu
  • Modbus cavabı
  • Modbus istisna cavabı

Master funksiya kodundan istifadə etməklə sorğunu başladır, kölə qurğu isə həmin sorğuya cavab olaraq cavab göndərir. Uğurlu cavab master tərəfindən göndərilən funksiya kodunu olduğu kimi qaytarır. İstisna cavabında eyni funksiya kodu göndərilir, lakin nəyinsə səhv getdiyini bildirmək üçün msb (ən əhəmiyyətli bit) yüksək qiymətə təyin edilir. 

Modbus spesifikasiyasında bir sıra funksiya kodları müəyyən edilib. 0x01 funksiya kodu coil-lərin oxunması funksiyasıdır.

Şəkil 4-də coil-lərin oxunması sorğusu və cavabının necə görünə biləcəyinə dair nümunə göstərilir. Modbus masteri 0x01 funksiya kodu ilə (coil-lərin oxunması) ilk məlumat elementindən (0x0000 ünvanı) başlayaraq yalnız bir coil oxumaq üçün sorğu göndərir. Coil-lərin oxunması funksiyasından eyni anda 2000-ə (0x7D0) qədər coil oxumaq üçün istifadə edilə bilər. 

 

Şəkil 4. Coil-lərin oxunması tranzaksiyası

 

Uğurlu olduqda, kölə qurğu eyni funksiya kodu və cavab verdiyi coil-lərin sayını göndərir. Coil statusu n bayt uzunluğunda olur və hər bit müvafiq coil-in AKTİV (1) və ya QEYRİ-AKTİV (0) olduğunu göstərir.

Bu halda 0x0000 ünvanındakı coil AKTİVDİR. Sorğu uğurlu olmasaydı, istisna cavabında msb-si yüksək qiymətə təyin edilmiş funksiya kodu (0x81) və nəyin səhv getdiyini izah edən istisna kodu olardı. 0x02 istisna kodu qeyri-qanuni məlumat ünvanından istifadə edildiyini, yəni bu kölə qurğunun yaddaşında 0x0000 ünvanında coil olmadığını bildirir. 

Növbəti nümunədə tək registrə yazma tranzaksiyası (funksiya kodu 0x06) göstərilir. Burada master 0x00FF ünvanına 0xA0A0 məlumatının yazılmasını tələb edir. Kölə qurğunun cavabı sadəcə sorğunun əks-sədasıdır.

Buradakı nümunəvi istisna cavabında msb-si yüksək qiymətə təyin edilmiş funksiya kodu və 0x04 istisna kodu göstərilir. Bu kod kölə qurğunun sorğunu yerinə yetirməyə çalışdığı zaman bərpaolunmaz xətanın baş verdiyini bildirir. 

 

Şəkil 5. Tək registrə yazma tranzaksiyası 

 

Bütün Modbus funksiya kodları yuxarıda göstərilən iki nümunədəki kimi oxşar sxemə əsaslanır.

Şəkil 6-da istisna cavabları üçün ümumi funksiya kodlarının siyahısı istisna kodları ilə birlikdə göstərilir. Ətraflı məlumat üçün Modbus spesifikasiyasına müraciət edin. 

 

Şəkil 6. Funksiya kodları və istisna kodları

 

Nəticə

Modbus PLC-lərə giriş-çıxış blokları, terminal qurğuları və digər kontrollerlər də daxil olmaqla, bütün növ uzaq qurğularla əlaqə saxlamağa imkan verir. Bunun üçün diskret və tam ədədi məlumatların oxunması və yazılması üzrə standart metoddan istifadə edir və rəqəmsal məlumatların ötürülməsi ilə bağlı demək olar ki, bütün ssenariləri əhatə edir.

Modbus bu gün sənayedə standart hesab olunur və əksər müasir idarəetmə sistemlərindən əvvəl yaranmasına baxmayaraq, bu günə qədər ən geniş yayılmış royaltisiz sənaye protokoludur. O, dünyanın müxtəlif zavod və fabriklərində geniş istifadə olunur və uzunömürlü olmasına baxmayaraq, gələcək illər ərzində də aktual sənaye protokolu olaraq qalacağı şübhəsizdir.

 

2019-cu ildə dərc olunmuş orijinal məqalə

Leave a comment

Please note, comments need to be approved before they are published.