← नवीनतम पेपर
⚡ electrical engineering

ESBMC-Arduino: Closing the Deployment Gap for Formal Verification of Open-Hardware PLCs

यह शोध पत्र ESBMC-Arduino को प्रस्तुत करता है, जो एक हार्डवेयर-वफादार सत्यापन ढांचा (framework) है जो एक डिक्लेरेटिव हार्डवेयर एब्स्ट्रैक्शन लेयर और साउंड इनपुट-रेंज मॉडलिंग को एकीकृत करके ओपन-हार्डवेयर PLCs के लिए परिनियोजन अंतराल (deployment gap) को पाटता है, ताकि आदर्श पूर्णांक धारणाओं (idealized integer assumptions) के कारण होने वाली गलत सूचनाओं को समाप्त किया जा सके और संसाधन-बाधित माइक्रोकंट्रोलर्स पर चलने वाले IEC 61131-3 प्रोग्रामों में वास्तविक विड्थ-डिपेंडेंट दोषों का पता लगाया जा सके।

मूल लेखक: Pierre Dantas, Lucas Cordeiro, Waldir Junior

प्रकाशित 2026-07-10
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Pierre Dantas, Lucas Cordeiro, Waldir Junior

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक पानी के टैंक को प्रबंधित करने के लिए एक रोबोट बना रहे हैं। आप अपने निर्देश एक विशेष भाषा में लिखते हैं जिसे IEC 61131-3 कहा जाता है, जो औद्योगिक मशीनों के लिए एक सार्वभौमिक रेसिपी बुक की तरह है। वर्षों से, इंजीनियरों ने इन रेसिपीज़ को जांचने के लिए "सुपर-रोबोट" सिम्युलेटर का उपयोग किया है। ये सिम्युलेटर जादूगरों की तरह होते हैं जो अनंत संख्याओं के साथ सोच सकते हैं; वे मान लेते हैं कि रोबोट अपने दिमाग में कोई भी संख्या रख सकता है, चाहे वह ऋणात्मक अनंत हो या धनात्मक अनंत, और सेंसर कल्पना की गई किसी भी वैल्यू की रिपोर्ट कर सकते हैं।

लेकिन यहाँ एक मोड़ है: वास्तविक रोबोट जिसे आप बनाते हैं, वह जादूगर नहीं है। वह एक छोटा, सस्ता माइक्रोकंट्रोलर (जैसे कि Arduino) है जो वास्तविक दुनिया में रहता है। इस छोटे चिप के पास एक बहुत ही विशिष्ट, सीमित मस्तिष्क होता है। यह केवल 32,767 तक की संख्याएँ रख सकता है। यदि कोई गणना इससे ऊपर जाती है, तो संख्या केवल बड़ी नहीं होती; यह टूट जाती है, नीचे की ओर वापस आ जाती है, और एक ऋणात्मक संख्या बन जाती है। यह एक कार के ओडोमीटर की तरह है जो 999,999 से वापस 000,000 पर आ जाता है।

बड़ा अंतर (The Great Disconnect)
पेपर इसे "डिप्लॉयमेंट गैप" कहता है। यह जादूगर के सपनों की दुनिया और रोबोट की तंग वास्तविकता के बीच का अंतर है।

लेखकों ने पाया कि जब इंजीनियरों ने अपने कोड की सुरक्षा जांचने के लिए पुराने "जादूगर" सिम्युलेटर का उपयोग किया, तो उन्हें भारी मात्रा में गलत अलार्म (false alarms) मिले। 123 वास्तविक दुनिया के प्रोग्रामों में से, पुराने सिम्युलेटरों ने 54 बार "खतरा!" चिल्लाकर चेतावनी दी (एक 44% गलत-अलार्म दर)। लेकिन जब उन्होंने बारीकी से देखा, तो उन्हें एहसास हुआ कि ये "खतरे" असंभव थे। सिम्युलेटर -32,764 जैसी सेंसर रीडिंग की कल्पना कर रहे थे। वास्तविक दुनिया में, इस रोबोट से जुड़ा एक सेंसर केवल 0 और 1,023 के बीच की संख्या पढ़ सकता है (क्योंकि यह एक 10-बिट सेंसर है)। -32,764 की वैल्यू एक थर्मामीटर द्वारा "ऋण 32,764 डिग्री" पढ़ने जैसी है—यह संभव ही नहीं है।

पेपर तर्क देता है कि इन पुराने सिम्युलेटरों पर भरोसा करना एक सुरक्षा गार्ड के "घुसपैठिया!" चिल्लाने जैसा है क्योंकि उसने एक भूत देखा। गार्ड तकनीकी रूप से भूत के बारे में "सही" है, लेकिन वह बेकार है क्योंकि भूत अस्तित्व में ही नहीं हैं। लेखक स्पष्ट रूप से इस विचार को खारिज करते हैं कि आप केवल गणितीय त्रुटियों की जांच करके बिना यह देखे कि सेंसर वास्तव में क्या देख सकते हैं, जांच कर सकते हैं। वे दिखाते हैं कि ऐसा करने से सत्यापन (verification) व्यवहार में "अनसाउंड" (अविश्वसनीय) हो जाता है।

