Skip to main content

Posts

Showing posts with the label Modbus

Baud Rate သည် အဘယ်ကြောင့် Modbus Network တွင်အရေးပါရသနည်း?

    Modbus မှာ Communication အမျိုးအစားနှစ်ခုရှိပါတယ်။ အဲ့တာက Modbus RTU နဲ့ Modbus ASCII ပါပဲ။ သို့သော် Modbus RTU သည် သူ့ရဲ့ရိုးရှင်းတဲ့ Coding နဲ့ Configuration ရှိတဲ့အတွက်အကြောင့်အသုံးများရခြင်းဖြစ်ပါတယ်။ Modbus မှာပါဝင်တဲ့ Parameter တွေကတော့ - Address - Data Bit - Stop Bit - Parity နဲ့ - Baud Rate တို့ပဲဖြစ်ပါတယ်။     Modbus RTU မှာ အထူးတလည်းဂရုစိုက်ပေးရမယ့် Parameter တစ်ခုရှိပါတယ်။အဲ့တာကတော့ Baud Rate ပါပဲ။ Baud Rate ========     Baud Rate ဆိုတာကတော့ Modbus Protocol မှာရှိတဲ့  Communication Speed ရဲ့ အတိုင်းအတာတစ်ခုကိုဆိုလိုပါတယ်။ Baud Rate သည် Modbus Device နှစ်ခုအကြားက Transmitted သို့မဟုတ် Received လုပ်တဲ့ Data ရဲ့အမြန်နှုန်းကိုဖော်ပြပါတယ်။တစ်စက္ကန့်မှာရှိတဲ့ Signal အပြောင်းအလဲရဲ့ အရေအတွက်ကိုဖော်ပြတာဖြစ်ပါတယ်။ အကျဉ်းချုပ်ပြောရရင် တစ်စက္ကန့်မှာရှိတဲ့ Bits ရဲ့ Transmitted သို့မဟုတ် Received အရေအတွက်ကိုဆိုလိုပါတယ်။     Bit Rate ဆိုတာကတော့  Bit form အနေနဲ့ Transmit လုပ်ပြီး အဲ့ဒါရဲ့ တစ်စက္ကန့်မှာရှိတဲ့ Communication ရဲ့ ...

Modbus Function Command Format (2)

     အခုကတော့ သူ့ရဲ့အဆက်ကိုရေးသွားမှာပါ။ Function Code တစ်ခုချင်းစီရဲ့အလုပ်လုပ်ပုံကို ပုံ‌ကို အောက်မှာဆက်ဖတ်နိုင်ပါတယ်။ Modbus Function Code 04 Read Analog Input Register     ဒီ Modbus လုပ်ဆောင်ချက်ဟာ 30001 ကနေ 39999 (Decimal 30001 မှ 39999) ကို အစားဖြည့်သွင်းခြင်းများကို Read လုပ်ခြင်းမှလွဲပြီးတော့ 03 (Read Holding Register) နဲ့ တူညီပါတယ်။         Starting Address များသည်လည်း အရှေ့မှာဖော်ပြခဲ့တဲ့အတိုင်းပုံစံတူဖြစ်ပြီး Range ရဲ့ အစကနေ (n-1)^th register ကို Hexadecimal နဲ့ဖော်ပြတာဖြစ်ပါတယ်။     မှတ်ထားရမှာက Query Message ဟာ Register ရဲ့ Number ကို သတ်မှတ်ထားတာကြောင့် (Register တစ်ခုချင်းစီမှာ Byte 2 ပါပါတယ်) Respond Message ဟာ Byte ရဲ့ Number နဲ့ Reply လုပ်မှာဖြစ်ပြီးတော့ Respond Message ရဲ့ "Number of Bytes" field ဟာ Query Message ရဲ့ "Number of Registers " field ထက် နှစ်ဆပိုများပါတယ်။     နောက်တစ်ခုမှတ်ထားရမှာက "Hi" နဲ့ "Lo" Byte တန်ဖိုးများနဲ့ Query Message မှာတောင်းဆိုနိုင်တဲ့ အများဆုံးအရေအတွက်ဟာ Response Me...

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 နဲ့ပြန်ပေးပါတယ်။ ...

Modbus ASCII Communication Protocol Explanation

    အရင်တုန်းကတော့ 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...

