प्रकाशित: 22 अक्टूबर 2026 · पढ़ने में 6 मिनट
यह हमारे अपने सॉफ़्टवेयर की कहानी है। यह हमारी अपनी टेस्टिंग में, एक डेमो लाइन पर पकड़ी गई, और इसे ठीक करके verify किया जा चुका है। हम इसे इसलिए प्रकाशित कर रहे हैं क्योंकि यही ग़लती लगभग किसी भी ऐसे प्लांट में बिना ध्यान में आए बैठी रह सकती है जो PLC डेटा को edge gateway के ज़रिए भेजता है, और क्योंकि इसके पकड़े जाने का तरीका रिलीज़ गेट के बारे में कुछ उपयोगी बताता है।
हाल ही में एक असली PLC पर एक टेस्ट बैच चला, जिसकी ISA-88 रेसिपी tablet granulation जैसी थी। एक phase में binder डोज़ किया गया, जिसका target 2.5 kg और tolerance ±5 % था, यानी 2.375 kg से 2.625 kg तक कुछ भी स्वीकार्य था।
बैच रिकॉर्ड ने 2.3 kg दिखाया। जब QA ने disposition खोला, तो रिलीज़ गेट ने ACCEPT मना कर दिया: मटीरियल रेसिपी की tolerance से बाहर reconcile हुआ था। गेट ठीक इसी के लिए है।
दिलचस्प हिस्सा इसके बाद आया। उस डोज़ के लिए PLC की अपनी अंतिम वैल्यू 2.500 kg थी। डोज़ सही था। रिकॉर्ड ग़लत था।
दो डिज़ाइन फ़ैसलों ने — जो अपने-अपने में ठीक थे — मिलकर डोज़ का आख़िरी हिस्सा गँवा दिया।
पहला, edge gateway एक deadband इस्तेमाल करता था। ज़्यादातर edge सॉफ़्टवेयर की तरह, वह analog वैल्यू by exception publish करता था: floating-point वैल्यू तभी भेजी जाती थी जब पिछली भेजी गई वैल्यू के बाद वह 0.2 से ज़्यादा बदल चुकी हो। Deadband के साथ report-by-exception आम तरीका है। यह डिग्री के सौवें हिस्से तक डगमगाने वाले तापमान को नेटवर्क पर बाढ़ लाने से रोकता है।
दूसरा, MES हर डोज़ को एक बार रिकॉर्ड करता था, जब उसका phase पूरा होता। Phase पूरा होने पर वह उसे मिली सबसे ताज़ा डोज़ वैल्यू लेकर बैच रिकॉर्ड में लिख देता था।
डोज़िंग के दौरान वैल्यू बढ़ती गई। Gateway ने उसे क़दमों में भेजा। आख़िरी भेजा गया क़दम 2.3 kg था। अंतिम 0.2 kg की बढ़त, 2.3 से 2.5 तक, 0.2 से ज़्यादा नहीं थी, इसलिए वह कभी publish ही नहीं हुई। Phase पूरा हुआ, MES ने अपने पास की आख़िरी वैल्यू पढ़ी, और रिकॉर्ड में 2.3 kg चला गया।
यह एक बार की घटना नहीं थी। बाद के एक बैच में, एक और मटीरियल PLC के 0.833 के मुक़ाबले 0.700 रिकॉर्ड हुआ, इसी वजह से: आख़िरी बदलाव, 0.133, deadband से कम था।
Deadband की ग़लतियाँ आँख से पकड़ना मुश्किल है। डोज़ का trend एक smooth चढ़ाव और अंत में एक सपाट लाइन दिखाता है। सपाट लाइन देखकर लगता है कि डोज़ पूरा हो गया; असल में वह आख़िरी वैल्यू है जिसने threshold पार किया था। PLC के पास पूरे समय सही वैल्यू थी। सिर्फ़ रिकॉर्ड और कंट्रोलर की तुलना ने यह अंतर उजागर किया, और वह भी इसलिए क्योंकि रिलीज़ गेट ने reconciliation को tolerance से मिलाकर जाँचा।
समाधान था उन दो तरह की वैल्यू को अलग करना जिन्हें एक जैसा माना जा रहा था:
MES अब भी phase पूरा होने पर कंट्रोलर का आँकड़ा रिकॉर्ड करता है। फ़र्क़ यह है कि अब उसके पास जो आँकड़ा होता है, वह हमेशा कंट्रोलर का अंतिम आँकड़ा होता है।
हमने इस बदलाव को असली लाइन पर अगले बैच में और एक simulator पर verify किया। बैच रिकॉर्ड में रिकॉर्ड हुआ हर डोज़ आख़िरी अंक तक PLC से मेल खाया।
इसमें से कुछ भी सिर्फ़ हमारे सॉफ़्टवेयर तक सीमित नहीं है। अगर आप किसी भी gateway के ज़रिए PLC डेटा को MES, historian या EBR तक भेजते हैं, तो यही गड़बड़ी हो सकती है।
Data integrity की भाषा में, रिकॉर्ड हुआ 2.3 kg accurate और original की कसौटी पर fail हुआ: वह न तो सही वैल्यू थी, न ही स्रोत पर कैप्चर की गई वैल्यू। यह यह भी दिखाता है कि complete क्यों मायने रखता है। Gateway का भेजा हर एक संदेश सही था। रिकॉर्ड इसलिए ग़लत था क्योंकि एक संदेश ग़ायब था, और डेटा में ऐसा कुछ नहीं था जो यह बताए।
PulseMQ edge gateway रिकॉर्ड होने वाली मात्राओं को हर सटीक बदलाव पर publish करता है और बाकी analog वैल्यू के लिए deadband बनाए रखता है। PulseMQ हर phase की असल डोज़, और पूरा होने पर अंतिम मात्रा और defects, PLC से रिकॉर्ड करता है — ऐसी ISA-88 रेसिपी के तहत जिसमें PLC master है। जब तक कोई मटीरियल रेसिपी की tolerance से बाहर reconcile हुआ है, QA रिलीज़ गेट ACCEPT मना करता है, और उसी समय बाकी सभी खुले कारण भी दिखाता है। Protocol पक्ष पर और जानकारी Sparkplug B क्या है में, और पूरा फ़्लो फ़ार्मास्युटिकल और GMP overview पर।
एक बैच लाइन पर पायलट करें। हम आपके PLC से जुड़ते हैं, उसके phases और असल डोज़ को रिकॉर्ड से मैप करते हैं, और आपका अपना QA आपके अपने बैच पर असली dispositions साइन करता है।
फ़ार्मा पायलट देखेंEdge gateway में deadband क्या होता है?
Report-by-exception publishing के लिए एक threshold: कोई analog वैल्यू तभी भेजी जाती है जब पिछली भेजी गई वैल्यू के बाद वह deadband से ज़्यादा बदल चुकी हो। इससे तापमान जैसे noisy signals का नेटवर्क ट्रैफ़िक कम होता है।
Deadband से बैच रिकॉर्ड ग़लत कैसे हो सकता है?
अगर MES किसी मात्रा को एक ही क्षण पर रिकॉर्ड करता है, जैसे phase पूरा होने पर, और उस मात्रा का आख़िरी बदलाव deadband से छोटा है, तो अंतिम वैल्यू कभी भेजी ही नहीं जाती। तब रिकॉर्ड में वह आख़िरी वैल्यू रहती है जिसने threshold पार किया था, कंट्रोलर की अंतिम वैल्यू नहीं।
इसे कैसे रोका जाए?
रिकॉर्ड होने वाली मात्राएँ, जैसे असल डोज़ (dose actuals) और अंतिम काउंट, deadband से बाहर रखकर हर सटीक बदलाव पर publish करें। Monitoring वैल्यू के लिए deadband बनाए रखें। इसे टेस्ट करें: ऐसा डोज़ चलाएँ जिसका आख़िरी increment deadband से छोटा हो, और रिकॉर्ड की तुलना PLC से करें।