जादुई समाधान: HAL डिस्क्रिप्टर (The Magic Fix: The HAL Descriptor)
इसे ठीक करने के लिए, लेखकों ने ESBMC-Arduino नामक एक नया टूल बनाया। इस टूल को एक "रियलिटी चेक" फ़िल्टर के रूप में समझें।

इससे पहले कि जादूगर सिम्युलेटर कोड को देखे, यह नया टूल स्वचालित रूप से हर सेंसर के साथ एक छोटा सा नोट जोड़ देता है। यह कहता है, "हे, याद रखना, यह सेंसर केवल 0 और 1,023 के बीच की संख्या दे सकता है।" यह सिम्युलेटर को यह भी याद दिलाता है, "और याद रखें, रोबोट का दिमाग केवल 32,767 तक की संख्या रख सकता है।"

जब सिम्युलेटर इन नियमों के साथ चलता है, तो जादू होता है:

  1. 54 गलत अलार्म तुरंत गायब हो जाते हैं। -32,764 का भूत चला जाता है क्योंकि सिम्युलेटर अब जानता है कि यह संख्या असंभव है।
  2. जो 32 प्रोग्राम पहले से ही सुरक्षित सिद्ध हुए थे, वे सुरक्षित रहते हैं।
  3. सबसे महत्वपूर्ण बात यह है कि इस टूल ने कोई वास्तविक बग मिस नहीं किया। इसने पाया कि पुराने सिम्युलेटर एक विशिष्ट प्रकार के वास्तविक खतरे को छिपा रहे थे: जब एक सेंसर रीडिंग को एक बड़ी संख्या से गुणा किया जाता है (जैसे कि कच्ची सेंसर वैल्यू को प्रतिशत में बदलना), तो गणित उस छोटे रोबोट के दिमाग को ओवरफ्लो कर सकता है।

वास्तविक खतरा (और यह कितना दुर्लभ है)
पेपर ने पाया कि जबकि "भूतिया अलार्म" आम थे, परीक्षण किए गए सार्वजनिक कोड में वास्तविक बग वास्तव में काफी दुर्लभ थे। उन्हें केवल उन विशिष्ट परिदृश्यों में वास्तविक दोष मिले जहाँ एक सेंसर रीडिंग को एक बड़ी स्थिरांक (constant) (जैसे कि 100) से गुणा किया गया था।

उदाहरण के लिए, यदि एक सेंसर 898 पढ़ता है (जो एक सामान्य, वास्तविक वैल्यू है), और कोड इसे 100 से गुणा करता है, तो परिणाम 89,800 होता है। यह 16-बिट रोबोट के दिमाग के लिए बहुत बड़ा है (अधिकतम 32,767)। संख्या वापस घूम जाती है, ऋणात्मक संख्या बन जाती है, और रोबोट सोचता है कि पानी का टैंक खाली है जबकि वास्तव में वह भर रहा है। नए टूल ने इस सटीक परिदृश्य को पकड़ा और इंजीनियरों को उस सेंसर रीडिंग का वास्तविक, भौतिक उदाहरण दिया जो क्रैश का कारण बनेगा।

वह जो पेपर दावा नहीं करता
लेखक इस बारे में बहुत ईमानदार हैं कि उन्होंने क्या नहीं किया। उन्होंने यह साबित नहीं किया कि अब हर प्रोग्राम सुरक्षित है। 123 प्रोग्रामों में से, 91 का परिणाम "अज्ञात" (unknown) रहा। ऐसा इसलिए नहीं है कि टूल टूटा हुआ है; बल्कि इसलिए है क्योंकि उन विशिष्ट प्रोग्रामों को सुरक्षित साबित करने के लिए वर्तमान इंजन के लिए गणित बहुत कठिन है। टूल ने शोर (गलत अलार्म) को सफलतापूर्वक हटा दिया और सिग्नल (वास्तविक प्रमाण) को बनाए रखा, लेकिन यह अभी भी सबसे कठिन पहेलियों को हल नहीं कर सका।

साथ ही, उन्होंने फ्लोटिंग-पॉइंट नंबरों (जैसे 3.14 जैसे दशमलव) या जटिल भौतिकी सिमुलेशन पर इसका परीक्षण नहीं किया। उन्होंने पूरी तरह से पूर्णांकों (integers) और बूलियन लॉजिक (ऑन/ऑफ स्विच) पर ध्यान केंद्रित किया।

मुख्य निष्कर्ष (The Bottom Line)
पेपर यह प्रदर्शित करता है कि ओपन-हार्डवेयर PLC (जैसे कि स्कूलों और छोटी फैक्ट्रियों में उपयोग किए जाने वाले) को सत्यापित करने के लिए, आप केवल गणित की जांच नहीं कर सकते; आपको हार्डवेयर की सीमाओं की भी जांच करनी होगी। स्वचालित रूप से एक "रियलिटी चेक" जोड़कर जो सिम्युलेटर को बताता है कि उसके सेंसर वास्तव में क्या कर सकते हैं, उन्होंने एक शोर भरे, अविश्वसनीय उपकरण को एक भरोसेमंद उपकरण में बदल दिया। उन्होंने लाखों नए बग नहीं खोजे, लेकिन उन्होंने टूल को "गलत चेतावनी" देने से रोक दिया, जिससे इंजीनियरों के लिए सुरक्षा जांच पर फिर से भरोसा करना संभव हो गया।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →