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

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 ဖြစ်လာပါတယ်။     ဒုတိယပုံက...

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 ​တွေ အများကြီး​တွေသုံး...