तुलना ऑपरेशंस
निर्णय तर्क और रेंज
मानों की तुलना औद्योगिक निर्णय तर्क का इंजन है। TIA पोर्टल में मानक कम्पैरेटर्स, रेंज परीक्षण और वैधता जांच में महारत हासिल करें।
TIA पोर्टल में तुलना ऑपरेशंस क्या हैं?
तुलना ऑपरेशंस आपको एक ही डेटा प्रकार (Integers, Reals, Time, आदि) के दो मानों की तुलना करने या यह जांचने की अनुमति देते हैं कि कोई मान परिभाषित सीमा के भीतर है या बाहर। वे अलार्म थ्रेशोल्ड, ट्रांज़िशन स्थितियां और रेगुलेशन लूप बनाने के लिए मौलिक हैं।
TIA पोर्टल मानक कम्पैरेटर्स (==, <>, >=, आदि), रेंज निर्देश (IN_Range, OUT_Range), फ्लोटिंग-पॉइंट नंबरों के लिए वैधता परीक्षण और Variant डेटा प्रकारों और DB पॉइंटर्स के लिए उन्नत निर्देश प्रदान करता है।
मानक कम्पैरेटर्स
दो ऑपरेंड के बीच समानता और असमानता का मूल्यांकन
CMP == — बराबर (Equal)
==यह क्या करता है
दो ऑपरेंड (IN1 और IN2) की तुलना करता है। यदि IN1, IN2 के बराबर है, तो निर्देश TRUE लौटाता है। यह लगभग सभी सरल डेटा प्रकारों का समर्थन करता है।
इसका उपयोग कब करें
जांचें कि क्या काउंटर अपने लक्ष्य तक पहुंच गया है, क्या HMI सेटपॉइंट वर्तमान मान से मेल खाता है, या क्या कोई विशिष्ट मशीन स्थिति सक्रिय है।
प्रो टिप्स
Real प्रकारों के साथ सावधान रहें: सटीकता के कारण सख्त समानता विफल हो सकती है। मार्जिन या रेंज को प्राथमिकता दें।
SCL में: IF value1 = value2 THEN ...
पहचान कोड सत्यापित करने के लिए आप Strings की तुलना कर सकते हैं।
CMP <> — बराबर नहीं (Not equal)
<>यह क्या करता है
यदि दोनों ऑपरेंड IN1 और IN2 भिन्न हैं तो TRUE लौटाता है। यह समानता का विलोम है।
इसका उपयोग कब करें
मान में परिवर्तन का पता लगाएं, सुनिश्चित करें कि सेंसर 0 नहीं लौटा रहा है, या सत्यापित करें कि ऑपरेटिंग मोड निषिद्ध मोड नहीं है।
प्रो टिप्स
अक्सर किसी क्रिया को ट्रिगर करने के लिए उपयोग किया जाता है जैसे ही कोई मान अपने सेटपॉइंट से विचलित होता है।
SCL में: IF value1 <> value2 THEN ...
यह देखने के लिए कि क्या दिनांक बदल गई है, टाइमस्टैम्प (DTL) की तुलना करने के लिए उपयोग किया जा सकता है।
CMP >= — से बड़ा या बराबर
>=यह क्या करता है
यदि पहला मान (IN1) दूसरे मान (IN2) से बड़ा या बराबर है तो TRUE लौटाता है।
इसका उपयोग कब करें
उच्च-स्तरीय अलार्म ट्रिगर करें, जब तक तापमान नहीं पहुंच जाता तब तक हीटिंग की अनुमति दें।
प्रो टिप्स
सुरक्षा थ्रेशोल्ड के लिए आदर्श जहां सीमा मान को स्थिति में शामिल किया जाना चाहिए।
SCL में: IF level >= setpoint THEN ...
यह जांचने के लिए Time प्रकारों के साथ उपयोग किया जा सकता है कि क्या न्यूनतम अवधि बीत चुकी है।
CMP <= — से छोटा या बराबर
<=यह क्या करता है
यदि IN1, IN2 से छोटा या बराबर है तो TRUE लौटाता है।
इसका उपयोग कब करें
निम्न-स्तरीय निगरानी, पंप रोकना, न्यूनतम दबाव को सत्यापित करना।
प्रो टिप्स
आउटपुट चैटरिंग से बचने के लिए अक्सर हिस्टेरेसिस के साथ जोड़ा जाता है।
Date और Time प्रकारों के साथ मूल रूप से काम करता है।
SCL में: IF pressure <= min_limit THEN ...
CMP > — से बड़ा (Greater than)
>यह क्या करता है
यदि IN1, IN2 से कड़ाई से बड़ा है तो TRUE लौटाता है।
इसका उपयोग कब करें
सख्त तुलना जिसमें लक्ष्य मान शामिल नहीं होना चाहिए।
प्रो टिप्स
ऑटोमेशन में >= की तुलना में कम उपयोग किया जाता है, लेकिन गणितीय एल्गोरिदम के लिए उपयोगी है।
SCL में: IF current > max THEN ...
लूप इंडेक्स तुलना (FOR) के लिए बेहतर।
CMP < — से छोटा (Less than)
<यह क्या करता है
यदि IN1, IN2 से कड़ाई से छोटा है तो TRUE लौटाता है।
इसका उपयोग कब करें
सख्त निचली सीमा परीक्षण।
प्रो टिप्स
यह जांचने के लिए उपयोगी है कि क्या कोई मान 'नकारात्मक' (val < 0) है।
SCL में: IF val < 0 THEN ...
वर्णों (अल्फाबेटिकल सॉर्टिंग) के साथ काम करता है।
रेंज ऑपरेशंस
यह जांचना कि क्या कोई मान अंतराल [MIN..MAX] के अंतर्गत आता है
IN_Range — रेंज के भीतर
IN_Rangeयह क्या करता है
जांचता है कि क्या कोई मान (VAL) निचली सीमा (MIN) और ऊपरी सीमा (MAX) के बीच है। अंतराल बंद है: MIN <= VAL <= MAX।
इसका उपयोग कब करें
ऑपरेटिंग विंडो निगरानी (जैसे, 2 और 5 बार के बीच दबाव), मशीन गति सत्यापन।
प्रो टिप्स
श्रृंखला में दो कम्पैरेटर्स को लाभप्रद रूप से बदलता है, जिससे नेटवर्क अधिक पठनीय हो जाता।
यदि MIN > MAX है, तो निर्देश हमेशा FALSE लौटाता है।
कई एनालॉग स्थितियों की आवश्यकता वाले 'Ready to Run' इंटरलॉक्स के लिए बहुत उपयोगी।
OUT_Range — रेंज के बाहर
OUT_Rangeयह क्या करता है
यदि मान (VAL) MIN और MAX द्वारा परिभाषित अंतराल के बाहर है तो TRUE लौटाता है। या तो VAL < MIN या VAL > MAX।
इसका उपयोग कब करें
विसंगति का पता लगाना या अत्यधिक थ्रेशोल्ड को पार करना (रेंज अलार्म)।
प्रो टिप्स
यह IN_Range का सटीक विलोम है।
प्रक्रिया अलार्म तर्क को सरल बनाने के लिए इसका उपयोग करें।
SCL में: res := (val < min) OR (val > max);
वैधता परीक्षण
फ्लोटिंग-पॉइंट नंबरों की अखंडता की जांच करना
|OK| — वैधता जांचें
|OK|यह क्या करता है
जांचता है कि क्या फ्लोटिंग-पॉइंट मान (Real या LReal) एक वैध संख्या है। यदि मान NaN (Not a Number) या Inf (Infinity) है तो FALSE लौटाता है।
इसका उपयोग कब करें
जटिल गणनाओं (विभाजन, वर्गमूल, लॉग) के बाद गणितीय त्रुटियों को फैलाने से बचने के लिए जो PLC को रोक सकती हैं।
प्रो टिप्स
एनालॉग आउटपुट या ड्राइव पर Real मान भेजने से पहले आवश्यक।
अप्रत्यक्ष रूप से शून्य से विभाजन का पता लगाने की अनुमति देता है।
विफल सेंसरों से फीडबैक फ़िल्टर करने के लिए उपयोगी।
|NOT_OK| — अमान्यता जांचें
|NOT_OK|यह क्या करता है
यदि फ्लोटिंग-पॉइंट मान अमान्य (NaN या Inf) है तो TRUE लौटाता है।
इसका उपयोग कब करें
गणना दोष बिट ट्रिगर करें या फ़ालबैक मान लागू करें।
प्रो टिप्स
यदि प्रक्षेपवक्र गणना विफल हो जाती है तो अपनी मशीन को सुरक्षित स्थिति में रखने के लिए इसका उपयोग करें।
अन्य भाषाओं में IS_NAN के बराबर।
SCL में: IF NOT OK(value) THEN ...
उन्नत तुलना (Variant)
डायनामिक प्रोग्रामिंग और जटिल प्रकारों के लिए निर्देश
EQ_Type / NE_Type
यह क्या करता है
Variant प्रकार के वेरिएबल के डेटा प्रकार की तुलना दूसरे वेरिएबल या परिभाषित प्रकार के साथ करता है।
इसका उपयोग कब करें
जेनेरिक ब्लॉक में जिन्हें विभिन्न डेटा प्रकारों को संसाधित करना होता है (जैसे: Int या Real स्वीकार करने वाला लॉगिंग ब्लॉक)।
प्रो टिप्स
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग और पुन: प्रयोज्य लाइब्रेरी के लिए आवश्यक।
डायनामिक मेमोरी एक्सेस को सुरक्षित करने की अनुमति देता है।
VariantGet निर्देश के साथ उपयोग किया जाता है।
IS_NULL / NOT_NULL
यह क्या करता है
जांचता है कि क्या पॉइंटर (Variant या DB_ANY) शून्य (किसी चीज़ की ओर इशारा नहीं कर रहा) है।
इसका उपयोग कब करें
अप्रत्यक्ष रूप से संबोधित DB का उपयोग करते समय एक्सेस त्रुटियों से बचें।
प्रो टिप्स
पॉइंटर के माध्यम से विधि कॉल करने या डेटा पढ़ने से पहले हमेशा NOT_NULL का परीक्षण करें।
C#/Java में 'Nothing' या 'null' ऑब्जेक्ट के बराबर।
PLC में लिंक्ड लिस्ट या डायनामिक स्ट्रक्चर के प्रबंधन के लिए अनिवार्य।
IS_ARRAY
यह क्या करता है
जांचता है कि क्या Variant वेरिएबल किसी ऐरे (Array) की ओर इशारा करता है।
इसका उपयोग कब करें
बैच प्रोसेसिंग फ़ंक्शंस या डेटा बफ़र्स की प्रोग्रामिंग।
प्रो टिप्स
ऐरे का आकार जानने के लिए इसे CountOfElements के साथ जोड़ें।
सार्वभौमिक सॉर्टिंग फ़ंक्शन बनाने की अनुमति देता है।
स्ट्रक्चर के ऐरे (UDT) के लिए भी काम करता है।
कम्पैरेटर्स की तुलना — किसका उपयोग करें?
अपने PLC तर्क के लिए सही निर्देश चुनना
| आप चाहते हैं... | इसका उपयोग करें | उदाहरण |
|---|---|---|
| सटीक समानता का परीक्षण करें | CMP == | उत्पाद कोड सही है |
| उच्च सुरक्षा थ्रेशोल्ड | CMP >= | दबाव > 10 बार |
| एक क्षेत्र में बनाए रखें | IN_Range | तापमान 18 और 24°C के बीच |
| Real त्रुटियों की निगरानी करें | |OK| | विभाजन परिणाम जांचें |
| DB पॉइंटर सत्यापित करें | NOT_NULL | रेसिपी DB लोड हो गया |
| Variant प्रकार सत्यापित करें | EQ_Type | इनपुट वास्तव में Int है |
अक्सर पूछे जाने वाले प्रश्न
Real नंबरों के साथ मेरी == तुलना कभी-कभी विफल क्यों हो जाती है?
Real नंबरों (फ्लोटिंग-पॉइंट) की सटीकता सीमित होती है। एक गणना 10.0 के बजाय 10.000001 दे सकती है। फ्लोटिंग-पॉइंट मानों की तुलना करने के लिए हमेशा थोड़े टॉलरेंस के साथ IN_Range (जैसे: 9.99 और 10.01 के बीच) का उपयोग करें।
IN_Range और श्रृंखला में दो कम्पैरेटर्स के बीच क्या अंतर है?
कार्यात्मक रूप से यह समान है। हालांकि, IN_Range ग्राफिक रूप से अधिक कॉम्पैक्ट, पढ़ने में आसान और अधिक प्रदर्शन करने वाला है क्योंकि PLC एक ही चरण में निर्देश को संसाधित करता है।
|OK| और |NOT_OK| निर्देश किसलिए हैं?
वे Real गणनाओं में 'मौन' त्रुटियों का पता लगाने के लिए उपयोग किए जाते हैं। यदि आप नकारात्मक संख्या का वर्गमूल निकालते हैं, तो परिणाम NaN होता है। |OK| परीक्षण के बिना, यह NaN आपकी अन्य सभी गणनाओं को दूषित कर देगा और CPU बंद होने का कारण बन सकता है।
क्या हम पूर्ण स्ट्रक्चर (UDT) की तुलना कर सकते हैं?
CMP == निर्देश सीधे दो स्ट्रक्चर की तुलना करने की अनुमति नहीं देता है। आपको प्रत्येक सदस्य की व्यक्तिगत रूप से तुलना करनी चाहिए या एक विशिष्ट ब्लॉक का उपयोग करना चाहिए जो मेमोरी क्षेत्रों की तुलना करता है।