အရင်တုန်းကတော့ Modbus Overview ဆိုတဲ့ Post တစ်ခုနဲ့ရေးခဲ့ဖူးပါတယ်။ အခုကတော့ Modbus ASCII အကြောင်းကိုပဲ အဓိကထားပြောပြပါမယ်။နောက်ပိုင်းမှာ ဘာကြောင့် ASCII ကို RTU ထက်စာရင် သုံးတာနည်းလည်းဆိုတာလည်းဆိုတာ ရေးပေးထားပါတယ်။
ကျွန်တော်တို့ သုံးနေကျဖြစ်တဲ့ Modbus ဟာ Communication Protocol တစ်ခုဖြစ်ပြီးတော့ PLC ထဲမှာလည်းသုံးနေကြတာကို တွေ့ရပါလိမ့်မယ်။ အခုခေတ်မှာတော့ PLC အပြင် PID Controller တွေ Sensor တွေ များစွာသော် Electronic Instrument တွေ VFD အစရှိသဖြင့် ပစ္စည်းတွေမှာလည်းအသုံးပြုလာကြပါတယ်။
Modbus ဆိုတာ Master-Slave Mode တွေမှာ အလုပ်လုပ်ကြပါတယ်။ နားလည်လွယ်အောင်ပြောရရင် PLC ကနေ VFD ရဲ့ Frequency ကို Control လုပ်တယ်ဆိုပါတော့။ PLC ဟာ Master ဖြစ်ပြီးတော့ VFD ဟာ Slave ဖြစ်ပါတယ်။ PLC ဟာ VFD ကို Control လုပ်တာဖြစ်တဲ့အတွက် Master က Slave ကို လှမ်းခိုင်းတာပါပဲ။ Master က Slave ရဲ့ တန်ဖိုးအခြေအနေကို Read လုပ်ရုံသာမက Write ပါလုပ်လို့ရပါတယ်။
Modbus ဟာ Serial Communication ရဲ့ Hardware Layer သုံးခုအပေါ်မှာ အလုပ်လုပ်ပါတယ်။
- RS 232
- RS 422
- RS 485 တို့ဖြစ်ကြပါတယ်။
အဲ့ဒီ Hardware Layer ပေါ်မှာပဲ အများအားဖြင့် Transmission Method နှစ်မျိုးနဲ့ Modbus ဟာအလုပ်လုပ်ပါတယ်။
- RTU
- ASCII ဖြစ်ပါတယ်။
သို့သော် ဒီ Transmission Method အပေါ်ကပဲ ပြုပြင်ထားတဲ့ တခြားများစွာသော် Communication ပုံစံတွေရှိတယ်ဆိုတာကိုလည်း မှတ်ထားစေချင်ပါတယ်။
ကျွန်တော်တို့ Modbus ASCII ကို မစခင် သူ့ရဲ့ Basic Data Frame Structure ကို အရင်ဦးဆုံးပြောပါမယ်။ Frame ရဲ့ စစချင်းမှာ Address Field နဲ့စပါတယ်။ Address Field ဆိုတာက Slave ID ပါပဲ။ ပြီးရင် Function Code လာပါတယ်။ Read မလား Write မလား ဆိုပြီးတော့ သတ်မှတ်ထားတဲ့ Number တွေကိုထည့်ပေးရပါတယ်။ နောက်တစ်ခုက Data Field ပါ။ ဘယ် Data ထဲမှာ တန်ဖိုးတွေသွင်းမလဲ အစရှိသဖြင့်သုံးပါတယ်။ နောက်ဆုံးကတော့ CRC or Error Checking Field ဖြစ်ပါတယ်။ သူကတော့ အရှေ့ကပို့ခဲ့တဲ့ Number တွေမှန်မမှန်ကို Calculation လုပ်ပြီးတော့ စစ်တာပါ။
ASCII
ASCII ဆိုတာကတော့ American Standard Code for Information Exchange ဆိုပြီးအဓိပ္ပာယ်ရပါတယ်။ Messages ရဲ့ အစနဲ့အဆုံးကို ASCII Character နဲ့ပဲသုံးပါတယ်။ အဲ့ဒီ ASCII Character တွေက Hexadecimal Character တွေဖြစ်ပါတယ်။
Message ရဲ့ Format အစက Colon ':' နဲ့စပါတယ်။ အဆုံးကတော့ a carriage return and line feed နဲ့ဆုံးပါတယ်။ အဲ့တာကြောင့်မလို့ Message တွေကြားမှာရှိတယ် Space တွေက Variable တွေဖြစ်လာကြပါတယ်။ ASCII ဟာLRC (longitudinal redundancy check) ဆိုတဲ့ Error Checking Method ကိုသုံးပါတယ်။
ခုနက Frame Format ကိုပြန်ကြည့်မယ်ဆိုရင် First Byte မှာ ဘာပါမလဲဆိုရင် Start Bits ပါမယ်။ Station Address အတွက် 2 Bytes, Function Code အတွက်2 Bytes , Data အတွက် 'n' Byte (ဘယ်လောက်သုံးလဲဆိုတာသုံးတဲ့သူပေါ်မူတည်ပါတယ်။) ,LRC အတွက် 2 Bytes နဲ့ နောက်ဆုံး Stop Bit အတွက် 2 Bytes ဆိုပြီးတော့ဖြစ်ပါတယ်။
Disadvantages of Modbus ASCII Communication
Modbus ASCII ဟာ အသုံးအရမ်းနည်းပြီးတော့ Effective လည်း Modbus RTU ထက်စာရင် အရမ်းကို Effect မဖြစ်ပါဘူး။
ဘာကြောင့်လည်းဆိုရင် အဓိကက "Error Checking Method" မှာ ပါ။ Modbus RTU မှာ Cyclical Redundancy Check (CRC) ကိုသုံးပါတယ်။ အဲ့တာနဲ့ LRC နဲ့ နှိုင်းယှဥ်ရင် CRC က Error Checking လုပ်တဲ့နေရာမှာ ပိုပြီးတော့ ကောင်းပါတယ်။
Modbus ASCII ကို သိပ်မသုံးကြတော့ပါဘူး။ တချို့ Serial Modems နဲ့ Weight Balance Machine တွေမှာတော့ အသုံးပြုနေကြပါသေးတယ်။
Reference: instrumentationtools
Comments
Post a Comment