আজ দেখব কিভাবে পিএলসিতে নিউমেরিক ডেটা ব্যাবহার করা হয়।
পিএলসি এর মধ্যে নিউমেরিক ডেটাঃ
বেশিরভাগ পিএলসিতে অ্যাপ্লিকেশনগুলীর তথ্য(Data) নিয়ন্ত্রণ করা প্রয়োজন হয়। এটি সাধারণত কাউন্টার এবং টাইমার এর ভ্যালুর ক্ষেত্রে সাধিত হয়। একটি বিশেষ ফাংশন মডিউল থেকে তথ্য পড়ে তারপর তা প্রক্রিয়াকরণের মাধ্যমে ইনফরমেশন বা উচ্চ পর্যায়ের গাণিতিক কম্পিউটেশন হিসাবে তৈরি করা হয়। একটি পিএলসি কিভাবে বিভিন্ন ধরনের ডেটা দেখতে এবং পরিচালনা করতে পারে তা বুঝতে পারা একজন প্রোগ্রামার এর পক্ষে খুবই জটিল।
এই পাঠ শেষে আপনি যা জানতে পারবেনঃ-
* একটি পিএলসি কিভাবে পূর্ণ সংখ্যা (Integer) এবং ডেসিমেল (Decimal) সংখ্যাগুলি পরিচালনা করতে পারে।
পূর্ণসংখ্যার পরিচালনাঃ
একটি খুব গুরুত্বপূর্ণ বাস্তবতা যে, পিএলসি ডিফল্ট হিসাবে শুধুমাত্র পূর্ণসংখ্যা তথ্য হ্যান্ডল করে থাকে। এর অর্থ হল এটি সকল নাম্বারগুলির মধ্যে শুধুমাত্র 1, 10, -2 ইত্যাদি দেখতে পারে। পিএলসি 3.14159 এর মত ভগ্ন সংখ্যা সনাক্ত করতে পারে না। এই রকম সংখ্যা লেখার চেষ্টা করলে তাতে ভুল (error) দেখাবে। যদি একটি গানিতিক অপারেশন এ 5 কে 3 দ্বারা ভাগ করার পর যদি রেজাল্ট 1.667 সম্পাদিত হয়, তবে পিএলসি দশমিক অংশ ড্রপ করে 1 এর একটা রেজাল্ট দিবে। এখানে উল্লেখ্য যে, এই উদাহরনে গানিতিক ইনিস্ট্রাকশনের ভিত্তিতে গন্তব্বের রেজিস্টার অনুসারে ডাটা রেজিস্টারে 2 হিসাবে জমা হয়।
16 বিট নাম্বারঃ
পূর্ণসংখ্যাগুলি পিএলসির মধ্যে 16 বিটের নাম্বার হয়ে থাকে। যদি তা না থাকে, অন্যথায় তা প্রোগ্রামিং দ্বারা ঘোষিত হয়ে থাকে। আমরা বাইনারি নাম্বার পাঠে ফিরে যেতে পারি, এর মানে হল যে পূর্ণসংখ্যার(integer) জন্য সাংখ্যিক পরিসীমা হয়ঃ 0000 0000 0000 0000 থেকে 1111 1111 1111 1111 পর্যন্ত। এটিকে ডেসিমেল এ পরিবর্তন করলে তা পিএলসির জন্য পূর্ণসংখ্যার পরিসীমা 0 থেকে 65,535 হয়।
পূর্ণসংখ্যার পরিসীমা আসলে + 32,767 থেকে -32,768 হয়ে থাকে। এই কারনে বাম দিকে যে বিটটি (bit 15) সর্বাধিক দূরবর্তী সেটি পিএলসি দ্বারা চিহ্নিত বিট (sign bit) হিসাবে ব্যবহৃত হয়। এই বিট সর্বাধিক গুরুত্বপূর্ণ বিট (Most Significant Bit "MSB") নামেও পরিচিত। যদি MSB "1" হয়, তবে নাম্বারটি নেগেটিভ। যদি MSB "0" হয় তবে নাম্বারটি পজেটিভ। সুতরাং প্রকৃত বৃহত্তম ধনাত্মক সংখ্যা হল 0111 1111 1111 1111 যা 32,767. প্রোগ্রাম যদি বৃদ্ধিশীল হয়ে 32,767 এর উপরে যায় তবে এটি -32,768 তে যায়। প্রোগ্রাম যদি একটি নম্বর নিম্নগামী হয়ে -32,768 এর নীচের যায়, এটি 32,767 তে যায়।
1000 0000 0000 0000 = -32,768. কেন এই রকম?
পিএলসিতে নেগেটিভ নাম্বার ডিসপ্লে করার জন্য একটি সংখ্যায়ন বিন্যাসে দুই এর সম্পূরক (two’s complement) হিসাবে পরিচিতি ব্যবহার করে। দুই এর সম্পূরক গণনা করা সহজঃ
১. সমস্ত 1 কে 0 তে এবং 0 কে 1 এ রুপান্তর। এই নতুন নম্বর সম্পূরক হিসাবে পরিচিত হয়।
২. নাম্বারটিতে 1 সংখ্যা যোগ করণ।
0111 1111 1111 1111 এটি হল 32,767.
1000 0000 0000 0000 এটি হল সম্পূরক (চিহ্নিত বিটটি (sign bit) সম্পূরকের মধ্যে অন্তর্ভুক্ত না, কিন্তু নেগেটিভ সংখ্যা তৈরি করার জন্য এই নাম্বারের সাথে 1 দরকার হয়)।
+ 1 1 যোগ করা হল।
1000 0000 0000 0001 এটি হল –32,767.
1000 0000 0000 0000 এটি হল -32,767 চেয়ে 1 কম, তাই এটা -32,768.
একটি দুই এর সম্পূরক (two’s complement) সঞ্চালন করার জন্য NEG কমান্ড ব্যাবহার করা হয় 16 বিট অথবা 32 বিটের ডাটাকে নেগেটিভ থেকে পজেটিভ এ পরিবর্তন করার মাধ্যমে।
32 বিট নাম্বারঃ
আগেই বলেছিলাম, ইন্টিজার হল ডিফল্টরূপে 16 বিট। যখন কিছু কমান্ড, পরে আলোচনা করা হবে বলা হয়, এবং সেটি যখন ব্যবহৃত হয়, তখন এটা 32 বিট সংখ্যা হওয়ার সম্ভাবনা থাকে। যখন এটা করা হয়, তখন পিএলসি দুটি 16 বিট রেজিস্টারকে একটি বৃহৎ রেজিস্টার হিসাবে দেখে। 15 বিট MSB হিসাবে আর গণ্য হয় না। পিএলসি এখন বিবেচনায় 32 বিট হিসাবে MSB কে গণ্য করবে। পিএলসি এই পূর্ণসংখ্যার প্রদর্শন করতে -2,147,483,648 থেকে 2,147,483,647 পরিসীমার মধ্যে থাকবে। (শুধুমাত্র বৈজ্ঞানিক নোটেশন ব্যবহার ব্যতীত, নিচে দেখুন)
যখন 32 বিট নির্দেশাবলী ব্যবহৃত হয়, তখন এটা খেয়াল করা জরুরী যে, নম্বর গন্তব্য রেজিস্টার (destination register) এবং অনুসরণ রেজিস্টার (following register)উভয় দখল করে। যখন প্রোগ্রাম লিখবেন তখন এটি অ্যাকাউন্টে নিয়ে নিবে, কারন দ্বিতীয়বার রেজিস্টারে overwriting ডেটা অনিশ্চিত ফলশ্রুতি হতে পারে।
ডেসিমেল সংখ্যা পরিচালনাঃ
উপরের হিসাবে উল্লেখ হয়েছে, ডেসিমেল সংখ্যা পরিচালনা করার জন্য ডিফল্ট পদ্ধতি তাদের ড্রপ করবে। এই সীমাবদ্ধতা float flag (M8023) সেটিং এবং ফ্লোটিং পয়েন্ট নির্দেশাবলী ব্যবহার এর মাধ্যমে এড়ানো যেতে পারে। যা FX3U এর প্রোগ্রামিং ম্যানুয়াল এ দেয়া আছে।
ডেসিমেল সংখ্যা দেখানোর জন্য 2টি ফর্ম্যাট হয়ে থাকেঃ সায়েন্টিফিক নোটেশন এবং ফ্লোটিং পয়েন্ট ফরমেট।
সায়েন্টিফিক নোটেশনঃ
সায়েন্টিফিক নোটেশন দুটি রেজিস্টার ব্যাবহার করে, তা অংশক (mantissa) এবং সূচক (exponent) এ জমা করে থাকে। অংশক হল একটি নাম্বারের প্রথম 4 টি গুরুত্বপূর্ণ সংখ্যা, এবং সূচক দেখায় ডেসিমেল এর অবস্থান। এগুলি বিন্যাস গণনার জন্য ব্যবহার করা হবে না, কিন্তু তথ্য প্রদর্শনের জন্য দরকারী হয়।
উদাহরণঃ 1,238,900 সংখ্যাটি প্রদর্শিত হবে 1238 x 10³ হিসাবে। 1238 হল অংশক এবং 10³ ইঙ্গিত দেয় ডেসিমেল হল ডান দিকের তিন জায়গা, এটি একটি সূচক।
0 এবং 1 অথবা 0 এবং -1 মধ্যে একটি নম্বর একটি নেগেটিভ সূচক উপস্থাপন করে। সূচক তা দেখায়, অংশক যে পরিমান জায়গা অবশিস্ট রাখে এবং সেটি ডেসিমেল হিসাবে সনাক্ত করে।
উদাহরনঃ .00123 সংখ্যাটি প্রদর্শিত হবে 123 x 10-5 হিসাবে।
এই বিন্যাসের ফলে সাধারণ 32 বিট পরিসীমার বাইরের নম্বর (~ + / - 2 বিলিয়ন) প্রদর্শন করবে। সংখ্যা পরিসীমা হল 9999 x 1035 থেকে -9999 x 1035 পর্যন্ত। কারবার নিষ্ক্রিয় করে একটি স্পষ্ট ক্ষতি করে শুধুমাত্র 4 উল্লেখযোগ্য সংখ্যাগুলি।
একটি বৈজ্ঞানিক নোটেশন নম্বর জমা করার পদ্ধতিঃ অংশক D রেজিস্টার এ সংরক্ষিত হয়, এবং সূচক D +1 এ সংরক্ষিত হয়। উপরোক্ত হিসাবে উদাহরণ, যদি 1,238,900 সংখ্যা D0 তে সঞ্চিত এবং .00123 সংখ্যা D2 এ সংরক্ষিত থাকে, তবে তথ্য নিবন্ধনের অনুসরণ হিসাবে প্রদর্শিত হবেঃ
D0 1238
D1 3
D2 123
D3 -5
ফ্লোটিং পয়েন্টঃ
অনুরূপ, বৈজ্ঞানিক নোটেশন ফর্ম্যাটের মতই, এই বিন্যাস নম্বর প্রদর্শন করে D রেজিস্টার এবং D+1 রেজিস্টারে। অংশক সমস্ত D এর 16 বিট এবং D+1 এর প্রথম 7 বিট দখল করে। সুচক D+1 এর শেষের 9 বিট, সাথে 15 বিট চিহ্নিত বিট হিসাবে কাজ সম্পাদন করে।
ফ্লোটিং পয়েন্ট বিন্যাসে জন্য D এবং D+1 এর মান কখনো মনিটর এবং ব্যাখ্যা করা সম্ভব না, একই ভাবে বৈজ্ঞানিক নোটেশন মনিটর করা যায়। ফ্লোটিং পয়েন্ট সংখ্যার উপস্থাপনা একটি বিশেষ বিন্যাসে অনুসরণ করা হয় যা IEEE (Institute of Electrical and Electronic Engineers) দ্বারা প্রস্তাবিত।
এই বিন্যাস ব্যবহার করার প্রধান সুবিধা হল বৈজ্ঞানিক নোটেশনের উপর নির্ভুলতা। ফ্লোটিং পয়েন্ট বিন্যাসে pi (~ 3.1415926) সংখ্যাটি প্রদর্শিত হবে 3.141592 (7 significant digits) হিসাবে, এবং 3142 x 10-3 এর মত হবে বৈজ্ঞানিক নোটেশন এ।
এই পর্যন্তই। আশিকরি কিভাবে পিএলসিতে নিউমেরিক ডেটা ব্যাবহার করা হয় তা হয়তো কিছুটা বুঝতে পেরেছেন।
পরবর্তী পোস্টে থাকবে "বেসিক ইন্সট্রাকশন"....................................
সবাই ভালো থাকবেন।
আমি স্বপন। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 11 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 13 টি টিউন ও 170 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 2 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
সকল কে জ্ঞান দান করুন নিজের জ্ঞান বৃদ্ধি করুন।
ভাই স্বপন, আপনার কমেন্টের ঘর ফাঁকা দেখে হতাশ হবেন না। চেইন টিউনগুলো এরকমই। প্রথমে অনেক ভিজিটর, অনেক কমেন্ট পাবেন এরপর শুধু যাদের প্রয়োজন তারা থাকবে। যদিও কমেন্ট এর মাধ্যমে পাঠকদের ফিডব্যাক পাওয়া যায় এবং উৎসাহ বাড়ে। তাই বলে থেমে থাকা যাবে না।
আপনার জন্য অনেক শুভ কামনা রইল।