प्रश्न धुंधला दिख सकता है क्योंकि एक पंक्ति में किसी समस्या का वर्णन करना मुश्किल है, इसलिए यह यहां जाता है। मैं एक पीआईडी नियामक चलाने के लिए रास्पबेरी पीआई पर डेबियन का उपयोग करता हूं जिसका मतलब है कि डीआईडी (लूप निष्पादन के बीच समय अंतर) हर बार पीआईडी आउटपुट की गणना की जाती है। असल में डीटी की गणना इस तरह की जाती है।समय सीमित करने के लिए कैसे लिनक्स एक कार्रवाई के लिए लेता है?
oldtime_ = time_;
clock_gettime(CLOCK_MONOTONIC, &time_);
Timer.dt = ((static_cast<int64_t>(time_.tv_sec) * 1000000000 + static_cast<int64_t>(time_.tv_nsec)) - (static_cast<int64_t>(oldtime_.tv_sec) * 1000000000 + static_cast<int64_t>(oldtime_.tv_nsec)))/1000000000.0;
पीआईडी लगभग 400 बार एक दूसरे अद्यतन किया जाता है और यह सिर्फ ठीक हो जाता है, लेकिन कभी कभी लिनक्स बहुत अधिक समय के लिए एक कार्रवाई करने के लिए लेने का फैसला। परिणाम डीटी की एक बड़ी संख्या है, कहें, 1/400 = 0.0025 नहीं बल्कि 0.8 जो आवश्यक से 320 गुना अधिक है। परिणाम पीआईडी की गलत गणना है। ऐसा लगता है।
मुझे एक जवाब देना अच्छा लगेगा कि रास्पियन को वास्तविक समय प्रणाली के करीब कैसे स्थानांतरित किया जाए।
संपादित
धन्यवाद, anaken78 और जो भी मदद की है। आरआर_एफआईएफओ शेड्यूल का उपयोग पूरी तरह से काम करता है और प्रोसेसिंग की गति हमेशा 380-400 हर्ट्ज होती है।
यदि आपको उच्च परिशुद्धता, सस्ते टाइमर की आवश्यकता है, तो मैं टीएससी को सीधे (यदि उपलब्ध हो) का उपयोग करने का सुझाव देता हूं, और टीएससी स्काई से बचने के लिए अपनी प्रक्रिया को एक कोर (यदि सिस्टम मल्टीकोर) में पिन करता है। – erenon
आपने अभी तक क्या प्रयास किया है? ऐसा नहीं है कि यह आवश्यकता पूरी तरह से अनूठी नई है, और आप खोजशब्दों को खोजने के लिए पहले ही जानते हैं। साथ ही, टाइमर सटीक नहीं है या शेड्यूलर आपके तर्क के साथ गड़बड़ करता है? –
सिस्टम अकेले ही cored है। समस्या शेड्यूलर गड़बड़ कर रही है, इसलिए मुझे यकीन नहीं है कि टीएससी का उपयोग करने से सीधे मदद मिलेगी, लेकिन यदि मैं टीएससी को सीधे शेड्यूलर को उच्च प्राथमिकता देता हूं तो मैं इसे आज़मा दूंगा। जैसा कि मैंने कहा, सवाल मेरे लिए Google पर धुंधला दिखता है। मैंने कोशिश की एकमात्र खोज "रीयल-टाइम" है, लेकिन मैंने अभी तक RTlinux या रीयल-टाइम कर्नेल का उपयोग नहीं किया है। यदि डेबियन के आसपास नृत्य करना कोई परिणाम नहीं देता है तो मैं यह करूँगा। – user3081123