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 ဖြစ်လာပါတယ်။
ဒုတိယပုံက ဥပမာနဲ့ပြောရင် ရှင်းသွားမှာပါ။ ပုံမှာပြတဲ့ ဥပမာဆိုရင် E0 ထဲကို K8 ရွေ့ပြီတော့ F0 ထဲကို K14 ရွေ့ပါမယ်။ နောက်ဆုံးက MOV D5E0 D10F0 ကိုပြောစရာတော့ရှိပါတယ်။ D5E0 ဆိုတာက D5 နဲ့ E0 ပေါင်းခြင်းပါ။ D5 + E0(K8) = D13 လို့ပြောတာပါ။ E0 ကို K8 လို့ နဂိုကတည်းက သတ်မှတ်ထားတဲ့အတွက် 5 + 8 = 13 ဆိုပြီးဖြစ်လာတာပါ။ အလားတူပဲ D10F0 က ဒီနေရာမှာ D24 ဖြစ်လာပါတယ်။ အဲ့တော့ D13 ထဲက တန်ဖိုးတွေကို D24 ထဲ ရွေ့ပါဆိုတာနဲ့အတူတူပါပဲ။
What is Indirect Addressing?
Indirect Addressing ဆိုတာက Address တန်ဖိုးထဲက Data တန်ဖိုးကို နောက်ထပ် Address တန်ဖိုးတစ်ခုအဖြစ်ပြောင်းလိုက်တာပါ။ တတိယပုံမှာကြည့်ရင် Pointer ဟာ Address 2212 ကို ထောက်ထားပြီး သူ့ရဲ့ Data တန်ဖိုးဟာ 345 ရှိတယ်။ Indirect Addressing လုပ်လိုက်တဲ့အခါမှာတော့ Data တန်ဖိုး 345 က Memory Address 345 အဖြစ်ကိုပြောင်းလဲသွားပြီတော့ Address 345 ထဲက သတ်မှတ်ထားတဲ့ တန်ဖိုးကို Output ထုတ်လိုက်ပါတယ်။
Programming
အခု Project ပြသာနာကဘာလဲဆိုရင် သဘော်တွေအပေါ်မှာ PLC တစ်ခုရှိတယ်ပေါ့။ အဲ့ဒီ PLC ရဲ့ Output သို့မဟုတ် Input တစ်ခုခု သို့မဟုတ် Output တစ်ခုခု ကပျက်သွားတယ်ဆိုပါတော့။ PLC ရဲ့ Input, Output ကို Physical Wiring ကနေ Change ပြီးတော့ HMI ကနေသူ့ရဲ့ Address တွေကိုပြောင်းမယ်ပေါ့။ ဆိုလိုတာက Program မှာ Start ခလုတ်က X0 ဖြစ်နေခဲ့ရင် HMI မှာ X0 ကနေ X1 ကို ပြောင်းမယ်ဆိုတဲ့သဘောမျိုးပဲ။ ဒီလိုမျိုးဘာလို့လုပ်ခိုင်းတာလဲဆိုရင် သဘော်ကမ်းကပ်ရင် Programmer တစ်ယောက်ခေါ်ပြီးတော့ Program Upload တင်ခိုင်းရင် ပြသာနာ မရှိပေမယ့်, ပင်လယ်ထဲရောက်နေရင် ပြသာနာပေါ့။
အဲ့တော့ ကျွန်တော်က ဘယ်လိုရေးသလဲဆိုရင် ခုနက Indirect Addressing သဘောတရားကို ယူပြီးတော့ရေးလိုက်ပါတယ်။ ကျွန်တော် Program မှာ Input နှစ်ခုနဲ့ Output နှစ်ခုရှိပါတယ်။ Program ထဲမှာ Input တစ်ခုကို X1 သတ်မှတ်ပြီးတော့ တစ်ခုကို X2 သတ်မှတ်ထားပါတယ်။ Output ကိုတော့ Y6 လို့သတ်မှတ်လိုက်ပါတယ်။ ကျွန်တော် က Address တွေအကုန်သတ်မှတ်ပြီးပြီ ချင်းပဲ Main Program ကို ပြန်သွားပြီးတော့ Force Device List ကနေ X1 နဲ့ X2 ကို On လိုက်ပါတယ်။ အဲ့ဒီအချိန် Y6 က On အခြေအနေကို ရောက်သွားပါပြီ။ အကယ်၍သာ ကျွန်တော်ဟာ Input တစ်ခုကို HMI မှာ X1 ကို X3 လို့သတ်မှတ်လိုက်ပြီး Main Program သွားကြည့်ပြီတော့X1,X2 Onရင် Y6 on မှာမဟုတ်ပါဘူး။ X1 နေရာမှာ X3 On မှသာ Y6 က Onမှာပါ။ Output လည်း ထိုနည်းလည်းကောင်းပါပဲ။
ဒီနေရာမှာ စောဒက တတ်စရာတစ်ခုရှိပါတယ်။ အကယ်၍ Input တွေ Output တွေကို တူညီတဲ့ တန်ဖိုးပေးခဲ့ရင် ဘယ်လိုလုပ်မလဲ? ဒါကတော့ရှင်းပါတယ်။ HMI မှာ Program တစ်ခုရေးပြီးတော့ လုပ်ရင်ရပါတယ်။ အကယ်၍ Input_A = Input_B ဖြစ်ခဲ့ရင် Error ပြမယ်ဆိုတဲ့သဘောမျိုး Program ရေးလိုက်ရုံပါပဲ။
Reference: Delta PLC Application Programming
Comments
Post a Comment