Skip to main content

Modbus Overview

အရင်တုန်းကလည်း Modbus အကြောင်းကိုရေးဖူးပါတယ်။ အခုထက်ပြီးတော့ အကျဥ်းချုပ်လောက်ပဲ နားလည်လွယ်မယ့် သဘောနဲ့ပြန်ရေးပေးမှာဖြစ်တဲ့အတွက် အမှားပါရင်ပြောသွားပေးပါလို့ပြောချင်ပါတယ်။
     
    Modbus ကိုအရင်တုန်းက Modicon ကလုပ်ခဲ့တာပါ။ Modicon ကအခု Schneider ရဲ့လက်အောက်ရောက်သွားပါပြီ။ သို့သော်လည်း Modbus ဟာ Non-Profit Organization ဖြစ်တဲ့အတွက် Open Source အနေနဲ့အခုထိရပ်တည်တုန်းပါပဲ။ Modbus ဆိုတာကလည်း Communication Protocol တစ်ခုပါပဲ။ Communication Protocol တစ်ခုဖြစ်တဲ့အတွက် Modbus Support ပေးထားတဲ့ မတူညီတဲ့ ပစ္စည်းတွေကိုတစ်ခုနဲ့တစ်ခုချိတ်ဆက်ဖို့အတွက်အသုံးများကြပါတယ်။ ဥပမာ Siemen PLC ကနေပြီ Delta VFD ကို Modbus နဲ့သုံးသလိုမျိုးပေါ့။

    Modbus မှာ Communication အတွက် Modbus RTU, Modbus ASCII,Modbus TCP/IP, Modbus Plus အစရှိသဖြင့် လိုအပ်ချက်ပေါ် မွမ်းမံပြီး တည်ဆောက်ထားတာတွေလည်းရှိပါတယ်။ Popular အဖြစ်ဆုံးကတော့ Modbus RTU,Modbus ASCII နဲ့ Modbus TCP/IP ကတော့ အသုံးများပါတယ်။

    ဒီနေရာမှာ အသုံးအနှုန်းတစ်ခုသုံးတာနဲ့ Braud Rate အကြောင်း ပြောချင်ပါတယ်။ Master/ Slave ကိုဘယ်အခါမှာသုံးလဲဆိုရင် RTU မှာသုံးကြပါတယ်။ Client/Server ကိုတော့ TCP/IP မှာသုံးကြပါတယ်။ အဲ့တာက အသုံးနှုန်းအပိုင်း, Braud Rateဆိုတာ Data ပေးပို့မှု အမြန်နှုန်းပါ။ သူ့ အကြောင်းမပြောခင် အရင် RTU မှာ RS232,422,485 ဆိုတာရှိတယ်။ RS485 က Braud Rate က Maximum 10MB/s အထိသုံးလို့ရတယ်။ RS 485 ရဲ့ Maximum Length ကလည်း မီတာ ၁၂၀၀ လောက်ကောင်းကောင်း သုံးလို့ရပါတယ်။ Master ကနေ Slave 32 ခုလောက်သုံးလို့ရတယ်။ ဒီထက်ပိုသုံးချင်ရင် Repeater ခံသုံးရမယ်။ အဲ့မီတာ ၁၂၀၀ ကို Braud Rate 10MB/s နဲ့ သုံးလို့အဆင်မပြေပါဘူး။ တကယ်တမ်းပြောရရင် 10MB/s က ၁၀မီတာအတွင်းမှာပဲ ကောင်းကောင်းလုပ်တာပါ။ အဲ့တော့ တကယ်က ၁၂၀၀ မီတာမှာ 9600 လောက်ပဲသုံးလို့ရတာပါ။ ဒါကြောင့် Setting တွေထဲမှာ ဘာကြောင့် Default အနေနဲ့ 9600 ပဲသုံးရလဲဆိုတာနားလည်လောက်ပြီလို့ထင်မိပါတယ်။
     Modbus Protocol မှာ အဓိက အပိုင်းလေးပိုင်းရှိတယ်။ 

