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

Indirect Addressing

Indirect Addressing      တကယ်တမ်း​တော့ ဒီစာကို​ရေးဖြစ်တာကလည်း ဆရာရဲ့ Project Problem တစ်ခုချ​ပေးပြီ ​ဖြေရှင်းရင်းနဲ့ ​တွေ့လာတာပါ။ အဲ့​တော့ အဲ့ဒီဟာက ဘယ်​နေရာမှာ ဘယ်လိုသုံးတာလဲ,ဘာ​တွေသုံးတယ်,ဘယ်လို Program နဲ့​ရေးတာလဲဆိုတာ အဓိကထားပြီး​တော့ ​ပြောပြ​ပေးသွားမှာမယ်။ သူ့အ​ကြောင်းသိဖို့အရင် Index Register ကိုအရင်​ပြောပါမယ်။ What is Index Register?     Index Register ဆိုတာက Process Register လို့လဲ​ခေါ်ပြီး​တော့ Program ကို Operand ​တွေရဲ့ Address ကို Program က Run ​နေတဲ့အချိန်မှာ Modify လုပ်တာပါ၊ PLC မှာရှိတဲ့ Register ​တွေက PLC ထုတ်တဲ့ Company အမျိုးအစား​ပေါ်မူတည်ပြီး​တော့ ​သုံးစွဲတာမတူကြ​ပေမယ့် သ​ဘောတရားက​တော့အတူတူပါပဲ။ အခု ဥပမာ​ပေးမှာက Delta PLC နဲ့ ဥပမာ​ပေးပါမယ်။     Delta မှာရှိတဲ့ Index Register က​တော့ E နဲ့ F ဆိုပြီးသတ်မှတ်ထားပါတယ်။ E နဲ့ F ကိုတစ်လုံးချင်း သုံးရင်​တော့ 16 bit အ​နေနဲ့သုံးလို့ရပါတယ်။ Eနဲ့F ဟာတွဲခဲ့ရင်​တော့ 32 bit ဖြစ်သွားပါပြီ။ E ဟာ Lower 32 bit ဖြစ်လာပြီး​တော့ F ဟာ Higher 32 bit ဖြစ်လာပါတယ်။     ဒုတိယပုံက...

IPv4 Vs IPv6 - What's the difference between IP Addresses

ကျွန်တော်တို့ IOT Project သို့မဟုတ် PLC တို့ HMIတို့ကို Ethernet နဲ့ချိတ်တဲ့အခါမှာ IP Address တို့ Subnet Mask တို့သတ်မှတ်ရတာတို့ကိုတွေ့ရမှာပါ။အခုကတော့ IP Addressအကြောင်းကိုမှ IPv4 နဲ့ IPv6 အကြောင်းကိုရေးမှာပါ။           IP Address ဆိုတာကတော့ ကျွန်တော်တို့ရဲ့အိမ်နံပါတ်လိုသဘောမျိုးလုပ်ထားပေးတဲ့ Internet Protocol တစ်ခုပါပဲ။ အိမ်တိုင်းအိမ်တိုင်းမှာသူရဲ့သက်ဆိုင်တဲ့နေရာလိပ်စာတွေရှိကြသလိုပဲ စက်တိုင်းမှာလည်းသူရဲ့ သက်ဆိုင်တဲ့ IP Address တွေရှိကြပါတယ်။ ဒါကတော့ IP Address အကြောင်းကိုရှင်းပြတဲ့ရိုးရှင်းတဲ့ ဥပမာတစ်ခုပါ။ ဒီမှာအဓိကထားပြီးရှင်းပြသွားမှာကတော့ IPv4 နဲ့ IPv6 ကိုရှင်းပြသွားမှာပါ။      What is IPv4 : simple meaning & features guide     ဒီ IPv4 မှာဘာတွေပါလဲဆိုတော့ Set Numbers လေးခုပါဝင်ပါတယ်။ ယေဘုယျအားဖြင့် ဘယ်လိုပုံစံနဲ့ရေးကြသလဲဆိုရင် 106.102.77.43 (ဒါကဥပမာပုံစံပါ။) လိုပုံစံမျိုးဖြစ်ပြီးတော့ မတူညီတဲ့ ကိန်းဂဏန်းလေးခုကို Cover လုပ်ပေးထားပါတယ်။ IPv4 ဘာကြောင့်ဖြစ်လာရလည်းဆိုရင် လွန်ခဲ့တဲ့ 1980 ဝန်းကျင်ကာလတွေမှာ I...

PLC Scan Time Problem

PLC Scan Time Problem     ဒီ Post ကို အရင် account အ​ဟောင်းမှာတုန်းက​တော့တင်ဖူးတယ်။ ဒါ​ပေမယ့် အခုကပြန်ပြီး နားလည်လွယ်မယ့်ပုံစံမျိုးနဲ့ပဲကျွန်​တော်​ရေး​ပေးပါမယ်။     ကျွန်​တော်တို့  PLC project ​တွေမှာဆိုရင် Programming ကို Ladder Diagram နဲ့​ရေးကြတာများပါတယ်။ တခြား Structure Text တို့ Function  Block တို့ Sequence တို့နဲ့လည်း​ရေးလို့ရပါတယ်။သို့​သော်လည်း ဒီကိစ္စမှာ​တော့ Ladder Diagram နဲ့ ဥပမာကိုတင်ပြသွားပါမယ်။      Scan Time ဆိုတာ ဘာလဲအရင် အကျဥ်းချုံပြီး​ပြောပါမယ်။ ပထမပုံက Ladder Diagram လိုပုံစံမျိုး​ရေးထားတယ်ဆိုပါစို့။ Program ရဲ့ ထိပ်ဆုံးအပိုင်းက​နေ Program ရဲ့ အဆုံးအထိ PLC က Scan ဖတ်ပါတယ်။ Scan ဖတ်နှုန်းဟာလည်း ​ရေးတဲ့ Program ​ပေါ်မူတည်ပြီး တစ်စက္ကန့်ကို Scan ဘယ်နှကြိမ်ဖတ်လည်းဆိုတာ​တွေရှိပါတယ်။      ကျွန်​တော်တို့ PLC Ladder Diagram မှာ Program ​တွေ​ရေးတယ်ဆိုရင် သာမန် Line 20 ခု, 30 ခု​လောက်​တော့ ပြသာနာမရှိ​လောက်ပါဘူး။ သို့​သော်လည်း Line အခု 20တို့ 30တို့မှာ High Counter ​တွေတို့ တခြား API ​တွေ အများကြီး​တွေသုံး...