Error Check in Modbus

     လွန်ခဲ့တဲ့လတုန်းက Modbus ထဲက Error Check ဘယ်လ်ုအလုပ်လုပ်သလဲဆိုတာပြောဖို့ကျန်သေးပါတယ်။အရေးမကြီးပေမယ့် အဲ့တာကို တိုတိုနဲ့ရှင်းရှင်းပြောပြပါမယ်။      Modbus ရဲ့  Communication Protocol က Address Field သို့ Slave ID, Function Code, Data နဲ့ Error Checkတို့ပါပဲ။ Error Check ကို Check Sum လည်းခေါ်သလို Sum Check လည်းခေါ်ပါတယ်။ ဒီ Method ကို Modbus RTU နဲ့ ASCII မှာသုံးကြပါတယ်။     Error Check ကဘယ်လိုအလုပ်လုပ်လဲမေးရင် အရှေ့ကရလာတဲ့ကိန်းဂဏန်းရလဒ်တွေပေါင်းလဒ်နဲ့တူလားမတူလားဆိုတာ စစ်တာပါပဲ။     လွယ်လွယ်နဲ့မြင်သာအောင်ပြောရရင် Slave ID ရဲ့တန်ဖိုးက 1, Function Code ရဲ့တန်ဖိုးက 2 , Data ရဲ့တန်ဖိုးက 3 ဆိုပါတော့။ အဲ့ကိန်းနံပါတ်တွေကိုပေါင်းမယ်ဆိုရင် 1+2+3 = 6 ဆိုတာရပါမယ်။ ဒါကြောင့် Error Check ဟာလည်း 6 ဆိုတဲ့ တန်ဖိုးဖြစ်ကိုဖြစ်ရမှာပါ။ မဖြစ်ရင်တော့ Communication Protocol ဟာ Error ပြနေပါမယ်။  ဒါက CRC နဲ့တွက်တဲ့နည်းပါပဲ။ တခြားတွက်နည်းလည်းရှိပေမယ့် ရှုပ်ကုန်မှာဆိုလို့ သဘောတရားလောက်ပဲရှင်းပြလိုက်တာပါ။

Modbus Implementation with Indigoscada

    အခုတစ်ခါတော့ Modbus ကဘယ်လိုပုံစံမျိုးနဲ့အလုပ်လုပ်လည်းမြင်သာအောင် ဖော်ပြပေးပါမယ်။ ကျွန်တော်က အခု Software ၂မျိုးသုံးထားပါတယ်။ Indigoscada နဲ့ PeakHMI Slave Simulator ပါ။ Slave Simulator ဘာလို့သုံးလဲဆိုရင် Slave ID သတ်မှတ်ဖို့ရယ် Data တွေအပြောင်းအလဲဘယ်လိုဖြစ်လည်းမြင်သာအောင်ပြတာပါ။ဆိုလိုတာက SCADAကနေခိုင်းဖို့ Slave တစ်ခုအနေနဲ့သုံးတာပါ။အခုဟာကတော့ PLC ရော တခြား Device တွေရော PC ကလွဲလို့ လုံး၀မရှိတဲ့သူတွေအတွက်နဲ့ အလုပ်လုပ်ဆောင်ပုံကိုမြင်သာဖို့အတွက်ပဲရည်ရွယ်တာပါ။     ကျွန်တော် ဒီမှာ Modbus TCP/IP ကိုသုံးပါမယ်။ ဘာလို့လည်းဆိုရင် Simulation လုပ်ဖို့သုံးတာပါ။ Simulation Port Address က 127.0.0.1 သုံးပြီတော့ Port ကို 502 သုံးပါတယ်။ စုစုပေါင်း Point အရေအတွက်က 24 ခုရှိပေမယ့် လက်ရှိ point 4 ခုပဲသုံးပါမယ်။  အရင်ဆုံးကျွန်တော် က Modbus ရဲ့ သုံးမယ့်ဟာကို Data Base အရင်ဆောက်လိုက်ပါမယ်။ ပုံက တတိယမြောက်မှာရှိပါတယ်။ ပုံနဲ့တွဲကြည့်ပေးပါ။  ပထမ Point 2ခုကို  Slave_id = 1 modbus_read_function = 1 modbus_write_function = 5  modbus_type ...

Float and Double Integer in Modbus

    အရင်နေ့တုန်းက Modbus Overview ရေးရင်နဲ့ မိတ်ဆွေတစ်ယောက်က Floating point အကြောင်းပါတင်ပေးပါဆိုတော့ လိုရင်းရောက်ပြီ နားလည်လွယ်မယ့်ဟာကိုရေးပြီးတင်ပေးလိုက်ပါတယ်။       အရင်ဆုံး မပြောခင်မှာ Data Type ထဲကအရာတွေ ကိုပြောပါမယ်။ Data Type တွေမှာ Boolean ကအစ Integer, Double Integer, Float တို့ Real တို့ဆိုပြီးတော့ရှိပါတယ်။ Computer Programming အကြောင်းလေ့လာပြီဆိုရင်လည်း ဒါတွေကအရေးကြီးပါတယ်။ ဆိုတော့ ခေါင်းစဥ်နဲ့ အံဝင်အောင် Data Type ထဲက ကျွန်တော်အဓိက ထားပြောမှာက Boolean, Integer, Double Integer နဲ့ Float တို့ကိုပဲပြောပါမယ်။     Boolean မှာက 1 bit ပဲရှိပါတယ်။ True & False လို့လည်းခေါ်ပြီး သုံးကျသလို 1 & 0 လို့လည်းသုံးပါတယ်။ Interger မှာကတော့ 16 bit ရှိပြီးတော့ -32768 ကနေ +32767 အထိရှိပါတယ်။ Double Integer က 32 bit ပါ။ အလားတူ Float လည်း 32 bit ဖြစ်ပြီးတော့ ± 1.4E-45 ကနေ  ± 3.4028235E ± 38 အထိရှိပါတယ်။       အခု Modbus Address တွေထဲက Input/Output တွေကိုပြောပါမယ်။ Coil & Discerct Type တွေက 1 bit ပဲသ...

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 အကြောင်း ပြောချင်ပါတယ်...