ESBMC-GraphPLC: Formal Verification of Graphical PLCopen XML Ladder Diagram Programs Using SMT-Based Model Checking
यह शोध पत्र ESBMC-GraphPLC प्रस्तुत करता है, जो एक औपचारिक सत्यापन उपकरण (formal verification tool) है जो ग्राफ-आधारित रंंग लॉजिक (rung logic) को SMT-आधारित मॉडल चेकिंग के लिए एक वैध GOTO मध्यवर्ती प्रतिनिधित्व (intermediate representation) में परिवर्तित करने हेतु एक DFS-आधारित रिज़ॉल्वर को लागू करके ग्राफिकल PLCopen XML लैडर डायग्राम्स को संभालने में मौजूद अंतर को हल करता है, जिससे मौजूदा टेक्स्टुअल फॉर्मेट सपोर्ट को प्रभावित किए बिना CONTROLLINO और OpenPLC Editor जैसे एडिटर्स से प्रोग्रामों का सही सत्यापन सक्षम होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
एक प्रोग्रामेबल लॉजिक कंट्रोलर (PLC) की कल्पना एक फैक्ट्री मशीन के दिमाग के रूप में करें, जैसे कि एक वॉटर पंप या ट्रैफिक लाइट। इस दिमाग को यह बताने के लिए कि क्या करना है, इंजीनियर लैडर डायग्राम (Ladder Diagrams) बनाते हैं। ये बिजली की सीढ़ियों की तरह दिखते हैं जिनमें पायदान (rungs) होते हैं, जहाँ प्रत्येक पायदान एक नियम है: "यदि पानी का टैंक भर जाता है, तो पंप को बंद कर दें।"
लंबे समय तक, कंप्यूटर पर इन लैडर ड्रॉइंग्स को सहेजने के दो तरीके थे:
- टेक्स्ट लिस्ट (The Text List): निर्देशों की एक सरल, चरण-दर-चरण सूची (जैसे कि एक रेसिपी)।
- ग्राफिकल मैप (The Graphical Map): एक दृश्य मानचित्र जहाँ टुकड़ों को अदृश्य तारों से जोड़ा जाता है, जिन्हें ID नंबरों द्वारा पहचाना जाता है (जैसे कि एक सबवे मैप जहाँ स्टेशनों को लाइनों से जोड़ा जाता है)।
समस्या: "घोस्ट" (भूतिया) प्रोग्राम
शोधकर्ताओं के पास ESBMC-PLC नामक एक शक्तिशाली टूल था जो सुरक्षा त्रुटियों की जाँच करने के लिए इन प्रोग्रामों को चेक कर सकता था। यह टेक्स्ट लिस्ट फॉर्मेट पर पूरी तरह से काम करता था।
हालाँकि, जब उन्होंने इसमें ग्राफिकल मैप फॉर्मेट (जो कि CONTROLLINO और OpenPLC जैसे आधुनिक सॉफ्टवेयर वास्तव में उपयोग करते हैं) डाला, तो टूल भ्रमित हो गया। इसने मैप को देखा, ID नंबरों और तारों को देखा, लेकिन यह नहीं समझ पाया कि वे कैसे जुड़े हुए हैं।
चूँकि यह मैप को पढ़ नहीं सका, इसने मान लिया कि कुछ भी नहीं हो रहा है। इसने सोचा कि हर स्विच बंद है और हर पंप रुका हुआ है।
- परिणाम: टूल ने कहा, "सब कुछ सुरक्षित है!"
- पकड़ने वाली बात: यह झूठ बोल रहा था। यह इसलिए सुरक्षित नहीं था क्योंकि लॉजिक मौजूद था; बल्कि यह इसलिए "सुरक्षित" था क्योंकि टूल एक खाली कमरे को देख रहा था। इसे वैक्यूअस वेरिफिकेशन (vacuous verification) कहा जाता है—यह ऐसा है जैसे यह कहना कि एक बंद दरवाजा सुरक्षित है क्योंकि आप यह जांचना भूल गए कि कोई खिड़की खुली है या नहीं।
समाधान: ESBMC-GraphPLC
लेखकों ने इस समस्या को ठीक करने के लिए ESBMC-GraphPLC नामक एक नया मॉड्यूल बनाया। इसे एक डिटेक्टिव (जासूस) को नियुक्त करने जैसा समझें जो ग्राफिकल मैप में घूमकर उसे वापस उस भाषा में अनुवाद कर सके जिसे सुरक्षा जाँचने वाला टूल समझ सके।
यहाँ उनका "डिटेक्टिव" सरल उपमाओं का उपयोग करके कैसे काम करता है, यह दिया गया है:
1. टॉर्च के साथ डिटेक्टिव (DFS एल्गोरिदम)
यह टूल डेप्थ-फर्स्ट सर्च (DFS) नामक एक विधि का उपयोग करता है। कल्पना करें कि एक जासूस तारों की भूलभुलैया में घूम रहा है। वे लैडर के बाईं ओर (पावर सोर्स) से शुरू करते हैं और दाईं ओर के हर संभावित रास्ते का अनुसरण करते हैं।
- वे तार के हर कनेक्शन को ट्रेस करते हैं।
- वे हर स्विच (कॉन्टैक्ट) को लिखते हैं जिससे वे गुजरते हैं।
- वे तब रुकते हैं जब वे डिवाइस (कॉइल/पंप) तक पहुँच जाते हैं।
- ऐसा करके, वे लैडर रंंग के सटीक लॉजिक को फिर से बनाते हैं, जिससे विजुअल मैप वापस एक स्पष्ट "If-Then" नियम में बदल जाता है।
2. ट्रैफिक पुलिस (क्रम का महत्व)
इन डायग्रामों में, कभी-कभी एक ही डिवाइस के लिए एक "सेट" स्विच (चालू करने वाला) और एक "रीसेट" स्विच (बंद करने वाला) होता है। क्रम मायने रखता है!
- यदि एक ही पल के भीतर "सेट" के बाद "रीसेट" होता है, तो डिवाइस बंद रहता है।
- यदि "सेट", "रीसेट" के बाद होता है, तो डिवाइस चालू रहता है।
नया टूल फ़ाइल में एक विशिष्ट सूची (rightPowerRailसीक्वेंस) को देखता है ताकि यह देख सके कि कौन सा स्विच पहले आता है, जो एक ट्रैफिक पुलिस की तरह काम करता है जो सुनिश्चित करता है कि "सेट" कार "रीसेट" कार से पहले जाए। यह सुनिश्चित करता है कि लॉजिक वैसा ही हो जैसा वास्तविक मशीनें व्यवहार करती हैं।
3. अनुमान लगाने का खेल (I/O Inference)
कभी-कभी मैप यह नहीं बताता कि कौन से तार "इनपुट" (सेंसर) हैं और कौन से "आउटपुट" (मोटर) हैं। टूल अनुमान लगाने का तीन-चरणीय खेल खेलता है:
- चरण 1: आधिकारिक एड्रेस लेबल (जैसे इनपुट के लिए
%IX) देखें। यदि मिले, तो यह सटीक है। - चरण 2: यदि कोई लेबल नहीं है, तो व्यवहार देखें। यदि कोई तार केवल एक स्विच के रूप में उपयोग किया जाता है, तो वह शायद एक इनपुट है। यदि वह केवल किसी चीज़ को चालू करने के लिए उपयोग किया जाता है, तो वह शायद एक आउटपुट है।
- चरण 3: यदि अभी भी अनिश्चित हैं, तो इसे एक "रहस्यमय वेरिएबल" के रूप में मानें जो कुछ भी हो सकता है। यह एक सुरक्षित दांव है क्योंकि यह सभी संभावनाओं की जाँच करता है, जिससे यह सुनिश्चित होता है कि कुछ भी छूटा नहीं है।
परिणाम
टीम ने इस नए डिटेक्टिव का परीक्षण तीन वास्तविक-दुनिया के प्रोग्रामों (वॉटर पंप, सीढ़ी की लाइटें, और डिमर लाइटें) पर किया।
- पहले: टूल ने एक खाली कमरा देखा और "सुरक्षित" कहा (गलत तरीके से)।
- बाद में: टूल ने पूरा लॉजिक देखा, सेंसर इनपुट के हर संभावित संयोजन की जाँच की, और पुष्टि की कि प्रोग्राम वास्तव में सुरक्षित थे।
- गति: इसने यह काम 70 मिलीसेकंड से भी कम समय में किया (इंसानी पलक झपकने से भी तेज़)।
- सुरक्षा: इसने पुराने टूल को खराब नहीं किया। 11 प्रोग्राम जो टेक्स्ट लिस्ट के साथ पहले से ही काम कर रहे थे, वे भी पूरी तरह से काम करते रहे।
यह अभी क्या नहीं कर सकता (सीमाएँ)
पेपर ईमानदारी से बताता है कि डिटेक्टिव अभी भी किन चीजों के साथ संघर्ष कर रहा है:
- जटिल टाइमर (Complex Timers): यदि किसी रंंग में टाइमर शामिल है (जैसे, "5 सेकंड प्रतीक्षा करें, फिर चालू करें"), तो टूल वर्तमान में "प्रतीक्षा" वाले हिस्से को अनदेखा कर देता है और इसे एक रैंडम गेस की तरह मानता है। यह सुरक्षित है, लेकिन यह टाइमिंग को नहीं समझता है।
- नेस्टेड मैप्स (Nested Maps): कुछ जटिल डायग्राम अन्य सेक्शन के अंदर छोटे मैप्स छिपा देते हैं (जैसे स्टेप के अंदर एक्शन)। डिटेक्टिव कभी-कभी इन छिपे हुए कमरों को मिस कर देता है।
सारांश
संक्षेप में, लेखकों ने एक ट्रांसलेटर बनाया है जो सुरक्षा जाँचने वाले सॉफ़्टवेयर को आधुनिक औद्योगिक सॉफ़्टवेयर द्वारा उपयोग किए जाने वाले विजुअल लैडर डायग्राम को आखिरकार "पढ़ने" की अनुमति देता है। उन्होंने एक ऐसे टूल को बदला जो अंधे होकर कह रहा था कि "सब कुछ ठीक है" और उसे एक ऐसे टूल में बदल दिया जो वास्तव में लॉजिक को समझता है और यह साबित कर सकता है कि मशीन टूटेगी नहीं या किसी को चोट नहीं पहुँचाएगी।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।