নিয়ন্ত্রণ ব্যবস্থা/ম্যাটল্যাব
এই পাতায় বিভিন্ন সিস্টেমের স্ক্রিনশট যুক্ত করা হলে তা অনেক উপকারে আসবে। যাদের ম্যাটল্যাব বা অকটেভ আছে, তারা এখানে ব্যবহৃত সিস্টেমগুলোর স্ক্রিনশট তৈরি করতে উৎসাহিত। |
ম্যাটল্যাব
[সম্পাদনা]ম্যাটল্যাব একটি প্রোগ্রামিং ভাষা, যা বিশেষভাবে ম্যাট্রিক্স ব্যবস্থাপনার জন্য ডিজাইন করা হয়েছে। এর গাণিতিক ক্ষমতার কারণে অনেক নিয়ন্ত্রণ প্রকৌশলী এটি ব্যবহার করে নিয়ন্ত্রণ সিস্টেম ডিজাইন ও অনুকরণ (সিমুলেশন) করে থাকেন। এই পাতায় ম্যাটল্যাব ব্যবহার করে নিয়ন্ত্রণ সিস্টেম ডিজাইন ও বিশ্লেষণের আলোচনা করা হয়েছে। ম্যাটল্যাবে একাধিক প্লাগ-ইন মডিউল রয়েছে যেগুলো "টুলবক্স" নামে পরিচিত। নিচে বর্ণিত প্রায় সব ফাংশন নিয়ন্ত্রণ সিস্টেম টুলবক্স-এ অন্তর্ভুক্ত। যদি আপনার ম্যাটল্যাব-এ এই টুলবক্স ইনস্টল করা থাকে, তাহলে ম্যাটল্যাব প্রম্পটে help control টাইপ করে আপনি এ সম্পর্কে আরও তথ্য পেতে পারেন।
ম্যাটল্যাব-এর একটি মুক্ত সফটওয়্যার ভিত্তিক প্রতিদ্বন্দ্বী হলো অকটেভ। অকটেভ ম্যাটল্যাব-এর সাথে অনেকটাই সাদৃশ্যপূর্ণ, তবে কিছু পার্থক্যও রয়েছে। এই পাতায় শুধুমাত্র ম্যাটল্যাব-এর উপর গুরুত্ব দেওয়া হয়েছে, তবে অকটেভ নিয়ে একটি আলাদা পাতা যুক্ত করা যেতে পারে। ২০০৬ সালের ১০ই সেপ্টেম্বর পর্যন্ত নিচে প্রদত্ত ম্যাটল্যাব নির্দেশনাগুলো জিএনইউ অকটেভ-এও কার্যকর।
এই পাতায় বিভিন্ন কাজের জন্য ব্যবহৃত ম্যাটল্যাব ফাংশনগুলো প্রদর্শনের জন্য {{ম্যাটল্যাব সিএমডি}} টেমপ্লেট ব্যবহার করা হয়েছে।
ম্যাটল্যাব হলো একটি স্বত্বাধিকার সংরক্ষিত পণ্য, যা দ্য ম্যাথওয়ার্কস কোম্পানি তৈরি করে। ম্যাটল্যাব এবং দ্য ম্যাথওয়ার্কস সম্পর্কে আরও জানতে দেখুন নিয়ন্ত্রণ ব্যবস্থা/সম্পদ।
ইনপুট-আউটপুট বিচ্ছিন্নকরণ
[সম্পাদনা]একটি বহু-ইনপুট বহু-আউটপুট (MIMO) সিস্টেমে, সাধারণত একটি নির্দিষ্ট ইনপুট-আউটপুট জোড়া বিশ্লেষণের জন্য আলাদা করা গুরুত্বপূর্ণ। প্রতিটি ইনপুট B ম্যাট্রিক্সের একটি সারির সাথে এবং প্রতিটি আউটপুট C ম্যাট্রিক্সের একটি কলামের সাথে সম্পর্কিত। উদাহরণস্বরূপ, যদি আমরা ২য় ইনপুট এবং ৩য় আউটপুট বিচ্ছিন্ন করতে চাই, তাহলে সিস্টেমটি নিচের মতো তৈরি করা যায়:
sys = ss(A, B(:,2), C(3,:), D);
এই পাতায় এই কৌশলকে "ইনপুট-আউটপুট বিচ্ছিন্নকরণ" নামে উল্লেখ করা হয়েছে।
স্টেপ প্রতিক্রিয়া
[সম্পাদনা]প্রথমে, আমরা প্রচলিত পদ্ধতির দিকে নজর দিই, যেখানে একটি সিস্টেম নিচের মতো:
এই সিস্টেমটিকে দুটি সহগ ভেক্টর NUM এবং DEN দিয়ে মডেল করা যায়:
NUM = [5, 10] DEN = [1, 4, 5]
এখন, আমরা ম্যাটল্যাব-এর step নির্দেশ ব্যবহার করে এই সিস্টেমের স্টেপ প্রতিক্রিয়া পেতে পারি:
step(NUM, DEN, t);
এখানে t হলো সময় ভেক্টর। যদি আপনি বাম পাশে কোনো ফলাফল নির্ধারণ না করেন, তাহলে step ফাংশন স্বয়ংক্রিয়ভাবে একটি গ্রাফিক্যাল চিত্র প্রদর্শন করবে। তবে যদি আপনি নিচের ফরম্যাট ব্যবহার করেন:
[y, x, t] = step(NUM, DEN, t);
তাহলে ম্যাটল্যাব স্বয়ংক্রিয়ভাবে কোনো চিত্র তৈরি করবে না, আপনাকে নিজে তৈরি করতে হবে।
এখানে একটি নমুনা চিত্র:
এখন আমরা আধুনিক স্টেট-স্পেস পদ্ধতি দেখি। যদি আমাদের A, B, C এবং D ম্যাট্রিক্স থাকে, তাহলে আমরা সেগুলো step ফাংশনে দিতে পারি:
step(A, B, C, D);
অথবা, আমরা ইচ্ছা করলে একটি সময় ভেক্টর t দিতে পারি:
step(A, B, C, D, t);
আবার, যদি আমরা বাম পাশে ফলাফল নিই, ম্যাটল্যাব আমাদের জন্য কোনো চিত্র তৈরি করবে না।
যদি আমরা স্বয়ংক্রিয় চিত্র না পাই এবং নিজেরা চিত্র আঁকতে চাই, তাহলে টাইপ করবো:
[y, x, t] = step(NUM, DEN, t);
তারপর plot নির্দেশ ব্যবহার করে একটি চিত্র তৈরি করবো:
plot(t, y);
এখানে y হলো স্টেপ প্রতিক্রিয়ার আউটপুট মাত্রা, আর x হলো স্টেট-স্পেস সমীকরণ থেকে পাওয়া অভ্যন্তরীণ অবস্থা:
প্রচলিত ↔ আধুনিক
[সম্পাদনা]ম্যাটল্যাবে এমন একটি ফাংশন রয়েছে যার মাধ্যমে লাপ্লাস রূপ থেকে স্টেট-স্পেস রূপে রূপান্তর করা যায়। এই ফাংশনটি হলো tf2ss এবং এটি নিচের মতো ব্যবহার করা হয়:
[A, B, C, D] = tf2ss(NUM, DEN);
এখানে NUM এবং DEN হলো ট্রান্সফার ফাংশনের লব ও হরের সহগ ভেক্টর।
একইভাবে, আমরা স্টেট-স্পেস থেকে লাপ্লাস রূপে ফিরে যেতে পারি ss2tf ফাংশনের মাধ্যমে:
[NUM, DEN] = ss2tf(A, B, C, D);
অথবা, যদি আমাদের ইনপুট ভেক্টর u-তে একাধিক ইনপুট থাকে, তাহলে লিখতে পারি:
[NUM, DEN] = ss2tf(A, B, C, D, u);
যদি সিস্টেমে একাধিক ইনপুট থাকে, তখন u প্যারামিটারটি আবশ্যক। তবে যদি ইনপুট শুধুমাত্র একটি হয়, তাহলে এটি প্রয়োজন হয় না। এই রূপান্তরের ফলে প্রতিটি ইনপুটের জন্য আলাদা ট্রান্সফার ফাংশন তৈরি হয় এবং NUM ও DEN দুটি দ্বিমাত্রিক ম্যাট্রিক্সে রূপান্তরিত হয়, যেখানে প্রতিটি সারি আলাদা ইনপুটের সহগ উপস্থাপন করে।
z-ডোমেইনের ডিজিটাল ছাঁকনি (ফিল্টার)
[সম্পাদনা]চলুন এখন আমরা Z-ডোমেইনের একটি সাধারণ ট্রান্সফার ফাংশনবিশিষ্ট ডিজিটাল সিস্টেম বিবেচনা করি:
এখানে n(z) এবং d(z) যথাক্রমে লব ও হরের বহুপদী। filter নির্দেশ ব্যবহার করে একটি ইনপুট ভেক্টর x এই ফিল্টারে প্রয়োগ করা যায়। আউটপুট y পাওয়া যায় নিচের কোডে:
y = filter(n, d, x);
"filter" শব্দটি হয়তো কিছুটা বিভ্রান্তিকর, তবে এটিই হলো ডিজিটাল সিস্টেমে ইনপুট প্রয়োগের পদ্ধতি। একবার আউটপুট মাত্রা ভেক্টর পেলে আমরা plot নির্দেশ ব্যবহার করে তা চিত্রিত করতে পারি:
plot(y);
ডিজিটাল সিস্টেমের স্টেপ প্রতিক্রিয়া পেতে হলে, প্রথমে ones নির্দেশ ব্যবহার করে একটি স্টেপ ফাংশন তৈরি করতে হবে:
u = ones(1, N);
এখানে N হলো নমুনার সংখ্যা (n-এর সাথে বিভ্রান্ত হবেন না, যা নিউমেরেটরের সহগ)। একবার ইউনিট স্টেপ ফাংশন তৈরি হলে, আমরা তা ডিজিটাল ফিল্টারের মাধ্যমে চালাতে পারি:
y = filter(n, d, u);
তারপর আমরা y-কে চিত্রিত করবো:
plot(y);
স্টেট-স্পেস ডিজিটাল ফিল্টার
[সম্পাদনা]একইভাবে, আমরা একটি ডিজিটাল সিস্টেমকে স্টেট-স্পেস উপস্থাপনায় বিশ্লেষণ করতে পারি। যদি আমাদের নিম্নরূপ ডিজিটাল স্টেট সম্পর্ক থাকে:
তাহলে, আমরা আগের মতো ss2tf ফাংশন ব্যবহার করে এটি পালস প্রতিক্রিয়ায় রূপান্তর করতে পারি:
[NUM, DEN] = ss2tf(A, B, C, D);
এরপর, পূর্ব প্রস্তুত ইউনিট-স্টেপ সিকোয়েন্স ভেক্টর u দিয়ে এটি ফিল্টার করা যায়:
y = filter(NUM, DEN, u);
এটি স্টেট-স্পেস উপস্থাপনার ডিজিটাল সিস্টেমের স্টেপ প্রতিক্রিয়া প্রদান করবে।
রুট-লোকাস চিত্র
[সম্পাদনা]ম্যাটল্যাব একটি কার্যকর স্বয়ংক্রিয় টুল সরবরাহ করে যা ট্রান্সফার ফাংশন থেকে রুট-লোকাস চিত্র তৈরি করে — rlocus কমান্ড। ট্রান্সফার ফাংশন ডোমেইন বা স্টেট-স্পেস ডোমেইনে নিচের মতো ব্যবহার করা যায়:
rlocus(NUM, DEN);
অথবা:
rlocus(A, B, C, D);
এই ফাংশনগুলো সিস্টেমের রুট-লোকাস চিত্র স্বয়ংক্রিয়ভাবে অঙ্কন করে। তবে, যদি আমরা আউটপুট ভেরিয়েবলের মধ্যে মান সংরক্ষণ করি:
[r, K] = rlocus(NUM, DEN);
অথবা:
[r, K] = rlocus(A, B, C, D);
তবে ম্যাটল্যাব কোনো চিত্র অঙ্কন করবে না এবং আপনাকে নিজে চিত্র অঙ্কন করতে হবে। আপনি ঐচ্ছিকভাবে গেইন K সরবরাহ করতে পারেন:
rlocus(NUM, DEN, K);
অথবা:
rlocus(A, B, C, D, K);
যদি K সরবরাহ না করা হয়, তাহলে ম্যাটল্যাব স্বয়ংক্রিয়ভাবে একটি মান নির্বাচন করবে।
আমরা যদি [r, K] পাই, তাহলে নিচের মতো করে চিত্র অঙ্কন করতে পারি:
plot(r);
rlocus কমান্ড MIMO সিস্টেমের জন্য ব্যবহারযোগ্য নয়। সেক্ষেত্রে আপনাকে প্রতিটি ইনপুট-আউটপুট জোড়া আলাদাভাবে বিচ্ছিন্ন করে গ্রাফ অঙ্কন করতে হবে।
ডিজিটাল রুট-লোকাস
[সম্পাদনা]একটি ডিজিটাল সিস্টেমের জন্য রুট-লোকাস চিত্র তৈরি করার পদ্ধতি ধ্রুব সিস্টেমের মতোই। পার্থক্য কেবল ফলাফলের ব্যাখ্যায়, কারণ ডিজিটাল সিস্টেমের স্থিতিশীলতার অঞ্চল ভিন্ন। উপরোক্ত rlocus ফাংশনই ব্যবহার করা যায়।
বডে চিত্র
[সম্পাদনা]ম্যাটল্যাব একটি সিস্টেমের ফ্রিকোয়েন্সি প্রতিক্রিয়া বিশ্লেষণের জন্য বিভিন্ন টুল সরবরাহ করে — যেমন বডে চিত্র এবং নাইকুইস্ট চিত্র। ট্রান্সফার ফাংশন থেকে বডে চিত্র তৈরি করতে নিচের কমান্ড ব্যবহার করা হয়:
[mag, phase, omega] = bode(NUM, DEN, omega);
অথবা:
[mag, phase, omega] = bode(A, B, C, D, u, omega);
এখানে omega হলো ফ্রিকোয়েন্সি ভেক্টর যেখানে ম্যাগনিটিউড ও ফেজ প্রতিক্রিয়া নির্ণয় করা হয়। যদি আমরা ম্যাগনিটিউডকে ডেসিবেলে রূপান্তর করতে চাই, তাহলে নিচের রূপান্তর ব্যবহার করতে পারি:
magdb = 20 * log10(mag);
ডেসিবেল স্কেলে বডে চিত্রের জন্য সাধারণত লগারিদমিক ফ্রিকোয়েন্সি স্কেল ব্যবহৃত হয়। এমন ফ্রিকোয়েন্সি ভেক্টর তৈরি করতে logspace কমান্ড ব্যবহার করা হয়:
omega = logspace(a, b, n);
এই কমান্ডটি থেকে পর্যন্ত nটি লগারিদমিকভাবে বণ্টিত পয়েন্ট তৈরি করে।
যদি আমরা bode কমান্ডটি কোনো আউটপুট ভেরিয়েবল ছাড়াই ব্যবহার করি, তাহলে ম্যাটল্যাব স্বয়ংক্রিয়ভাবে বডে চিত্র অঙ্কন করে।
MIMO সিস্টেমে ব্যবহারের ক্ষেত্রে, bode কমান্ড subplot আকারে প্রতিটি ইনপুট-আউটপুট জোড়ার জন্য চিত্র তৈরি করে। একাধিক ইনপুট-আউটপুট থাকলে বোঝা কঠিন হয়ে পড়ে, তাই আলাদা করে বিশ্লেষণ করাই ভালো।
নাইকুইস্ট চিত্র
[সম্পাদনা]বডে চিত্রের পাশাপাশি আমরা nyquist কমান্ড ব্যবহার করে নাইকুইস্ট চিত্র তৈরি করতে পারি। এটি bode-এর মতোই কাজ করে:
[real, imag, omega] = nyquist(NUM, DEN, omega);
অথবা:
[real, imag, omega] = nyquist(A, B, C, D, u, omega);
এখানে real ও imag হলো যথাক্রমে বাস্তব ও কাল্পনিক অংশের ভেক্টর। যদি কোনো ইনপুট না দেওয়া হয়, তাহলে ম্যাটল্যাব স্বয়ংক্রিয়ভাবে নাইকুইস্ট চিত্র তৈরি করবে।
nyquist কমান্ডও MIMO সিস্টেমে subplot ব্যবহার করে ইনপুট-আউটপুট সম্পর্ক প্রদর্শন করে, তবে অনেক জোড়া থাকলে দেখা অস্পষ্ট হতে পারে।
লিয়াপনভ সমীকরণ
[সম্পাদনা]নিয়ন্ত্রণযোগ্যতা
[সম্পাদনা]ctrb কমান্ড ব্যবহার করে নিয়ন্ত্রণযোগ্যতা ম্যাট্রিক্স তৈরি করা যায়। gram কমান্ড ব্যবহার করে নিয়ন্ত্রণযোগ্যতা গ্রামিয়ান নির্ণয় করা যায়।
পর্যবেক্ষণযোগ্যতা
[সম্পাদনা]obsv কমান্ড ব্যবহার করে পর্যবেক্ষণযোগ্যতা ম্যাট্রিক্স তৈরি করা যায়।
প্রায়োগিক গ্রামিয়ান
[সম্পাদনা]প্রায়োগিক গ্রামিয়ান রৈখিক এবং অরৈখিক নিয়ন্ত্রণ সিস্টেম উভয়ের জন্য নির্ণয় করা যায়। emgr নামক প্রায়োগিক গ্রামিয়ান কাঠামো ব্যবহার করে নিয়ন্ত্রণযোগ্যতা, পর্যবেক্ষণযোগ্যতা এবং ক্রস গ্রামিয়ান নির্ণয় করা যায়। এটি MATLAB এবং OCTAVE-এর সাথে উপযোগী এবং control systems toolbox প্রয়োজন হয় না।
আরও পড়ুন
[সম্পাদনা]- Ogata, Katsuhiko, "Solving Control Engineering Problems with MATLAB", Prentice Hall, New Jersey, 1994. আইএসবিএন 0130459070
- MATLAB Programming
- http://octave.sourceforge.net/
- MATLAB Category on ControlTheoryPro.com
- Empirical Gramian Framework