•Slave ID
•Function Code
•Data Address နဲ့
• Error Check (ခေါ် ) Sum Check
ဆိုပြီးတော့ ရှိပါတယ်။

   Slave ID ကတော့ Master ကနေခိုင်းဖို့ နာမည်သတ်မှတ်ပေးတာပါပဲ။ သတ်မှတ်ထားတဲ့ Slave နာမည်ကို Master က Request လုပ်ပြီး Slave က Respond လုပ်ရတာပါ။ Slave to Slave အချင်းချင်းပြောလို့မရသလို Slave ကနေ Master ကို Request လုပ်လို့လည်းမရပါဘူး။
    Function Code နဲ့ Data Address ကိုပေါင်းပြီး ဘယ်လိုခေါ်သေးလဲဆိုရင် Program Organization Units (POU) လည်းခေါ်ပါတယ်။ Modbus ရဲ့ Main ပါပဲ။ Function Code က ဘယ် Address ဆိုရင် ဘာလုပ်ရမလဲ Command ပေးတာပါ။ Data Address ကို Memory Area ဆိုပြီးခေါ်ပါသေးတယ်။ Data Address ဆိုတာ Input, Output ရဲ့ Digital,Analog တွေရဲ့ Address တွေပါပဲ။ တချို့ Address တွေက Decimal သုံးတာလည်းရှိသလို Hexa လည်းသုံးတာရှိပါတယ်။ အဲ့တော့ ​ဥပမာပေးရရင်  Slave ID 1 Temperature Sensor ကို 03 Function Code ဆိုတဲ့ Read Holding Register နဲ့ 40001 Address မှာ သုံးပါ ဆိုရင် Temperature Sensor ထဲက တန်ဖိုးတွေကို ဖတ်ခိုင်းတာပါပဲ။

    Error Check ဆိုတာ ကိုယ်သုံးတဲ့ Command တွေကိုပြန်စစ်တာပါပဲ။ တစ်ချို့က အဲ့တာကို CRC လို့လည်းခေါ်ကြပါတယ်။ တကယ်တော့ CRC က RTU အတွက် Error Check တဲ့နည်းတစ်မျိုးပါ။ LRC က ASCII အတွက်ပါပဲ။

Reference : instrumentationtools, Realpars

Comments

Popular posts from this blog

Temperature Range

Article တစ်ခုဝင်ဖတ်မိတာနဲ့ပြောရမယ့်ကိစ္စတစ်ခုဖြစ်နေလို့ရေးပေးလိုက်ပါတယ်။ Article အောက်မှာလည်းနည်းနည်းလေး Complain တတ်တာလေးတွေ့လိုက်ရတယ်။ ပြသာနာကဘာလဲဆိုတော့ Temperature Range ကိစ္စပါ။      အခုသူရေးထားတဲ့ဟာက Industrial လို့ထည့်ပြီးရေးထားတာတွေ့ရပါတယ်။ Data တွေတင်ထားတာကြည့်လိုက်တော့ Operation Temperature Range က 0 to +60°C အထိပဲရှိတာတွေ့ရတယ်။ ဒါကထုတ်လုပ်တဲ့ ကုမ္ပဏီကသတ်မှတ်ထားတဲ့ Standard တွေလိုအပ်နေတာလားဆိုတာကတော့စဉ်းစားစရာပါပဲ။ တကယ်ဆို ဒီ Level ဟာ Commercial အဆင့်သက်သက်သာပဲရှိတာပါ။ Company တွေမှာ သတ်မှတ်ထားတဲ့ Temperature Range ဟာတစ်ခုနဲ့တစ်ခုမတူဘူးဆိုတာလက်ခံပေမယ့် အခုလိုလုပ်တာက ထင်ထားတာထက်အတော်ကွာဟနေပြီး နှစ်သီးစားလုပ်မယ့်ပုံစံမျိုးပေါက်နေပါတယ်  အောက်မှာယေဘုယျအားဖြင့် Semiconductor Device တွေမှာရှိသင့်တဲ့ Temp Range ကိုရေးပေးထားပါတယ်။ Commercial   (0 to  +70°C) Industrial  (-40 to +85°C) Military  (-55 to +125°C)

