FANUC रियल-टाइम मैक्रो में ZONCE और ZEDGE: शर्त बाद में सही हुई, फिर भी कार्रवाई क्यों नहीं हुई?
30i-A के रियल-टाइम मैक्रो नियमों के आधार पर 100 मिलीसेकंड की काल्पनिक निष्पादन अवधि में ZONCE, ZEDGE और शुरू से सत्य शर्त की तुलना। एकबारगी मैक्रो की प्रतीक्षा अवधि और छोटे पल्स की पहचान को अलग समझें।
विषय सूची
रियल-टाइम मैक्रो में “शर्त पूरी होने पर कार्य करें” लिखने के बाद शर्त आगे चलकर सच हुई, फिर भी कार्य नहीं हुआ। यहाँ कम से कम दो अलग प्रश्न हैं: एक बार जाँच हो रही है या एज की प्रतीक्षा, और जिस निष्पादन अवधि में प्रतीक्षा मान्य है, वह समाप्त तो नहीं हो चुकी।
समय व्यवहार तय करने वाले तीन नियम
30i/31i/32i-A सामान्य उपयोगकर्ता मैनुअल B-63944EN/03, §17.1.1 तथा §17.4.1–17.4.2, पृष्ठ 581, 599–600 (निर्माता के मैनुअल की सार्वजनिक प्रति) बताता है: ZONCE में जाँच असत्य मिलने पर निष्पादन समाप्त हो जाता है; वह बाद में सत्य होने की प्रतीक्षा नहीं करता। ZEDGE असत्य से सत्य में परिवर्तन की प्रतीक्षा करता है; शुरू से सत्य होना नया एज नहीं है। एकबारगी RTM उसके बाद आने वाले पहले NC निर्देश के साथ शुरू होता है और उसी NC निर्देश के समाप्त होने तक मान्य रहता है।
यह लेख केवल इस संस्करण के रियल-टाइम कस्टम मैक्रो फ़ंक्शन के एकबारगी स्टेटमेंट पर चर्चा करता है। साधारण मैक्रो IF, मोडल RTM या PLC स्कैन लॉजिक को यही तंत्र नहीं माना गया है। फ़ंक्शन की उपलब्धता और सिग्नल मैपिंग वास्तविक नियंत्रण कॉन्फ़िगरेशन से मेल खानी चाहिए।
प्रतीक्षा को एक निश्चित निष्पादन अवधि में रखें
लेख का स्वनिर्मित लॉजिक उदाहरण मानता है कि संबंधित NC ब्लॉक t=0 पर शुरू और t=100 ms पर समाप्त होता है। “कार्रवाई” का अर्थ केवल सॉफ़्टवेयर इवेंट दर्ज करना है; कोई आउटपुट सिग्नल या अक्ष गति नहीं है। तालिका मानती है कि दिए गए शर्त-परिवर्तन वैध रूप से सैंपल किए गए हैं।
| शर्त का बदलाव | एकबारगी ZONCE | एकबारगी ZEDGE |
|---|---|---|
| शुरू में असत्य, 60 ms पर सत्य होकर बना रहता है | पहली जाँच असत्य मिलते ही समाप्त | मान्य अवधि के भीतर राइज़िंग एज पहचानने के बाद कार्य |
| शुरू में असत्य, 120 ms पर ही सत्य होता है | पहले ही समाप्त | 100 ms की अवधि समाप्त; आगे प्रतीक्षा नहीं |
| शुरू में सत्य, 40 ms पर असत्य, 70 ms पर फिर सत्य | शुरुआती सत्य अवस्था पर कार्य | शुरुआती सत्य से ट्रिगर नहीं; बाद का असत्य→सत्य परिवर्तन ट्रिगर करता है |
दूसरी पंक्ति में शर्त का एक्सप्रेशन गलत नहीं है; घटना मान्य अवधि के बाहर हुई है। तीसरी पंक्ति दिखाती है कि “वर्तमान अवस्था सत्य है” और “नया एज देखा गया है” के उद्देश्य अलग हैं। पहला अवस्था की पूर्ति जाँचता है, दूसरा उसके बाद हुए परिवर्तन की पुष्टि करता है।
प्रोग्राम में लिखने का क्रम, समय अवधि की लंबाई नहीं तय करता
एकबारगी रियल-टाइम मैक्रो को ऊपर लिख देने से यह निष्कर्ष नहीं निकलता कि वह पहले प्रतीक्षा शुरू करेगा। पहले वास्तविक ट्रिगर करने वाला NC निर्देश पहचानें। यदि प्रक्रिया को कई NC ब्लॉक तक निगरानी चाहिए, तो केवल एक ब्लॉक का अनुमानित समय बढ़ा देने से विश्वसनीय लॉजिक साबित नहीं होता, क्योंकि ओवरराइड, स्टॉप और निष्पादन शाखाएँ समय संबंध बदल सकती हैं।
“जीवनकाल पर्याप्त लंबा है” और “सैंपलिंग घटना को देख सकती है” भी अलग बातें हैं। यदि जाँच चक्र 4 ms हो, तो 1 ms का पल्स पूरी तरह दो जाँचों के बीच आ सकता है। यह सामान्य सैंपलिंग का प्रतिउदाहरण है; 4 ms को यहाँ FANUC रियल-टाइम मैक्रो की चक्र अवधि का विनिर्देश नहीं बताया गया है। ZEDGE किसी भी छोटे पल्स को पकड़ने की हार्डवेयर गारंटी नहीं है।
किस स्तर की जाँच करनी है
यदि शुरुआत में असत्य होने पर कभी कार्य नहीं होता, तो पहले जाँचें कि गलती से ZONCE तो नहीं चुना गया। यदि ब्लॉक के भीतर शर्त पूरी होने पर ट्रिगर होता है, लेकिन ब्लॉक समाप्त होने के बाद नहीं, तो एकबारगी मान्य अवधि देखें। यदि केवल बहुत छोटी घटनाएँ कभी-कभी छूटती हैं, तो इनपुट श्रृंखला और सैंपलिंग का विश्लेषण करें। इन तीन घटनाओं के कारण अलग हैं; सबको “मैक्रो रियल-टाइम नहीं है” कहना उचित नहीं। अन्य तंत्रों का विश्लेषण देखें OPTION अनुभाग।