Leave Your Message

موڊبس ڪميونيڪيشن پروٽوڪول پيغامن جي تجزيو تي تفصيلي سبق

2026-06-24

    I. موڊبس پروٽوڪول جو جائزو

    موڊبس هڪ سيريل ڪميونيڪيشن پروٽوڪول آهي جيڪو موڊيڪون (هاڻي شنائيڊر اليڪٽرڪ) پاران 1979 ۾ پروگراميبل لاجڪ ڪنٽرولرز (PLCs) جي وچ ۾ رابطي لاءِ تيار ڪيو ويو هو. ارتقا جي چئن ڏهاڪن کان وڌيڪ عرصي دوران، اهو صنعتي آٽوميشن جي ميدان ۾ ڊي فيڪٽو معياري ڪميونيڪيشن پروٽوڪول مان هڪ بڻجي چڪو آهي.

    اهم خاصيتون:

    • ماسٽر/غلام فن تعمير: هڪ واحد ماسٽر هوسٽ ڪيترن ئي غلامن سان، جتي ماسٽر درخواستون شروع ڪري ٿو ۽ غلام غير فعال طور تي جواب ڏين ٿا.
    • اوپن پروٽوڪول: ڪا به لائسنسنگ فيس ناهي؛ ڪو به ٺاهيندڙ ان کي مفت ۾ لاڳو ڪري سگهي ٿو.
    • گھڻن ٽرانسميشن موڊس: RTU (بائنري)، ASCII (ٽيڪسٽ)، ٽي سي پي (ايٿرنيٽ).
    • مختلف جسماني تہن کي سپورٽ ڪري ٿو: RS485 (سڀ کان عام)، RS232، TCP/IP (ايٿرنيٽ).
    • صاف ڊيٽا ماڊل: چار شيون قسم - ڪوئلز، ڊسڪريٽ ان پٽ، ان پٽ رجسٽر، ۽ هولڊ رجسٽر.

    1.1 ٽن پروٽوڪول مختلف قسمن جو مقابلو

    1-1.jpg

    1.2 پروٽوڪول جي وضاحت جون پابنديون

    1-2.jpg

    II.Modbus ڊيٽا ماڊل ۽ ايڊريس رولز

    2.1 آپريشنل شين جا چار قسم

    2-1.jpg

    2.2 پتي جي نمائندگي (نازڪ!)

    مختلف ٺاهيندڙ مختلف انڪوڊنگ اسڪيمون استعمال ڪن ٿا موڊبس ايڊريس، جيڪو عملي عمل درآمد ۾ سڀ کان عام نقصان آهي:

    2-2.jpg

    پتي جي اڳياڙي معنيٰ (صنعت جي معياري نمائندگي):

    • 0 سان شروع ڪندي: پروٽوڪول ايڊريس (هيڪساڊيسيمل)، مثال طور، 0x0000
    • 4 xxxx: رجسٽر برقرار رکو؛ مثال طور، 40001 برقرار رجسٽر 0 جي پروٽوڪول ايڊريس کي ظاهر ڪري ٿو.
    • 3xxxx: ان پٽ رجسٽر؛ مثال طور، 30001 ان پٽ رجسٽر 0 جي پروٽوڪول ايڊريس کي ظاهر ڪري ٿو. ·
    • 0xxxx: ڪوئل؛ مثال طور، 00001 ڪوئل 0 جي پروٽوڪول ايڊريس کي ظاهر ڪري ٿو. ·
    • 1xxxx: ڊسڪريٽ ان پٽ؛ مثال طور، 10001 ڊسڪريٽ ان پٽ 0 جي پروٽوڪول ايڊريس کي ظاهر ڪري ٿو.

    2.3 بگ ڊيٽا پروسيسنگ قاعدا

    1.1. هر آپريشن ۾ پڙهڻ وارن رجسٽرن جو وڌ ۾ وڌ تعداد: 125 (فنڪشن ڪوڊ 0x03/0x04)

    2.2. في آپريشن پڙهڻ لاءِ ڪوئلز/ڊسڪريٽ ان پٽ جو وڌ ۾ وڌ تعداد: 2000 (فنڪشن ڪوڊ 0x01/0x02)

    3.3. هر آپريشن تي لکيل رجسٽرن جو وڌ ۾ وڌ تعداد: 123 (فنڪشن ڪوڊ 0x10)

    4.4. في آپريشن ۾ لکيل ڪوئلن جو وڌ ۾ وڌ تعداد: 1968 (فنڪشن ڪوڊ 0x0F)

    5.5. انهن حدن کان وڌيڪ ڪرڻ لاءِ بلاڪ تي ٻڌل پڙهڻ/لکڻ جي ضرورت آهي؛ بس تڪرار کان بچڻ لاءِ پولنگ جي وقفن کي يقيني بڻايو وڃي.

    III. موڊبس آر ٽي يو پيغامن جو تفصيلي تجزيو

    آر ٽي يو (ريموٽ ٽرمينل يونٽ) سڀ کان وڌيڪ استعمال ٿيندڙ آهي موڊبس ٽرانسميشن پروٽوڪول صنعتي ايپليڪيشنن ۾، RS485/RS232 سيريل انٽرفيس سان اعلي ٽرانسميشن ڪارڪردگي ۽ مطابقت لاءِ بائنري انڪوڊنگ کي استعمال ڪندي. فريم جي حدن کي فرق ڪرڻ لاءِ فريم جي وچ ۾ گھٽ ۾ گھٽ 3.5 ڪردار وقت جو خاموش وقفو گهربل آهي.

    3.1 آر ٽي يو جو مڪمل فريم اسٽرڪچر

    آر ٽي يو ۾ هڪ مڪمل هدايت ڊيٽا فريم هيٺ ڏنل چار حصن تي مشتمل آهي:

    3-1.jpg

    3.2 RTU پيغام جو مثال - هولڊنگ رجسٽر پڙهو (فنڪشن ڪوڊ 0x03)

    [درخواست جو پيغام] ماسٽر غلام 1 جي هولڊنگ رجسٽرن کي پڙهي ٿو (شروعاتي پتو 0x0001، 3 رجسٽر پڙهڻ):

    01 03 00 01 00 03 54 0B

    درخواست جي پيغام جو بائيٽ بائيٽ تجزيو:

    3-2.jpg

    [جوابي پيغام] غلام اسٽيشن 1 ٽن رجسٽرن مان ڊيٽا واپس ڪري ٿو: 01,03,06,02,2B,00,00,00,64, D5, 87

    جوابي پيغام جي بائيٽ بائيٽ پارسنگ:

    3-2-1.jpg

    3.3 معياري فنڪشن ڪوڊس جي تفصيلي وضاحت

    3-3.jpg

    3.4 هر فنڪشن ڪوڊ ميسيج فارميٽ جي تفصيلي وضاحت

    (1) ڪوئل پڙهو / ڊسڪريٽ ان پٽ پڙهو (فنڪشن ڪوڊ 0x01/0x02)

    [درخواست فريم فارميٽ] (ڪل 8 بائيٽ)

    3-4-1.jpg

    [جوابي فريم فارميٽ]

    3-4-2.jpg

    [پوزيشن تجزيي جي مثال] جوابي ڊيٽا 3 بائيٽس تي مشتمل آهي (ڪوئلز 20-38):

    3-4-3.jpg

    (2) هولڊنگ رجسٽر پڙهو/ان پٽ رجسٽر پڙهو (فنڪشن ڪوڊ 0x03/0x04)

    [درخواست فريم فارميٽ] (ڪل 8 بائيٽ)

    3-4-4.jpg

    [جوابي فريم فارميٽ]

    3-4-5.jpg

    (3) هڪ سنگل هولڊ رجسٽر لکو (فنڪشن ڪوڊ 0x06)

    [درخواست فريم فارميٽ] (ڪل 8 بائيٽ)

    3-4-6.jpg

    [جوابي فريم] درخواست فريم جي هڪجهڙائي، اهو ڪامياب لکڻ جي تصديق ڪري ٿو.

    (4) ڪيترائي برقرار رجسٽر لکو (فنڪشن ڪوڊ 0x10)

    [درخواست فريم فارميٽ]

    3-4-7.jpg

    [جواب فريم فارميٽ] (ڪل 8 بائيٽ): [پتو] [0x10] [شروعاتي پتو (2 بائيٽ) [نمبر (2 بائيٽ)] [سي آر سي (2 بائيٽ)]

    (5) هڪ سنگل ڪوئل لکو (فنڪشن ڪوڊ: 0x05)

    [درخواست فريم فارميٽ] (ڪل 8 بائيٽ): لکڻ لاءِ صرف ٻه صحيح قدر سپورٽ ٿيل آهن:

    • 0xFF00 - ڪوئل آن تي سيٽ ڪيو ويو (بند ٿيل)
    • 0x0000 - ڪوئل بند تي سيٽ ڪيو ويو (کليل)

    3-4-8.jpg

    [جوابي فريم] درخواست فريم جي هڪجهڙائي، اهو ڪامياب لکڻ جي تصديق ڪري ٿو.

    IV. موڊبس ٽي سي پي پيغامن جو تفصيلي تجزيو

    موڊبس ٽي سي پي ايٿرنيٽ ٽي سي پي/آئي پي پروٽوڪول تي ڪم ڪري ٿو، پورٽ 502 کي ڊفالٽ طور استعمال ڪندي. آر ٽي يو موڊ جي برعڪس، موڊبس ٽي سي پي پيغام جي حدن کي بيان ڪرڻ لاءِ ايم بي اي پي (موڊبس ايپليڪيشن پروٽوڪول) هيڊر استعمال ڪري ٿو ۽ ان کي سي آر سي تصديق جي ضرورت ناهي (ان جي بدران ٽي سي پي پروٽوڪول جي بلٽ ان ايرر چيڪنگ ميڪانيزم تي ڀروسو ڪندي).

    4.1 MBAP هيڊر جي جوڙجڪ (7 بائيٽ، سڀني TCP پيڪٽس ۾ شامل)

    4-1.jpg

    4.2 موڊبس ٽي سي پي پيغام جو مثال

    [پيغام جي درخواست] غلام 1 جي هولڊ رجسٽر کي پڙهڻ (شروعاتي پتو 0x0000، 3 قدر پڙهڻ):

    00 01 00 00 00 06 01 03 00 00 00 03

    درخواست جي پيغام جو فيلڊ بائي فيلڊ تجزيو:

    4-2.jpg

    [جوابي پيغام] غلام ٽن رجسٽرن مان ڊيٽا واپس ڪري ٿو:

    00 01 00 00 00 09 01 03 06 02 2 بي 00 00 00 64

    جوابي پيغام جي فيلڊ بائي فيلڊ پارسنگ:

    4-3.jpg

    4.3 RTU ۽ TCP پيڪٽ جي جوڙجڪ جي وچ ۾ بنيادي فرق

    4-3-0.jpg

    CRC-16 تصديق جي تفصيلي وضاحت

    الگورٿم سي آر سي (سائيڪلڪ ريڊنڊنسي چيڪ) موڊبس آر ٽي يوز جو فريم تصديق جو طريقو آهي، جيڪو پيغام جي منتقلي دوران غلطين کي ڳولڻ لاءِ ٺاهيو ويو آهي. سي آر سي-16 پيدا ڪندڙ پولينوميل x¹⁶ + x¹⁵ + x² + 1 (0x8005 جي برابر) آهي؛ عملي طور تي، الٽي پولينوميل 0xA001 استعمال ڪيو ويندو آهي.
    5.1 CRC-16 حساب جا مرحلا

    6.1. 16-بٽ CRC رجسٽر کي 0xFFFF ۾ شروع ڪريو.

    7.2. پهرين بائيٽ ۽ CRC رجسٽر جي گهٽ 8 بٽس جي وچ ۾ هڪ XOR آپريشن ڪريو؛ نتيجو واپس CRC رجسٽر جي گهٽ 8 بٽس ۾ محفوظ ڪريو.

    8.3. سي آر سي رجسٽر کي 1 بٽ ساڄي طرف منتقل ڪريو، اعليٰ بٽس کي 0 سان ڀريو؛ شفٽ ٿيل بٽ (LSB) جو تعين ڪريو:

    9.4. جيڪڏهن شفٽ ٿيل بٽ 0 آهي: صرف 1 بٽ ساڄي طرف منتقل ٿيڻ جاري رکو.

    10.5. جيڪڏهن شفٽ ٿيل بٽ 1 آهي: CRC رجسٽر ۽ 0xA001 جي وچ ۾ هڪ XOR آپريشن ڪريو.

    11.6. موجوده بائيٽ جي سڀني 8 بٽس جي پروسيسنگ مڪمل ٿيڻ تائين قدم 3 ورجايو.

    12.7. ايندڙ بائيٽ وٺو ۽ قدم 2-6 ورجايو جيستائين سڀئي بائيٽ پروسيس نه ٿين 13.8. سڀني بائيٽ پروسيسنگ مڪمل ڪرڻ کان پوءِ، آخري چيڪسم حاصل ڪرڻ لاءِ CRC رجسٽر جي هاءِ ۽ لو بائيٽس کي مٽايو.

    14.9. پيغام جي آخر ۾ آخري چيڪسم شامل ڪريو، پهرين گهٽ بائيٽ ۽ آخر ۾ هاءِ بائيٽ سان.

    5.2 CRC-16 حساب ڪتاب جو مثال (پائٿون ڪوڊ)

    هيٺ ڏنل پٿون فنڪشن سڌو سنئون استعمال ڪري سگهجي ٿو CRC-16 چيڪسم کي Modbus RTU لاءِ ڳڻڻ لاءِ:

    def modbus_crc16(ڊيٽا: بائيٽس) -> بائيٽس:
    """ڳڻپ Modbus RTU CRC-16 چيڪ ڪوڊ (پهرين ٻن بائيٽس کي گهٽ ۾ گهٽ اهم بٽ سان واپس ڪريو)"""
    سي آر سي = 0x ايف ايف ايف ايف
    ڊيٽا ۾ بائيٽ لاءِ:
    crc ^= بائيٽ
    _ لاءِ رينج (8) ۾:
    جيڪڏهن crc ۽ 0x0001:
    سي آر سي = (سي آر سي >> 1) ^ 0xA001
    ٻيو:
    سي آر سي >>= 1
    # پهرين گهٽ بائيٽ واپس ڪريو، ان کان پوءِ هاءِ بائيٽ
    واپسي بائيٽس ([crc & 0xFF, (crc >> 8) & 0xFF])
    # عام مثال ڏيو: ڳڻپ 01 03 00 01 00 03 CRC
    فريم = بائيٽس ([0x01، 0x03، 0x00، 0x01، 0x00، 0x03])
    سي آر سي = موڊ بس_سي آر سي 16 (فريم)
    پرنٽ (crc.hex()) # برآمد: 540b ( 0x54 0x0B )

    5.3 پيغام ۾ سي آر سي چيڪ جي جڳهه

    مثال طور درخواست پيغام 01 03 00 01 00 03 54 0B استعمال ڪندي:

    5-3.jpg

    وصول ڪندڙ پهرين 6 بائيٽس جي CRC ويليو کي ٻيهر ڳڻپ ڪري ٿو ۽ ان جو مقابلو پيڪٽ جي آخري 2 بائيٽس سان ڪري ٿو. جيڪڏهن اهي مختلف ٿين ٿا، ته ٽرانسميشن جي غلطي معلوم ٿئي ٿي ۽ ڪو به جواب نه ڏنو ويندو آهي.

    Ⅵ. استثنا سنڀالڻ ۽ غلطي ڪوڊ تفصيل

    جڏهن ڪو غلام اسٽيشن ماسٽر اسٽيشن کان درخواست تي عمل نٿو ڪري سگهي (مثال طور، غير معاون فنڪشن ڪوڊ يا ايڊريس جي حد کان ٻاهر)، اهو هڪ استثنا جواب فريم واپس ڪري ٿو. استثنا جواب فنڪشن ڪوڊ = اصل فنڪشن ڪوڊ + 0x80 آهي (يعني، سڀ کان وڌيڪ بٽ 1 تي سيٽ ڪيو ويو آهي).

    6.1 غير معمولي جوابي فارميٽ (RTU)

    [غلام جو پتو][فنڪشن ڪوڊ | 0x80][غير معمولي ڪوڊ][CRC-16]

    6-1.jpg

    6.2 معياري استثنا ڪوڊ جو مطلب

    6-2.jpg

    6.3 غير معمولي جواب جي مثال

    [منظرنامو] ماسٽر اسٽيشن غلام اسٽيشن 1 کان هڪ غلط پتي تي رجسٽر پڙهڻ جي درخواست ڪري ٿو، ۽ غلام اسٽيشن هڪ استثنا واپس ڪري ٿو:

    درخواست: 01 03 00 20 00 01 XX XX (پتي 0x0020 تي پڙهڻ جو رجسٽر)؛

    استثنا جواب: 01 83 02 C0 F1؛

    استثنا جي جواب جو بائيٽ بائيٽ بريڪ ڊائون:

    6-3.jpg

    VI. موڊبس ASCII پيغامن جو تعارف

    موڊبس ASCII موڊ سڀني ڊيٽا بائيٽس کي ٻن ASCII اکرن جي طور تي انڪوڊ ڪري ٿو (مثال طور، 0x0F کي "0F" طور انڪوڊ ڪيو ويو آهي). جڏهن ته تمام گهڻو پڙهڻ لائق آهي، اهو گهٽ ٽرانسميشن ڪارڪردگي پيش ڪري ٿو ۽ بنيادي طور تي ڊيبگنگ مقصدن لاءِ استعمال ٿيندو آهي.

    7.1ASCII فريم جي جوڙجڪ

    مڪمل ASCII فريم فارميٽ:

    سي آر ايل ايف

    7-1.jpg

    7.2LRC تصديق الگورتھم

    LRC (Longitudinal Redundancy Check) جي حساب لاءِ قدم:

    15.1. ايڊريس فيلڊ، فنڪشن ڪوڊ، ۽ ڊيٽا فيلڊ جي سڀني بائيٽس تي بائنري سميشن انجام ڏيو (شروع ۽ آخر جي نشانن کان سواءِ).

    16.2. ڪيري بِٽس کي نظرانداز ڪريو (جيڪڏهن نتيجو 255 کان وڌيڪ هجي، ته پاڻمرادو چوڌاري لپيٽيو ۽ صرف هيٺيان 8 بِٽس برقرار رکو).

    17.3. سميشن جي نتيجي جي ماڊيولو 1 (يعني، 0xFF - سم) جي ڪمپليمينٽ جو حساب ڪريو.

    18.4. آخري LRC چيڪ ڪوڊ (1 بائيٽ) حاصل ڪرڻ لاءِ ڪمپليمينٽ کي 1 سان وڌايو.

    19.5. LRC چيڪ ڪوڊ کي ٻن ASCII اکرن ۾ انڪوڊ ڪريو ۽ انهن کي پيغام جي آخر ۾ شامل ڪريو.

    VIII. عملي صلاحون ۽ عام مسئلا

    8.1 بائيٽ آرڊر (بگ-اينڊيئن/مائڪرو-اينڊيئن) مسئلا

    جي موڊبس معيار 16-بٽ يا وڌيڪ ڊيٽا منتقل ڪرڻ لاءِ بگ-اينڊيئن آرڊر (پهرين هاءِ آرڊر بائيٽ سان) استعمال ڪندو آهي. ڪجهه ڊوائيسز (مثال طور، ڪجهه ARM تي ٻڌل ڊوائيسز) مائڪرو-اينڊيئن آرڊر استعمال ڪندا آهن؛ عددي پارسنگ غلطين کان بچڻ لاءِ بائيٽ آرڊر ڪنورشن جي ضرورت آهي.

    8-1.jpg

    8.2 رجسٽريشن يونٽ جي سائيز جي حد (PDU ≤ 253 بائيٽ)

    8-2.jpg

    8.3 ڪميونيڪيشن ٽائيم آئوٽ ۽ ٻيهر ڪوشش ڪنفگريشن سفارشون

    تجويز ڪيل ترتيبون:

    • پولنگ جو وقفو: غلام جي وڌ ۾ وڌ جوابي وقت کان 2-3 ڀيرا مقرر ڪيو ويو آهي (عام طور تي 100-500 ايم ايس) • وقت ختم ٿيڻ جو عرصو: 1000-3000 ايم ايس جي سفارش ڪيل حد، غلام جي جوابي رفتار جي بنياد تي ترتيب ڏئي سگهجي ٿو.
    • ٻيهر ڪوششون: سفارش ڪيل حد 3؛ ناڪام ٿيڻ جي صورت ۾ الارم شروع ڪريو.
    • ملٽي-سليو پولنگ: بس تڪرار کي روڪڻ لاءِ غلامن ۾ مختلف پولنگ وقفن کي شيڊول ڪريو • بائيٽ ٽائيم آئوٽ: آر ٽي يو موڊ ۾، 1.5 ڪردار وقت کان وڌيڪ ڪردار وقفو فريم غلطي سمجهيو ويندو آهي.

    8.4 تجويز ڪيل ڊي بگنگ ٽولز

    ضميمو: عام پيغام تڪڙو حوالو جدول

    ڪوئل پڙهو (فنڪشن ڪوڊ 0x01)

    [درخواست]: غلام اسٽيشن 1 کان شروعاتي پتو 0 (ڪوئل 1) تي پڙهو، 8 ڪوئل اسٽيٽس پيغام حاصل ڪريو: 01 01 00 00 00 08 3D CC

    [جواب]: اٺ ڪوئل اسٽيٽس: 0x55 (01010101B)؛

    پيغام: 01 01 01 55 94 36

     

    هڪ سنگل ڪوئل تي لکو (فنڪشن ڪوڊ 0x05)

    [درخواست] ايڊريس 0 تي ڪوئل کي ON تي سيٽ ڪريو (ويل 0xFF00 لکو):

    پيغام: 01 05 00 00 ايف ايف 00 8 سي 3 اي

    [درخواست] ايڊريس 0 تي ڪوئل کي آف تي سيٽ ڪريو (ويل 0x0000 لکو):

    پيغام: 01 05 00 00 00 00 CD CA

    [جواب] درخواست جي فريم سان ملندڙ جلندڙ

     

    هڪ رجسٽر ۾ لکو (فنڪشن ڪوڊ 0x06):

    [درخواست] ايڊريس 0 تي رجسٽر ڪرڻ لاءِ قدر 0x1234 لکو.

    پيغام: 01 06 00 00 12 34 XX XX (XX CRC آهي، حساب ڪرڻو آهي).

    [جواب] درخواست جي فريم سان ملندڙ جلندڙ.

     

    گھڻن رجسٽرن ۾ لکو (فنڪشن ڪوڊ 0x10)

    [درخواست]: پتو 0 کان شروع ٿيندڙ ٻن رجسٽرن تي لکو جن جي قدر ترتيب وار 0x1234 ۽ 0xABCD هجن.

    پيغام: 01 10 00 00 00 02 04 12 34 AB CD XX XX

    [جواب]: شروعاتي پتو ۽ لکيل رجسٽرن جو تعداد واپس ڪريو.

    پيغام: 01 10 00 00 00 02 41 C8

     

    ان پٽ رجسٽر پڙهو (فنڪشن ڪوڊ 0x04)

    [درخواست]: ٻانهو 1 کان شروعاتي پتو 0 تي پڙهو، ٻه ان پٽ رجسٽر پڙهو

    پيغام: 01 04 00 00 00 02 71 سي بي

    [جواب]: ٻه ان پٽ رجسٽر ويليوز واپس ڪريو.

    پيغام: 01 04 04 00 64 01 90 XX XX (واپسي جا قدر: 100 ۽ 400)