Modbus Function Command Format (1)

    ASCII သို့မဟုတ် RTU Mode ထဲက မည်သည့် Modbus Data ဘောင်တိုင်းမဆို သူတို့သတ်မှတ်ထားတဲ့ Data ကတော့ရှိပါတယ်။     Modbus Data Frame တစ်ခုစီကို 8bitd(RTU) တွေနဲ့တည်ဆောက်ထားတာကြောင့် အများအားဖြင့် စာသားတစ်ခုချင်းစီကို Bytes (Hexadecimal တစ်လုံး နှစ်လုံး) အဖြစ်ကိုယ်စားပြုပါတယ်။     ဥပမာအားဖြင့် 1100100101011011 ကဲ့သို့ Modbus Data နဲ့ 16-Bit စကားလုံးကို ပုံမှန်အားဖြင့် C95B နဲ့သတ်မှတ်ပြီး High ကို C9 နဲ့ Low ကို 5B ဆိုပြီးခွဲထားပါတယ်။     Modbus Master Device ကနေပေးပို့တဲ့ "Query" Message ဟာ Slave Device ဆီကို ပို့ပြီး သက်ဆိုင်ရာ "Response" Message နဲ့ Queried ကနေ Master Device ကိုပြန်ပို့ပေးပြီးအလုပ်လုပ်ပါတယ်။    အောက်‌ကပြထားတဲ့ ပုံတစ်ပုံချင်းစီကနေ Function Code တစ်ခုချင်းစီဘယ်လိုအလုပ်လုပ်ရ‌သလဲဆိုတာပြန်ရေးပေးထားပါတယ်။ Modbus Function Code 01- Read Coil ==============================     ဒီ Modbus Function ဟာ Slave Device နဲ့အတူသူ့ရဲ့ Discrete Outputs ("Coils") ကို ဖတ်ပြီးတော့ အဲ့ဒီ Status တွေကို Data နဲ့ပြန်ပေးပါတယ်။     ဒီ Function အတွက်သတ်မှတ်ထာ

Description of RS-485

    RS-485 ဟာ Industrial တွေမှာအသုံးများတဲ့ Communication တစ်ခုဖြစ်ပါတယ်။ RS-485 ကိုနောက်တစ်နည်း EIA/TIA-485 လို့လည်းခေါ်ဝေါ်သေးပါတယ်။ USB နဲ့ Ethernet တို့ထက်စာရင် RS-485 ဟာ Industrial တွေ‌မှာအသုံးများပါတယ်။ အကြောင်းမှာတော့ RS-485 ဟာ သိပ် Complex မဖြစ်သလိုဈေးလဲသိပ်မကြီးတဲ့အတွက်ကြောင့်ပါ။ သို့သော်လည်း Low Speed Data Communication လုပ်ငန်းစဉ်တွေမှာပဲသုံးလို့အဆင်ပြေမှာပါ။     RS-485 Connection ကို အများအားဖြင့် Two Wires သို့မဟုတ် Three Wires နဲ့လည်းသုံးကြ‌ပါသေးတယ်။ RS-485 မှာ Contact သုံးခုရှိပါတယ်။ အဲ့တာကတော့ Data A , Data B နဲ့ GND လို့ခေါ်ပြီး နောက်တစ်နည်းအခေါ်အဝေါ်ကတော့ Data Wire, Inverted Data Wire နဲ့ Zero Wire သို့မဟုတ် Ground ဆိုပြီးတော့လည်းခေါ်ကြပါသေးတယ်။     သူရဲ့အဓိက Design ကတော့ ရိုးရှင်းပါတယ်။ Data Signal တွေကို Wire ကြိုးနှစ်ခုကနေ ဖြတ်သန်းစေပြီးတော့ Signal တွေကို အပြန်အလှန်ပို့ဆောင်ပေးပါတယ်။ RS-485 သည် Data ပို့တဲ့အခါ Data တွေကိုအချင်းချင်း Collided ဖြစ်မိတာမျိုးကိုရှောင်ရှားပေးနိုင်ပါတယ်။ဥပမာ ကြိုးတစ်ကြိုးထဲကနေ Signal ကိုအပြန်အလှန်ပို့နေရင် Device