2013-05-16 8 views
5

कई सीआईए विनिर्देशों को पढ़ने के बाद, मुझे अभी भी कैनोपेन में पीडीओ मैपिंग, प्रोसेस छवि और प्रोसेस डेटा एक्सचेंज को समझने में कठिनाई हो रही है।पीडीओ मानचित्रण क्या है?

मुझे पता है एसडीओ प्री-परिचालन स्थिति में कॉन्फ़िगरेशन सेटिंग्स के लिए उपयोग किया जाता है और प्रोटोकॉल ओवरहेड होता है (क्योंकि यह डेटा के 8 बाइट से अधिक स्थानांतरित कर सकता है)।

परिचालन स्थिति में, पीडीओ प्रक्रिया डेटा के इनपुट और आउटपुट के लिए उपयुक्त हैं। पीडीओ केवल अधिकतम 8 बाइट डेटा स्थानांतरित कर सकते हैं।

11 बिट्स की सीओबी-आईडी है जिसमें फ़ंक्शन कोड और नोड नंबर है। चूंकि नोड संख्या 7 बिट्स का उपयोग करती है, इसलिए हमारे पास अधिकतम 127 नोड्स (कैनोपेन 2.0 ए नेटवर्क के लिए) हो सकते हैं।

लेकिन चार टीपीडीओ और चार आरपीडीओ हैं जो मुझे भ्रमित कर रहे हैं। आपको कई टीपीडीओ और आरपीडीओ की आवश्यकता क्यों होगी? डिवाइस पैरामीटर और डिवाइस की कार्यक्षमता का वर्णन करने के लिए और डिवाइस की कार्यक्षमता का वर्णन करने के लिए डिवाइस प्रोफाइल को कहीं भी 6000h से 6FFFh तक प्रविष्टियों का उपयोग किया जा सकता है और इस श्रेणी के भीतर 8 अलग-अलग डिवाइसों का वर्णन किया जा सकता है। लेकिन नेटवर्क में 127 नोड्स हो सकते हैं तो यह 8 डिवाइस क्या है?

उत्तर

5

पीडीओ अधिक कुशल और असीमित संदेशों के लिए उपयोग किए जाने वाले संदेशों के प्रकार हैं। पीडीओ को एक सिंक संदेश के जवाब में या किसी घटना के जवाब में (एक डिजिटल इनपुट बदलने की तरह) में टाइमर पर भेजा जा सकता है। बस संदेश पेलोड के सभी 8 बाइट आपके डेटा के लिए उपलब्ध हैं। यह एक एसडीओ के विपरीत है जहां केवल 4 बाइट उपलब्ध हैं (ब्लॉक ट्रांसफर जैसे मल्टी-संदेश एसडीओ हैं)।

पीडीओ केवल एक समय में 8 बाइट स्थानांतरित कर सकते हैं क्योंकि यह एक बस बस संदेश का अधिकतम स्थानांतरण आकार है। इसे एक एसडीओ में तुलना करें जहां एक कमांड बाइट और 3 बाइट पता भेजा जाना चाहिए, अधिकतम 4 बाइट जानकारी छोड़कर।

डिफ़ॉल्ट रूप से किसी डिवाइस में 4 आरपीडीओ और 4 टीपीडीओ आवंटित होते हैं। 4 सिर्फ पीडीओ की डिफ़ॉल्ट संख्या है। अधिक व्यवस्था की जा सकती है, लेकिन आप उनके लिए "चैनल" बनाने के लिए ज़िम्मेदार हैं। वह मध्यस्थता आईडी चुन रहा है और यह सुनिश्चित कर रहा है कि उस आईडी का उपयोग कर बस पर कोई अन्य डिवाइस बात करने जा रहा है। आप एकाधिक पीडीओ चाहते हैं क्योंकि:

  1. संदेशों में अलग-अलग बस प्राथमिकताएं हैं। 0x180+$NODEID0x280+$NODEID, आदि पर बस मध्यस्थता जीतता है
  2. पीडीओ नोड्स द्वारा अपनी दक्षता प्राप्त करते हैं कि समय से पहले कौन सा डेटा भेजा जाएगा। इसका मतलब है कि उन्हें भेजने के अनुरोध की प्रतीक्षा नहीं है और न ही वे कहते हैं कि वे एसडीओ की तरह क्या डेटा भेज रहे हैं।
  3. पीडीओ के अंदर डेटा की पसंद बहुत गतिशील नहीं है। पीडीओ मानचित्रण को बदलने के लिए उपकरणों को अक्सर संचालन राज्य से बाहर लाया जाना पड़ता है। कुछ उपकरणों में पीडीओ मानचित्रण पूरी तरह स्थिर है और इसे बिल्कुल बदला नहीं जा सकता है।

