Date and Time
Temporal Logic
अपने PLC के क्लॉक पर महारत हासिल करें। सटीक इवेंट टाइमस्टैम्पिंग से लेकर जटिल टाइम कैलकुलेशन और फॉर्मेट कन्वर्जन तक, हर मिलीसेकंड को कंट्रोल करें।
PLC में समय का प्रबंधन क्यों करें?
इंडस्ट्रियल ऑटोमेशन के लिए समय प्रबंधन (Time management) अत्यंत महत्वपूर्ण है। यह प्रोडक्शन इवेंट्स की सटीक लॉगिंग, शेड्यूल्ड मेंटेनेंस टास्क को ट्रिगर करने, मशीन साइकिल टाइम की गणना करने और NTP प्रोटोकॉल के माध्यम से डिस्ट्रिब्यूटेड सिस्टम को सिंक्रोनाइज़ करने की अनुमति देता है।
आधुनिक Siemens PLCs, DTL (Date and Time Long) जैसे एडवांस डेटा टाइप प्रदान करते हैं जो बिना किसी जटिल बिट हेरफेर के व्यक्तिगत घटकों (Year, Month, Day, Hour) तक सीधी पहुंच प्रदान करते हैं, जिससे प्रोग्रामिंग पुराने DT फॉर्मेट की तुलना में बहुत सरल हो जाती है।
Reading Time
सिस्टम और लोकल क्लॉक तक पहुंच
T_CONV — System Time Extraction
T_CONVयह क्या करता है
एक डेट/टाइम वैल्यू से विशिष्ट घटकों को निकालता है या फॉर्मेट के बीच कंवर्ट करता है। रॉ टाइमस्टैम्प से पठनीय घंटे/मिनट प्राप्त करने के लिए यह आवश्यक है।
कब उपयोग करें
जब आपको एक पूर्ण Date_And_Time टैग से HMI पर केवल समय प्रदर्शित करने की आवश्यकता हो।
प्रो टिप्स
आसान लॉगिंग के लिए TOD (Time_Of_Day) को String में बदलने के लिए T_CONV का उपयोग करें।
ओवरफ्लो त्रुटियों से बचने के लिए सुनिश्चित करें कि इनपुट और आउटपुट टाइप संगत (compatible) हैं।
SCL में, यह निर्देश अक्सर साधारण असाइनमेंट द्वारा आंतरिक रूप से नियंत्रित किया जाता है।
RD_SYS_T — Read System Time
RD_SYS_Tयह क्या करता है
CPU का वर्तमान सिस्टम समय (UTC) पढ़ता है। RD_LOC_T के विपरीत, इसमें डेलाइट सेविंग टाइम या टाइम ज़ोन ऑफसेट शामिल नहीं होते हैं।
कब उपयोग करें
आंतरिक लॉगिंग के लिए आदर्श जहाँ एक निरंतर, बिना जंप वाले समय संदर्भ की आवश्यकता होती है (DST परिवर्तन के दौरान समस्याओं से बचाता है)।
प्रो टिप्स
वैश्विक निरंतरता सुनिश्चित करने के लिए डेटाबेस स्टोरेज के लिए हमेशा UTC का उपयोग करें।
RET_VAL आउटपुट स्टेटस की जानकारी प्रदान करता है (जैसे, यदि क्लॉक सिंक्रोनाइज़ है)।
यदि आपको 'टेक्निकल' और 'ह्यूमन' दोनों समय प्रदर्शित करने की आवश्यकता है, तो RD_LOC_T के साथ कंबाइन करें।
अंकगणित (Arithmetic)
अवधि और टाइमस्टैम्प पर गणना
T_ADD — Add Time
T_ADDयह क्या करता है
एक विशिष्ट डेट/टाइम पॉइंट में एक अवधि (Time या LTime) जोड़ता है। यह मिनट, घंटे और दिनों के ओवरफ्लो को सही ढंग से संभालता है।
कब उपयोग करें
एक्सपायरी टाइम या शेड्यूल्ड रीस्टार्ट पॉइंट की गणना करना (जैसे, वर्तमान समय + 24 घंटे)।
प्रो टिप्स
डायनेमिक ड्यूरेशन के साथ कस्टम वॉचडॉग लागू करने के लिए बहुत उपयोगी है।
S7-1500 CPUs पर नैनोसेकंड सटीकता के लिए LTime टाइप का उपयोग करें।
यदि परिणाम अधिकतम तिथि (Year 2262) से अधिक हो जाता है, तो CPU त्रुटि स्थिति सेट करता है।
T_DIFF — Time Difference
T_DIFFयह क्या करता है
दो टाइमस्टैम्प के बीच के अंतर की गणना करता है और परिणाम को एक अवधि (Time या LTime) के रूप में लौटाता है।
कब उपयोग करें
एक प्रोसेस स्टेप की सटीक अवधि को मापना या मशीन के अपटाइम की गणना करना।
प्रो टिप्स
OEE (Overall Equipment Effectiveness) गणना के लिए बिल्कुल सही।
एक बड़ी तिथि को छोटी तिथि से घटाने पर एक ऋणात्मक Time वैल्यू प्राप्त होती है।
S7-1200/1500 पर, अंतर घटकों तक आसान पहुंच के लिए DTL टैग का उपयोग करें।
रूपांतरण (Conversion)
फॉर्मेट परिवर्तन और String हैंडलिंग
T_CONV — DT to DTL Conversion
T_CONVयह क्या करता है
पुराने DATE_AND_TIME (8 bytes) को आधुनिक DTL फॉर्मेट में या इसके विपरीत बदलता है।
कब उपयोग करें
जब पुराने कोड या कम्युनिकेशन ब्लॉक्स को नए S7-1500 ऑप्टिमाइज्ड लॉजिक के साथ इंटरफेस किया जा रहा हो।
प्रो टिप्स
BCD (Binary Coded Decimal) की जटिलता से बचने के लिए सभी नए प्रोजेक्ट्स के लिए DTL को प्राथमिकता दें।
DTL में कंवर्ट करने से आप अपने कोड में सीधे 'MyTag.MONTH' लिख सकते हैं।
मिलीसेकंड की सटीकता के साथ सावधान रहें जो कुछ फॉर्मेट में ट्रंकेट हो सकती है।
DT_TO_STRING — Serializing Time
DT_TO_STRयह क्या करता है
एक डेट/टाइम वैल्यू को पठनीय String फॉर्मेट में बदलता है। STRING_TO_DT इसका उल्टा करता है।
कब उपयोग करें
मेमोरी कार्ड पर CSV फ़ाइल में टाइमस्टैम्प भेजना या वेब API के साथ संवाद करना।
प्रो टिप्स
आउटपुट स्ट्रिंग ISO 8601 फॉर्मेट (YYYY-MM-DD-HH:MM:SS.ms) का पालन करती है।
एक्सटर्नल SQL डेटाबेस से प्राप्त तिथियों को पार्स करने के लिए STRING_TO_DT का उपयोग करें।
ध्यान दें कि String ऑपरेशंस CPU पर अधिक बोझ डालते हैं; उन्हें फास्ट लूप्स में कम उपयोग करें।
DATE_AND_TIME बनाम DTL
सही टेम्पोरल स्ट्रक्चर का चयन
| फीचर | DATE_AND_TIME (पुराना) | DTL (आधुनिक) |
|---|---|---|
| आकार (Size) | 8 Bytes | 12 Bytes |
| एन्कोडिंग | BCD (पढ़ने में जटिल) | Integers (सीधे पठनीय) |
| कंपोनेंट एक्सेस | बिट मास्किंग की आवश्यकता | स्ट्रक्चरल (Tag.Month) |
| रेंज | 1990 से 2089 | 1970 से 2262 |
| S7-1200/1500 सपोर्ट | केवल संगतता | नेटिव और अनुशंसित |
| सटीकता | 10 ms | 1 नैनोसेकंड |
अक्सर पूछे जाने वाले प्रश्न
System Time और Local Time के बीच क्या अंतर है?
System Time (RD_SYS_T) हमेशा UTC होता है, जो एक स्थिर संदर्भ प्रदान करता है। Local Time (RD_LOC_T) आपके विशिष्ट टाइम ज़ोन और CPU प्रॉपर्टीज़ में कॉन्फ़िगर किए गए Daylight Saving Time (DST) नियमों के लिए एडजस्ट होता है।
PLC क्लॉक को सर्वर के साथ कैसे सिंक्रोनाइज़ करें?
CPU Hardware Configuration में NTP (Network Time Protocol) सक्षम करें। अपने टाइम सर्वर का IP प्रदान करें, और PLC स्वचालित रूप से अपने आंतरिक क्लॉक को एडजस्ट कर लेगा।
मेरा DATE_AND_TIME हेक्स में अजीब वैल्यू क्यों दिखाता है?
पुराना DT, BCD एन्कोडिंग का उपयोग करता है। डेसीमल में 25 की वैल्यू BCD में 16#25 के रूप में स्टोर होती है। वैल्यू को सही ढंग से पढ़ने के लिए हमेशा कन्वर्जन इंस्ट्रक्शंस या DTL का उपयोग करें।
क्या मैं सीधे दो DTL टैग के बीच अंतर की गणना कर सकता हूँ?
SCL में, आप बस दो DTL टैग के बीच '-' ऑपरेटर का उपयोग कर सकते हैं। TIA Portal आपके लिए स्वचालित रूप से T_DIFF इंस्ट्रक्शन को कॉल करेगा।