Skip to main content

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 Message မှာ ၎င်းရဲ့ Single Byte တန်ဖိုး (255) byte တန်ဖိုးဖြင့် Report လုပ်နိုင်ပါတယ်။

Modbus Function Code 05 - Write (Force) Single Coil


    ဒီ Modbus Function ဟာ Data ရဲ့ Single Bit က နေ Slave Device နဲ့အတူ Discrete Output ("Coil") ဆီကို Write လုပ်ပေးပါတယ်။

    ဒီ Function အတွက် သက်ဆိုင်ရာ Modbus Address Range တွေကတော့ 00001 ကနေ 09999 (Decimal) ဖြစ်ပါတယ်။ Starting Address ကတော့ Hexadecimal Number ဖြစ်ပြီး Range ရဲ့အစကနေ (n-1)^th Register ကို Hexadecimal နဲ့ဖော်ပြတာဖြစ်ပါတယ်။

    ဥပမာ ပကတိ Decimal Address 07200 ဟာ Hexadecimal 0x1C1F လို့သတ်မှတ်ထားပြီး "Hi" Byte က 1C ဖြစ်ပြီးတော့ "Lo" Byte ဟာ 1F ဖြစ်ပါတယ်။

    Coil တစ်ခုအတွက် "Force Data" ဟာ 0000 (Force Coil Off) သို့မဟုတ် FF 00 (Force Coil On) နှစ်ခုလုံးပါဝင်ပါတယ်။ အခြား Data တန်ဖိုးများလုံလောက်မည်မဟုတ်ပါ။ 0000 သို့မဟုတ် FF00 မှလွဲ၍ အခြားမည်သည့်အရာကိုမျှ Slave Device မှလျစ်လျူရှုမည်မဟုတ်ပါ။

    ပုံမှန်တုံ့ပြန်မှု Message ဟာ Query Message ရဲ့ ရိုးရှင်းတဲ့ Echo (စကားပြန်ပြောခြင်း) ဖြစ်လိမ့်ပါမယ်။

Modbus Function Code 06 - Write (Preset) Single Holding Register

    ဒီ Modbus Function ဟာ Slave Device နဲ့အတူ "Holding" Register တစ်ခုစီကို Data Write လုပ်ပေးပါတယ်။

    ဒီ Function အတွက် သက်ဆိုင်ရာ Modbus Addresses ဟာ 40001 ကနေ 49999 (Decimal) အထိရှိပါတယ်။ Starting Address ကတော့ Hexadecimal Number ဖြစ်ပြီး Range ရဲ့ ဘဝကနေ (n-1)^th Register ကို Hexadecimal နဲ့ ဖော်ပြတာဖြစ်ပါတယ်။

    ဥပမာ ပကတိ Decimal Address 40034 ဟာ Hexadecimal 0x0021 လို့သတ်မှတ်ထားပြီး "Hi" Byte 00 ဖြစ်ပြီး "Lo" Byte ဟာ 21 ဖြစ်ပါတယ်။

    ပုံမှန်တုံ့ပြန်မှု Message ဟာ Query Message ရဲ့ရိုးရှင်းတဲ့ Echo(စကားပြန်ပြောခြင်း) ဖြစ်ပါလိမ့်မယ်။

Reference: Instrumentationtools 

Comments

Popular posts from this blog

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...

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