အခုကတော့ သူ့ရဲ့အဆက်ကိုရေးသွားမှာပါ။ 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
Post a Comment