स्थानांतरण ऑपरेशंस
डेटा ट्रांसफर और प्रबंधन
डेटा ट्रांसफर आपके PLC प्रोग्राम का परिसंचरण तंत्र है। वेरिएबल प्रतियों, स्ट्रक्चर सीरियलाइजेशन और मेमोरी ब्लॉक हेरफेर को कुशलतापूर्वक प्रबंधित करें।
TIA पोर्टल में स्थानांतरण ऑपरेशंस क्या हैं?
स्थानांतरण ऑपरेशंस एक मेमोरी स्थान से दूसरे स्थान पर डेटा कॉपी करने की अनुमति देते हैं। वे एक वेरिएबल की सरल प्रतिलिपि (MOVE) से लेकर संचार के लिए संपूर्ण स्ट्रक्चर के जटिल हेरफेर (Serialize/Deserialize) या सन्निहित डेटा क्षेत्रों (MOVE_BLK) के प्रबंधन तक होते हैं।
TIA पोर्टल प्रतीकात्मक पहुंच, Variant प्रकारों के माध्यम से गतिशील प्रबंधन और Array DB के लिए अनुकूलित कार्यों के लिए आधुनिक निर्देश प्रदान करता है, जबकि पुराने S7-300 सिस्टम के साथ संगतता के लिए लेगेसी निर्देशों को बनाए रखता है।
बुनियादी ट्रांसफर
मौलिक प्रतिलिपि और स्वरूपण निर्देश
MOVE — मान कॉपी करें
MOVEयह क्या करता है
इनपुट IN की सामग्री को आउटपुट OUT में कॉपी करता है। यदि डेटा प्रकार भिन्न है, तो सुरक्षित होने पर एक अंतर्निहित रूपांतरण हो सकता है।
इसका उपयोग कब करें
वेरिएबल को इनिशियलाइज़ करना, HMI सेटपॉइंट कॉपी करना, या गणना परिणामों को स्थानांतरित करना।
प्रो टिप्स
आप एक साथ कई गंतव्यों में मान कॉपी करने के लिए कई आउटपुट (OUT1, OUT2...) जोड़ सकते हैं।
SCL में, बस असाइनमेंट का उपयोग करें: destination := source;
लगभग सभी डेटा प्रकारों (Bool, Int, Real, Struct, String) के साथ काम करता है।
Serialize / Deserialize
SERये क्या करते हैं
Serialize एक जटिल स्ट्रक्चर को अनुक्रमिक बाइट स्ट्रीम (Array of Byte) में बदल देता है। Deserialize इसके विपरीत करता है।
इसका उपयोग कब करें
संचार प्रोटोकॉल (TCP/IP, UDP) या कॉम्पैक्ट स्टोरेज के माध्यम से भेजने के लिए डेटा तैयार करना।
प्रो टिप्स
गंतव्य बफर में फिल इंडेक्स को ट्रैक करने के लिए POS पैरामीटर का उपयोग करें।
उन तृतीय-पक्ष प्रणालियों के साथ विनिमय के लिए आवश्यक है जो सीमेंस UDT को नहीं समझते हैं।
सुनिश्चित करें कि रनटाइम त्रुटियों से बचने के लिए बफर आकार पर्याप्त है।
SWAP — अदला-बदली
SWAPयह क्या करता है
ऑपरेंड IN में बाइट क्रम (Endianness) को उलट देता है।
इसका उपयोग कब करें
'Little-Endian' प्रारूप का उपयोग करने वाले उपकरणों के साथ संचार जबकि PLC 'Big-Endian' का उपयोग करता है।
प्रो टिप्स
आमतौर पर Word या DWord प्रकारों पर उपयोग किया जाता है।
कुछ Modbus सेंसर से डेटा संसाधित करने के लिए उपयोगी।
उल्टा प्राप्त ASCII कोड को पुनर्गठित करने के लिए उपयोग किया जा सकता है।
ब्लॉक ट्रांसफर
बड़े और सन्निहित मेमोरी क्षेत्रों का हेरफेर
MOVE_BLK / UMOVE_BLK
MOVE_BLKयह क्या करता है
एक स्रोत Array से गंतव्य Array में तत्वों की एक निश्चित संख्या कॉपी करता है। UMOVE_BLK गैर-व्यवधान योग्य (परमाणु) संस्करण है।
इसका उपयोग कब करें
बफर प्रबंधन, ऐतिहासिक डेटा संग्रह, या विनिर्माण व्यंजनों की नकल करना।
प्रो टिप्स
प्रारंभिक इंडेक्स (COUNT) कॉपी किए जाने वाले तत्वों की संख्या को परिभाषित करता है।
UMOVE_BLK यह सुनिश्चित करता है कि कॉपी करने के दौरान अलार्म OB द्वारा डेटा संशोधित न किया जाए।
स्रोत और गंतव्य डेटा प्रकार समान होने चाहिए।
MOVE_BLK_VARIANT
यह क्या करता है
MOVE_BLK का उन्नत संस्करण जो लचीले एड्रेसिंग के लिए Variant डेटा प्रकारों का समर्थन करता है।
इसका उपयोग कब करें
विभिन्न आकारों या प्रकारों के सरणियों पर काम करने वाले पुन: प्रयोज्य लाइब्रेरी ब्लॉक विकसित करना।
प्रो टिप्स
उन सरणियों के बीच कॉपी करने की अनुमति देता है जिनके प्रकार रनटाइम पर निर्धारित होते हैं।
COUNT पैरामीटर को स्वचालित करने के लिए CountOfElements का उपयोग करें।
जेनेरिक प्रोग्रामिंग के लिए S7-1500 में बहुत शक्तिशाली।
क्षेत्र भरें
मेमोरी रेंज का तेज़ इनिशियलाइज़ेशन
FILL_BLK / UFILL_BLK
FILLयह क्या करता है
इनपुट IN पर निर्दिष्ट एकल मान के साथ मेमोरी क्षेत्र (Array) भरता है।
इसका उपयोग कब करें
माप सरणी को शून्य पर रीसेट करना, या डिफ़ॉल्ट मान के साथ बफर शुरू करना।
प्रो टिप्स
इंटरप्ट के साथ साझा किए गए महत्वपूर्ण क्षेत्रों के लिए UFILL_BLK बेहतर है।
एक बड़ी सरणी को इनिशियलाइज़ करने के लिए FOR लूप की तुलना में बहुत अधिक प्रदर्शनकारी।
COUNT निर्दिष्ट पॉइंटर से भरे जाने वाले तत्वों की संख्या निर्दिष्ट करता है।
Scatter / Gather
बाइट का विखंडन और संयोजन
SCATTER / GATHER
ये क्या करते हैं
SCATTER एक शब्द (Word, DWord...) को एक स्ट्रक्चर या सरणी में व्यक्तिगत बिट्स में तोड़ देता है। GATHER इसके विपरीत करता है।
इसका उपयोग कब करें
नैदानिक शब्द से स्थिति बिट्स निकालना या नियंत्रण बिट्स से कमांड शब्द बनाना।
प्रो टिप्स
बड़ी संख्या में बिट एक्सेस (जैसे: %X0) को लाभप्रद रूप से बदलता है।
S7-1200 और S7-1500 पर उपलब्ध।
स्वच्छ और बनाए रखने में आसान कोड सुनिश्चित करता है।
Array DB पहुंच
सरणी-प्रकार डेटा ब्लॉक में पढ़ना और लिखना
ReadFromArrayDB / WriteToArrayDB
ये क्या करते हैं
'Array DB' के रूप में कॉन्फ़िगर किए गए डेटा ब्लॉक में किसी विशिष्ट तत्व को पढ़ने या लिखने की अनुमति देते हैं।
इसका उपयोग कब करें
बड़ी डेटा सूचियों का प्रबंधन जहां अनुक्रमण गतिशील और तेज़ होना चाहिए।
प्रो टिप्स
'L' संस्करण (जैसे: ReadFromArrayDBL) कम लगातार डेटा के लिए लोड मेमोरी तक पहुँचते हैं।
Array DB का उपयोग अक्सर क्लासिक इंडेक्स्ड एक्सेस की तुलना में अधिक प्रदर्शनकारी होता है।
जांचें कि पहुंच त्रुटि से बचने के लिए इंडेक्स सीमा के भीतर है।
Variant हेरफेर
डायनामिक प्रोग्रामिंग के लिए उपकरण
VariantGet / VariantPut
ये क्या करते हैं
VariantGet एक Variant वेरिएबल के मान को एक टाइप्ड वेरिएबल में निकालता है। VariantPut एक टाइप्ड मान को एक Variant वेरिएबल में लिखता है।
इसका उपयोग कब करें
उस डेटा को संसाधित करना जिसका सटीक प्रकार केवल ब्लॉक कॉल के समय ज्ञात होता है।
प्रो टिप्स
मान निकालने से पहले प्रकार की जांच करने के लिए EQ_Type का उपयोग करें।
जेनेरिक संचार कार्य बनाने के लिए मौलिक।
यदि Variant किसी Array की ओर इशारा करता है तो CountOfElements तत्वों की संख्या लौटाता है।
Array सीमाएँ
गतिशील सीमा निर्धारण
LOWER_BOUND / UPPER_BOUND
यह क्या करता है
एक Variant पैरामीटर के रूप में पारित सरणी की निचली (LOWER) या ऊपरी (UPPER) सीमा लौटाता है।
इसका उपयोग कब करें
अज्ञात आकार की सरणी पर लूप करना (जैसे: Array[*] of MyUDT)।
प्रो टिप्स
मजबूत FOR लूप लिखने के लिए आवश्यक: FOR i := LOWER_BOUND(...) TO UPPER_BOUND(...) DO
एकल और बहु-आयामी सरणियों दोनों पर काम करता है।
DIM पैरामीटर वांछित आयाम निर्दिष्ट करता है (डिफ़ॉल्ट 1)।
लेगेसी निर्देश
पुराने S7-300/400 सिस्टम के साथ संगतता
BLKMOV, FILL और FieldRead/FieldWrite जैसे निर्देश संगतता के लिए बनाए रखे गए हैं। नए S7-1200/1500 प्रोजेक्ट के लिए, MOVE_BLK, FILL_BLK और प्रत्यक्ष प्रतीकात्मक पहुंच को प्राथमिकता दें।
कॉपी विधियों की तुलना
सही स्थानांतरण निर्देश चुनना
| आपको चाहिए... | अनुशंसित निर्देश | उदाहरण |
|---|---|---|
| एक साधारण वेरिएबल कॉपी करें | MOVE | सेटपॉइंट -> वास्तविक |
| मेमोरी क्षेत्र कॉपी करें | MOVE_BLK | FIFO बफर |
| एक सरणी इनिशियलाइज़ करें | FILL_BLK | त्रुटि रीसेट |
| TCP संदेश तैयार करें | Serialize | स्ट्रक्चर -> बाइट स्ट्रीम |
| एक शब्द को बिट्स में तोड़ें | SCATTER | शब्द निदान -> स्ट्रक्चर |
| गतिशील पहुंच | VARIANT | यूनिवर्सल लाइब्रेरी ब्लॉक |
अक्सर पूछे जाने वाले प्रश्न
MOVE और MOVE_BLK में क्या अंतर है?
MOVE का उद्देश्य एक बार में एक एकल मान या एक पूर्ण स्ट्रक्चर को कॉपी करना है। MOVE_BLK को सरणी के एक हिस्से (लगातार तत्वों की एक निश्चित संख्या) को कॉपी करने के लिए अनुकूलित किया गया है।
MOVE_BLK के बजाय UMOVE_BLK का उपयोग क्यों करें?
'U' का अर्थ है Uninterruptible (अबाधित)। यह निर्देश सुनिश्चित करता है कि कॉपी ऑपरेशन अलार्म चक्र (प्राथमिकता वाले OB) द्वारा बाधित नहीं होगा, जिससे कॉपी किए गए डेटा की कुल स्थिरता सुनिश्चित होती है।
Serialize और Deserialize का उपयोग कब करें?
ये निर्देश तब महत्वपूर्ण होते हैं जब आपको TSEND/TRCV जैसे 'रॉ' प्रोटोकॉल के माध्यम से या तृतीय-पक्ष उपकरणों को संरचित डेटा भेजने की आवश्यकता होती है। वे बाइट एलाइनमेंट को मानकीकृत तरीके से संभालते हैं।
क्या MOVE_BLK पूर्ण एड्रेस (P#DB1.DBX0.0...) के साथ काम करता है?
हाँ, लेकिन TIA पोर्टल प्रतीकात्मक पहुंच के उपयोग को प्रोत्साहित करता है। जटिल पूर्ण एड्रेसिंग के लिए, BLKMOV (Legacy) अभी भी उपयोग किया जाता है, हालांकि MOVE_BLK_VARIANT अनुशंसित आधुनिक समाधान है।