FANUC मैक्रो में रिक्त मान और शून्य: “0 जोड़ने” से छोड़े गए इनपुट का अर्थ क्यों बदल जाता है?
16i/18i-MB के मैक्रो नियमों से अपरिभाषित वैरिएबल, संख्यात्मक शून्य, सीधा असाइनमेंट और अंकगणितीय रूपांतरण अलग समझें। स्वनिर्मित स्थिति तथा शर्त तालिका बताती है कि गणना से पहले छोड़ा गया इनपुट पहचानना चाहिए; अशून्य जाँच से यह साबित नहीं होता कि पैरामीटर दिया गया था।
विषय सूची
मैक्रो में किसी इनपुट को छोड़ने की अनुमति और संख्या 0 देने की अनुमति अलग बातें हैं। इन्हें मिलाने पर रिक्त इनपुट, जिसका अर्थ था “यह अक्ष शामिल नहीं है”, बदलकर “इस अक्ष का लक्ष्य निर्देशांक शून्य है” बन सकता है।
इस संस्करण का नियम: रिक्त मान, 0 का दूसरा रूप नहीं
FANUC 16i/18i-MB ऑपरेटर मैनुअल B-63534EN/02, §15.1 पृष्ठ 394–395 तथा §15.5 पृष्ठ 414 (मूल निर्माता मैनुअल की सार्वजनिक मिरर प्रति) के अनुसार #0 हमेशा रिक्त है। रिक्त वैरिएबल सीधे अक्ष एड्रेस के मान के रूप में हो तो वह एड्रेस अनदेखा होता है। सीधा असाइनमेंट रिक्त अवस्था बनाए रखता है, लेकिन अंकगणित में उसका व्यवहार 0 जैसा होता है। EQ और NE रिक्त तथा 0 अलग पहचानते हैं; अन्य तुलनाएँ रिक्त को 0 मानती हैं। लेख केवल इसी संस्करण के Custom Macro का अर्थ बताता है, अन्य सीरीज़ में वैरिएबल की जीवन-अवधि समान नहीं मानता।
पहले गणना करने से “इनपुट नहीं दिया” की जानकारी खो सकती है
स्वनिर्मित उदाहरण में इनपुट वैरिएबल #1 वैकल्पिक Y निरपेक्ष निर्देशांक है। पढ़ने के बाद सीधे #2=#1 करें तो #1 रिक्त होने पर #2 भी रिक्त रहेगा। “फ़ॉर्मेट समान करने” के लिए इसे #2=#1+0 कर दें तो #2 संख्या 0 बन जाएगा। गणना से संख्या नहीं बदली लगती, लेकिन इनपुट की अवस्था बदल गई है।
| इनपुट अवस्था | #1 EQ #0 | #1 NE 0 | #1+0 का परिणाम |
|---|---|---|---|
| अपरिभाषित | सत्य | सत्य | संख्या 0 |
| स्पष्ट रूप से 0 दिया | असत्य | असत्य | संख्या 0 |
| स्पष्ट रूप से 12 दिया | असत्य | सत्य | संख्या 12 |
इसलिए “NE 0 सत्य है” यह साबित नहीं करता कि कॉल करने वाले ने अशून्य इनपुट दिया है; अपरिभाषित अवस्था में भी यह शर्त सत्य होगी। गुणक लगाने, ऑफ़सेट जोड़ने या गणितीय फ़ंक्शन लगाने से पहले छोड़ा गया इनपुट पहचानें। अन्यथा बाद का 0 नहीं बताएगा कि वह इनपुट छोड़ने से आया या स्पष्ट संख्या देने से।
पथ पर परिणाम बहुत अलग हो सकते हैं
यह ऑफ़लाइन ज्यामितीय चित्रण है, कटिंग प्रोग्राम नहीं। वर्तमान XY=(10,37) mm मानें; निरपेक्ष निर्देशांक वाली सीधी चाल में X का लक्ष्य 32 और Y का मान #2 से आता है। अन्य निर्देशांक रूपांतरण या टूल कम्पेन्सेशन नहीं है। #2 रिक्त हो तो Y निर्दिष्ट नहीं होता, अंतिम बिंदु (32,37) और लंबाई 22 mm है; #2 का मान 0 हो तो अंतिम बिंदु (32,0) तथा लंबाई √(22²+37²)≈43.046 mm हो जाती है।
अंतर केवल लंबा पथ नहीं, Y दिशा में अतिरिक्त 37 mm विस्थापन भी है। इसलिए मैक्रो इंटरफ़ेस पहले “छोड़ा गया”, “स्पष्ट शून्य” और “अन्य संख्या” अलग करे, फिर उस इनपुट के उपयोग के अनुसार अनुमति तय करे। जहाँ शून्य निर्देशांक वैध है वहाँ सरलता से 0 प्रतिबंधित न करें; न ही 0 जोड़कर छोड़े मान को चुपचाप प्रभावी निर्देशांक बनाएँ। अन्य मैक्रो विषयों के लिए देखें OPTION अनुभाग।