FANUC G65 और M98: सबप्रोग्राम में #1 बदलने पर मुख्य प्रोग्राम कभी बदलाव क्यों नहीं देखता?
0i-D सामान्य ऑपरेटर मैनुअल के आधार पर बिना गति वाली वेरिएबल ट्रेस तालिका से G65 और M98 की तुलना करें। A से #1 में आर्ग्युमेंट जाना, लोकल वेरिएबल स्तर की वापसी और कॉमन वेरिएबल पर इस अलगाव का लागू न होना समझें।
विषय सूची
वेरिएबल को मान देने वाला वही प्रोग्राम G65 से बुलाएँ तो लौटने पर मुख्य प्रोग्राम का #1 मानो “नहीं बदला” दिखता है। M98 पर लौटें तो नया मान बना रहता है। यह अक्सर कॉल के अर्थ का अंतर है, CNC द्वारा असाइनमेंट खो देना नहीं।
पहले प्रोग्राम पुनः उपयोग और वेरिएबल का दायरा अलग करें
यह लेख संबंधित कस्टम मैक्रो सुविधा वाले 0i-D / 0i Mate-D पर लागू है। मूल B-64304EN/02 की सार्वजनिक मिरर प्रति, §14.7, पृष्ठ 206 दोनों में अंतर बताती है: G65 मैक्रो आर्ग्युमेंट भेज सकता है और लोकल वेरिएबल स्तर बदलता है। M98 सबप्रोग्राम कॉल में आर्ग्युमेंट भेजने की वह पद्धति नहीं है और लोकल स्तर भी नहीं बदलता। केवल दोनों से एक ही O प्रोग्राम मिल जाने के कारण उन्हें समतुल्य न मानें।
अक्ष चलाए बिना भी परिणाम स्पष्ट निकाला जा सकता है
नीचे स्वनिर्मित लॉजिक ट्रेस है। कोई इंटरप्ट, RESET या दूसरा असाइनमेंट नहीं माना गया है। कॉल से पहले वर्तमान स्तर पर #1=20.0 है। बुलाया गया प्रोग्राम केवल अपने सामने वाले #1 को 9.0 देता है और सामान्य रूप से लौटता है।
| अवलोकन बिंदु | G65 के साथ A4.0 भेजना | M98 सामान्य सबप्रोग्राम कॉल |
|---|---|---|
| बुलाए गए प्रोग्राम की शुरुआत में #1 | नए स्तर पर 4.0 | मूल स्तर पर 20.0 |
| असाइनमेंट के बाद #1 | नया स्तर 9.0 होता है | मूल स्तर 9.0 होता है |
| कॉल करने वाले प्रोग्राम में लौटने पर #1 | मूल स्तर का 20.0 बहाल होता है | 9.0 ही रहता है |
§14.7.1 के पृष्ठ 207–208 में A और #1 का संबंध दिया है। पृष्ठ 211 के अनुसार मैक्रो कॉल पिछले स्तर के लोकल वेरिएबल सुरक्षित करता है और M99 से लौटने पर उन्हें बहाल करता है। तालिका में दशमलव बिंदु वाले आर्ग्युमेंट हैं, ताकि बिना दशमलव वाले एड्रेस की न्यूनतम इनपुट इकाई का नियम उदाहरण में न मिल जाए। यह वेरिएबल दायरे का चित्रण है, सीधे मशीन पर चलाने वाला पूरा प्रोग्राम नहीं।
“लोकल मान बहाल होना” सभी अवस्थाएँ बहाल होना नहीं है
उसी अध्याय के पृष्ठ 211 में कॉमन वेरिएबल अलग-अलग मैक्रो स्तरों से पढ़े और लिखे जा सकने वाले मान हैं। इसलिए गणना का परिणाम कॉलर को देना हो तो इंटरफ़ेस स्पष्ट करे कि आउटपुट कहाँ रखा जाएगा। सबमैक्रो के #1 को अपने-आप लौटने वाला रिटर्न मान न मानें और मशीन निर्माता द्वारा आरक्षित कॉमन वेरिएबल मनमाने ढंग से न लें।
उदाहरण के लिए, इनपुट, अस्थायी मान और आउटपुट अलग करने पर बाहरी स्तर का छिद्र अंतर निकालने वाला #1 अंदरूनी अस्थायी गणना से अप्रभावित रह सकता है। उलटे, पुराने प्रोग्राम में M98 से लोकल वेरिएबल साझा होते हों और केवल कॉल कमांड बदल दी जाए, डेटा इंटरफ़ेस की समीक्षा न हो, तो बाहरी स्तर पुराना मान पढ़ सकता है।
सत्यापन में कॉल श्रृंखला देखें, केवल वेरिएबल नंबर नहीं
समीक्षा में हर कॉल का तरीका, प्रवेश का लोकल स्तर और वापसी पर अपेक्षित मान चिन्हित करें। फिर गति और I/O लेखन रहित लॉजिक मॉडल से तुलना करें। समान नंबर अलग स्तरों पर हो तो उसे अलग स्टोरेज स्थान मानकर विश्लेषण करें। मैक्रो सुविधा और मैक्रो कंपाइलर को भी एक न समझें। संबंधित दायरे के लिए देखें OPTION अनुभाग।