टीपीडीओ एक डिवाइस से प्रेषित संदेश होते हैं जबकि आरपीडीओ संदेश होते हैं जो किसी डिवाइस ऑब्जेक्ट डिक्शनरी को प्राप्त और लिखते हैं।

ऑब्जेक्ट डिक्शनरी एक कैनोपेन डिवाइस के इंटरफ़ेस को परिभाषित करता है। शब्दकोश को 16-बिट इंडेक्स और 8-बिट उप-अनुक्रमणिका का उपयोग करके संबोधित किया जाता है। शब्दकोश श्रेणियों में विभाजित है। 0x6000 से 0x6FFF डिवाइस प्रोफ़ाइल चर के लिए आवंटित अनुक्रमणिका की श्रृंखला है। डिवाइस प्रोफाइल डिवाइस के अधिक विशिष्ट वर्गों के लिए मानकीकृत इंटरफेस प्रदान करते हैं।

पीडीओ मैपिंग यह है कि पीडीओ में मौजूद जानकारी कैसे सहमत है। पीडीओ मैपिंग किसी डिवाइस ऑब्जेक्ट डिक्शनरी में किसी अन्य की तरह प्रविष्टियां होती हैं।3 बाइट इंडेक्स, सब-इंडेक्स और बिट्स में पैरामीटर का आकार UNSIGNED32 में एन्कोड किया गया है।

+0

मैं वर्तमान में एक Xenus XTL उपयोग कर रहा हूँ कुछ मोटर्स नियंत्रित करने के लिए और सही ढंग से (कोई pdos बस में भेजे जा रहे हैं) PDOs सेटअप पाने के लिए नहीं कर पा रहे। मेरा मुख्य प्रश्न, और कुछ और मैंने जो कुछ अन्य विवरण पढ़ा है, उसकी कमी है, यह है कि COBID मानचित्रण विशेष रूप से कैसे काम करता है? उदाहरण के लिए, यदि मैं 0x181 के कोबिड के साथ एक नोड पर एक टीपीडीओ परिभाषित करता हूं, तो मास्टर पर सभी आरपीडीओ करें और अन्य नोड्स को 0x181 का एक COBID, या 0x201 का COBID होना चाहिए, या प्रत्येक नोड पार्स 0x180 + $ NODEID सिंटैक्स से नोड आईडी जो मैं हर जगह उपयोग करता हूं? धन्यवाद! – daaxix

1

मैं कार्यों कि एक CANopen नोड में प्रोग्राम किया जा सकता की तरह तरह की PDOs (प्रक्रिया डेटा वस्तुओं) के बारे में सोचना अच्छा लगता है।

हाल ही में, मैं एक आदेश है कि एक मोटर ले जाया बनाना चाहते थे, और वर्तमान और एनकोडर स्थिति वापस की सूचना दी। मैंने इसमें तीन एसडीओ ऑब्जेक्ट्स के साथ एक पीडीओ मैपिंग परिभाषित की - चाल (एक पीडीओ प्राप्त) और दो ट्रांसमिट पीडीओ (वर्तमान रिपोर्ट और एन्कोडर रिपोर्ट)।

एक बार जब वे परिभाषित और नोड में सहेजे जाते हैं, मैं स्थिति के साथ एक से अधिक पीडीओ आदेश भेजने के लिए और वापस वर्तमान और स्थिति प्राप्त कर सकते हैं।

नोट पीडीओ केवल निष्पादित किया जाता है जब आप बस में एक सिंक आदेश भेज देते हैं। फिर उन सभी नोड्स जिनमें अप्रत्याशित पीडीओ हैं उन्हें संसाधित करते हैं और एक ही समय में सभी को जवाब देते हैं।

हम इसका इस्तेमाल 7 मोटर्स बनाने के लिए एक ही समय (जब समन्वयन सेट किया गया है) सब पर चलते हैं।

+2

"ध्यान दें कि पीडीओ केवल तभी निष्पादित होता है जब आप बस पर एक SYNC कमांड भेजते हैं"। मुझे लगता है कि आप केवल अपने विशेष मामले के लिए मतलब है। पीडीओ निश्चित रूप से सिंक के बिना इस्तेमाल किया जा सकता है। –