طرق تصحيح برنامج متحكم في محرك كهربائي

الصورة

كيفية تصحيح برامج متحكم؟ يتم أخذ JTAG ، ويكون راسم الذبذبة بضعة أيام / أسابيع ويتم تصحيح البرنامج. ستكون هذه إجابة نموذجية ، وفي معظم الحالات ستكون صحيحة ... ولكن ليس دائمًا. تحل وحدات التحكم الدقيقة مشكلات مختلفة جدًا ، وسننظر في هذه المقالة في ما يجب فعله إذا كنت بحاجة إلى تطوير برنامج مرهق منخفض المستوى للتحكم في أي معدات طاقة كهربائية ، على سبيل المثال ، محولات التردد للمحركات الكهربائية ، ومحولات شحن البطارية DC / DC للقطارات ، وتصحيحات الطاقة ، وأجهزة الخ. المعدات ، حيث تتدفق الكيلو أمبيرات و PWM كيلو فولت ، حيث يتم حساب كل تحويل لمفاتيح العاكس IGBT ، حيث يتم قياس وقت استجابة وحدة التحكم الدقيقة في حالة غير طبيعية بالميكروثانية ، ويتم تثبيت المعدات نفسها في حالات مختومة وتشغيلها في مكان ما في مصانع Yakutia.إذا كنت تريد معرفة الميزات التي يفرضها هذا على طرق التصحيح ، فمرحباً بك في القط.


ميزات أنظمة التحكم في التصحيح


ما هي ميزات تصحيح الميكروكنترولر (MK) التي تؤدي مثل هذه المهام؟ أولاً ، عندما تعمل MK مع معدات الطاقة ، لا يمكن إيقافها.يتحكم MK بمساعدة PWM في مفاتيح الطاقة ، وينظم العديد من القيم في ممراته - تيارات أطوار المحرك ، جهد وصلة DC ، السرعة ، موضع جسم العمل ، إلخ. إذا قمت بإيقاف MK أثناء العمل عند نقطة التوقف ، ففي أفضل الأحوال سيتم إيقاف تشغيل المعدات بسبب حماية الأجهزة ، وفي أسوأ الأحوال ، سينفجر كل شيء ببساطة (إذا ظلت مفاتيح الطاقة قيد التشغيل في الوضع "واحد" أو مع دورة عمل واحدة). ولذلك ، فإن الطريقة الكلاسيكية لتصحيح الأخطاء هي "السير عبر الخطوات مع المصحح" في مثل هذه المهام. لذلك يمكنك فقط تشغيل على الطاولة "وحدات البرامج الخام تمامًا قبل تضمينها لأول مرة في المعدات الحقيقية.

ثانيًا ، هذا هو تعقيد البرامج منخفضة المستوى. حجم مقطع رمز البرنامج .text هو 50-200 كيلوبايت لرمز البرنامج الذي يتحكم حصريًا في الأجهزة (بدون مشغلات الاتصالات عالية المستوى ، وما إلى ذلك) - هذا هو الوضع النموذجي لوحدة التحكم الدقيقة في بعض محركات الأقراص المؤازرة الصناعية. لذلك ، يتم استخدام وحدات التحكم الدقيقة لسلسلة التحكم في المحركات لمثل هذه المهام ، والتي تجمع في نفس الوقت الأجهزة الطرفية المتطورة للغاية ، والأداء العالي ، وحجم ذاكرة كبير نسبيًا (ل MK). كمثال من MKs المستوردة ، يمكن الاستشهاد بـ 32 بت MK Instruments من سلسلة Texas Instruments C2000 ، من شريحة K1921VK01T المحلية من NIIET OJSC. عادة ما تحتوي البرامج لمثل هذا MK على عشرات أو مئات الآلاف من الخطوطرمز C / C ++ محسن مثالي ، والذي لا يمكن تصحيحه ببساطة عن طريق "وميض LED" أو "printfom in UART" أو من خلال مراقبة تشغيل أرجل راسم التذبذب الخارجي.

ثالثًا ، غالبًا ما يقف جهاز التحكم في نظام التحكم في المحرك الكهربائي داخل محول الطاقة ، والذي يتم إغلاق الحالة ، وأحيانًا مغلقة. لذلك ، يعد الوصول عبر JTAG مشكلة كبيرة بالفعل ، إذا كانت البرامج الثابتة فقط (مع إيقاف التشغيل). والمشكلة الأكثر خطورة هي تصحيح JTAG باستخدام الطاقة. هنا ، يجب استخدام JTAG المعزول بالكهرباء والمعزول عن الضوضاء (نستخدم MK TI JTAG SAURIS مع عزل كلفاني مدمج - مكلف ولكنه يعمل).

رابعاً ، لا يوجد أنظمة تشغيل!يمكننا أن نتوقع كيف أن بعض الناس لديهم فكرة "حسنًا ، نظرًا لأن لديك هذه المهمة الصعبة ، ضع متحكمًا عاديًا مع Linux وكتابة تطبيقات منتظمة له ، وتحديث البرنامج من محرك أقراص محمول". أنظمة التحكم في معدات الطاقة هي أنظمة صعبة للغاية في الوقت الفعلي. ليس هذا لينكس ، ولا حتى جميع أنظمة التشغيل المتخصصة في الوقت الفعلي مناسبة لمثل هذه المهام. على سبيل المثال ، يمكن أن يحدث انقطاع ADC عن طريق قراءة البيانات التناظرية ومتوسطها بتردد يصل إلى 100 كيلو هرتز. في الوقت نفسه ، سيحتوي فقط على اثني عشر أو سطرين من التعليمات البرمجية - جمع البيانات من القنوات التناظرية ، وفحصين للحماية عالية السرعة والخروج - كل شيء ، لا شيء آخر للقيام به. إذا قمت بتوجيه مثل هذا الانقطاع لبعض جدولة مهام نظام التشغيل ، فببساطة سوف يستغرق تنفيذه الخاص المزيد من الموارد. ناهيك عن أنه ، على وجه الخصوص ،بالنسبة إلى Linux ، بدلاً من شريحة MK واحدة ، تحتاج إلى وضع اثنتين إضافيتين على اللوحة - ذاكرة الوصول العشوائي الخارجية وذاكرة فلاش ، وتخصيص مجموعة من الأرجل الكريستالية الثمينة عليها ، واستخدام لوحة من ست طبقات للأسلاك المناسبة ، والحصول على وقت إقلاع MK ضخم (في بعض الأحيان مع انقطاع التيار الكهربائي أو مؤقت مراقبة) بدء العمل قبل توقف المحرك!) ، ولديك مشاكل في سلامة نظام الملفات ، وأكثر من ذلك.

حسنًا ، الميزة الخامسة - أنظمة التحكم منخفضة المستوى لمحركات الأقراص الكهربائية ومعدات الطاقة الأخرى (على عكس مهام الاتصال على واجهات مختلفة ، PLCs ، وحدات التحكم في جميع أنواع الإنذارات ، أجهزة التحكم عن بعد ، وما إلى ذلك) تنفذ بشكل أساسي خوارزميات نظام التحكم التلقائي. وهي: يتكون نصف البرنامج من أنواع مختلفة من الهياكل المغلقة مع وحدات تحكم PID ، وكتل التشبع ، والمناطق الميتة ، وجداول اعتماد أحدهما على الآخر ، والمرشحات ، والمراقبين ، وضبطات الكثافة ، ومخططي الحركة وغيرهم. يتم إجراء الحسابات في مثل هذه البرامج بتردد معين - على سبيل المثال ، على تردد 10 كيلو هرتز ، يتم تشغيل المقاطعة وحساب جميع الكتل المدرجة ، والتي تشكل معًا هيكل التحكم في المعدات اللازمة. في مثل هذه الخوارزميات ، لا يساعد التصحيح خطوة بخطوة - في معظم الأحيان ، في كل خطوة ، تنتج كل وحدة ماما هو متوقع منه - في الواقع ، تم تصحيح جميع هذه المرشحات ، والمنظمين ، وما إلى ذلك منذ سنوات ، وهناك القليل من المفاجآت هناك.تنشأ المشاكل أثناء تشغيل الهيكل بأكمله ككل - تعمل كل وحدة على حدة ، ولا تحدث العملية التنظيمية المطلوبة كما هو متوقع . وتبين أن المشاكل تكمن في تعديل مئات المعلمات ومعاملات هذه الكتل ، وكذلك في البنية المجمعة منها - قد يتبين أنك بحاجة إلى إضافة دائرة استقرار جديدة في مكان ما ، وإضافة كتلة تنبؤ ، وقيود ، وما إلى ذلك. لذلك ، يعد هذا "حجرًا آخر في الحديقة" لرسائل التصحيح خطوة بخطوة ورسائل التصحيح: تحتاج إلى تصحيح أكثر من رمز البرنامج نفسه ، ولكن بنية التحكم التلقائي المجمعة. إذا كان لدى شخص ما فكرة بسيطة عن ما هو (هيكل) ، فهنا هو أبسط هيكل للتحكم في ناقلات بدون مستشعر لمحرك متزامن:



يحتوي كل مربع في بعض الأحيان على بعض الصيغ ، وأحيانًا وحدة نمطية على اثني عشر أو صفحتين من التعليمات البرمجية. تحتوي الوحدة على مدخلات / مخرجات ، بالإضافة إلى بعض متغيرات الحالة (على سبيل المثال ، الجزء المتكامل من وحدة التحكم PI وما إلى ذلك). يمكن لأولئك الذين يرغبون أيضًا رؤية بنية مماثلة على صفحة ويكيبيديا . نظرًا لأن نظام التحكم مغلق ، فإن التشغيل غير الصحيح لوحدة واحدة (أو إعدادها غير الصحيح) يؤدي إلى عدم عمل الهيكل بأكمله. وتجد بالضبط مكان المشكلة - هذه مهمة أخرى.

كيفية تصحيحه؟


لذا ماذا تفعل ، كيف يمكن تصحيحه؟ راسم تذبذب خارجي؟ لن يساعد. بالطبع ، يعد الذبذبات ضروريًا لتصحيح بعض مشاكل الأجهزة البحتة ، ولكن يمكنهم فقط رؤية قيم المدخلات والمخرجات لوحدة التحكم الدقيقة ، وستبقى المئات من المتغيرات داخل الهيكل خلف الكواليس. حسنًا ، سترى أن تيار الطور للمحرك يهتز بشكل غريب ، والجهد الناتج العاكس يهتز بغرابة. ولماذا - أي كتلة داخل برنامج MK تؤدي إلى هذا (أو جهاز استشعار محرك أو موضع أو أي شيء آخر يؤدي إلى هذا المنحنى) - لا يزال غير واضح.

نموذج؟ نعم ، هذه مساعدة جيدة.في معظم الأحيان ، يبدأ تطوير الهياكل الإدارية المعقدة بالنمذجة. من حيث TAU وفي شكل معادلات تفاضلية ، يتم وصف كائن التحكم ، ويتم إنشاء نظام التحكم المقترح (كما هو موضح في الشكل أعلاه ، على سبيل المثال) ، ثم يتم تحقيق كل هذا ... حسنًا ، الذي يحب ما ، ولكن المعيار الفعلي هو Simulink Matlab. في ذلك ، يمكنك "رسم" بنية جنبًا إلى جنب مع نموذج كائن التحكم ، باستخدام "فضفاض" في شكل تكاملات ، إضافات ، وظائف انتقالية ، إلخ. يمكنك استخدام عبوتها لنمذجة الدوائر الكهربائية ، حيث توجد مفاتيح IGBT جاهزة ، ومحركات كهربائية ، ومقاومات ، ومكثفات والمزيد ، مما يعطي ، تحت رحمة مبرمجي matlab ، تنفيذ الرسم المرسوم في شكل معادلات تفاضلية ، ورسم هيكل التحكم نفسه بالفعل في شكل "أوراق فضفاضة" نفسها.ويمكنك كتابة جميع الكتل الضرورية في matlab في C. تعتبر هذه الطريقة ملائمة من حيث أنه يمكن نسخ رمز البرنامج الذي تم تصحيحه في matlab إلى وحدة التحكم الدقيقة. عادة ما تتبع هذه المرحلة دائمًا "الرسم" ، عندما يتم تكوين هيكل نظام التحكم بعد عمل بحثي تقريبي على النمذجة بشكل أو بآخر. ولكن غالبًا ما تكون معلمات الكائن غير معروفة مسبقًا ، أو أنها غير معروفة تمامًا - لم يسبق أن بدأ البرنامج الذي يعمل في النموذج في العمل بشكل جيد على الكائن أيضًا. من المستحيل أيضًا وضع "كل شيء" في النموذج - ترانزستورات التبديل العابرة ، تشبع الدائرة المغناطيسية ، التيارات الدوامية ، الاقتران السعوي ، المعلمات العائمة من درجة الحرارة ومن المثال إلى المثال ، التداخل هنا وهناك ... وأحيانًا يكون عنصر التحكم معقدًا جدًا ،أنه من الأسهل القيام بتطوير هيكل تحكم لها مباشرة في المنشأة.
, , () - . , , «» – , , - ? ( – , « », ).


هناك أيضًا عدد من المنتجات التي تسمح لك "برسم" برامج مباشرة للمتحكم الدقيق. بما في ذلك نفس Matlab قادر على توليد كود C للعلامات التجارية الشهيرة MK على أساس النموذج في Simulink. يزعم ، يمكنك رسم وتصحيح الهيكل المرسوم لنظام التحكم على الكمبيوتر في النموذج ، ثم تحميله إلى MK - وبذلك تنتهي ، دعنا نذهب! وحتى مثل هذه البيئات تسمح لك بتصحيح هياكل التحكم المرسومة داخل MK ، ومشاهدة المتغيرات ، وما إلى ذلك ، وعلى مواقع هذه المنتجات ، هناك مجموعة من المشاريع التجريبية للأنظمة الأكثر تعقيدًا "المبرمجة" بهذه الطريقة. ولكن بما أن جميع المشاريع الحقيقية لا تزال مبرمجة بـ "الأيدي" لسبب ما ، يمكننا أن نتوقع أن هناك خطأ ما في "الرسم". ولكن هنا من الصعب وصف ما هو بالضبط ، عندما لا يكون كذلك. الحجة الرئيسية ضد. تضغط على زر في بيئة "تعمل بشكل جيد" وتأمل أن يقوم منشئ الشفرة بالباقي لك. بالنسبة لبعض الأنظمة البسيطة ، حيث يكون أداء MK "خلف العينين" ، فإن الجدول الزمني للتطوير ضيق للغاية ، ولا أحد يعرف كيفية البرمجة في الشركة التي بدأت المشروع ... ثم نعم ، ربما يمكنك محاولة "رسم" البرنامج. ولكن إذا لم تعمل كما ينبغي ، أو ستواجه بعض الأخطاء المحددة للغاية ، فلن تكون هناك فرصة بعد الآن لتصحيحها. وبالنسبة لمهمة معقدة ، حتى عندما تكون البرمجة بأيدي مع أداء MK دائمًا مشكلة ، فإن الرسم ليس مناسبًا ببساطة بسبب نقص الموارد - أي لغة برمجة أكثر من المستوى الأعلى (أعلى بكثير من الرسم) يولد رمز آلة أقل مثالية. والتحسينات المنخفضة المستوى التي سيقوم بها مبرمج Cلن يكون مثل هذا النظام قادرًا على القيام بذلك (حساب الكتل من نفس الهيكل مع تسجيل الوقت المختلف ، واستخدام القيم المخزنة مؤقتًا للجيب وجيب التمام ، واستبدال وظائف القسمة عن طريق الضرب بقيمة مسبقة الإعداد ، أو أشياء صعبة تمامًا مثلمثل ، وما إلى ذلك).

وبالتالي ، يجب عليك كتابة برنامجك والكتابة في C. بطريقة أو بأخرى ، تحتاج إلى تصحيح البرنامج الخاص بك ، وهو ضروري على الكائن. من المحتمل أن كل شخص في هذه المرحلة من المقالة قد فهم بالفعل أنه لا يمكن تصحيح بنية التحكم إلا من خلال عرض تذبذب المتغيرات الداخلية ، أي من خلال عرض الرسوم البيانية في الوقت المناسب ، وكيف يتغير هذا أو ذاك المتغير في C - قل ، "ناتج تلك الكتلة ، الخامسة من اليسار ، في وقت واحد مع مدخلات الثالث من اليمين". الحصول على صور مثل هذا:

ولا يمكن القيام بذلك إلا عن طريق وحدة التحكم الدقيقة نفسها. لا يمكنك فقط أخذ واجهة الاتصال السريع الخارجية ووضعها وإرسال قيمة "متغير" لبعض المتغيرات ، في أسرع وقت ممكن ، وإنشاء رسم بياني في نظام المستوى الأعلى. لأنه لا يوجد واجهة اتصال MK سيكون لديها الوقت للقيام بذلك مع التردد الذي تحدث به عابرات منظمة. وإذا نجحت ، فستذهب جميع موارد MK إلى صيانة واجهة الاتصال هذه. لذلك ، يقومون بذلك - يسجلون الطول الموجي في ذاكرة الوصول العشوائي لـ MKفقط في مصفوفة. عادةً ما تكون هناك حاجة إلى الكثير من النقاط - ما عليك سوى اقتناص اللحظة المناسبة لكتابة البيانات تمامًا: ضع الزناد الصحيح في بداية التسجيل. وبعد ذلك يمكنك أن ترى ما كانت هذه الكتل أو تلك الكتل من نظام التحكم تعطي في وقت الفشل ، وكيف كان يتطور ، وما كان يحاول MK القيام به. بالطبع ، لا يمكن أن تتأرجح جميع المتغيرات على الفور - ولكن من الناحية العملية ، في تجربتنا ، هناك ما يكفي ، على سبيل المثال ، أربعة صفائف من 256 نقطة لكل منها - نوع من راسمات الذبذبات رباعية القنوات باستخدام أدوات MK. إذا تعطل الجهاز أكثر من مرة واحدة في الأسبوع ، فإن التصحيح لا يمثل مشكلة - في تجربة واحدة ننظر إلى هذه المتغيرات الأربعة ، في المرة التالية نستبدل النصف بأخرى ، ننظر مرة أخرى ... حتى يتم العثور على وحدة معطلة ، أو حتى نزيل كل ما يحدث في جميع الكتل ولا تترك للنظر في "اللقطات" ، خدش المكان الذي يعتقد ما ...

كيفية تصوير مثل هذه الذبذبات؟ ما البرنامج الذي يمكنه القيام بذلك؟ ما هي واجهة الاتصال التي تقدم هذا؟ في الواقع ، تعتبر شركة Texas Instruments رائدة في إنتاج وحدات التحكم الدقيقة بالمحركات ، لأنها فعلت كل شيء من أجل ذلك: Code Composer Studio (بيئة التطوير) بالإضافة إلى MK في الوقت الفعلي. الوضع الحقيقي هو عندما يمكن لبيئة التطوير من خلال JTAG طلب وكتابة البيانات في ذاكرة RAM الخاصة بـ MK دون إيقافها. حتى ليس فقط من دون توقف ، ولكن من دون أدنى انقطاع لعمله. يتوفر هذا الوضع في جميع وحدات MK من سلسلة C2000 ، ولكنه يتطلب JTAG باهظ الثمن وسريع لاستخدامه ، والذي يدعمه. ولكن إلى جانب الوضع نفسه ، يجب أن يكون لدى MK شيء مطابق على الجزء الخلفي من الكبل: إن بيئة تطوير Code Composer Studio قادرة على بناء أشكال موجية خارج الصندوق.علاوة على ذلك ، في كل من الوضع الأبسط ، عندما يقوم المستخدم بتعيين اسم المتغير C ويرى تغيره في الوقت على الرسم البياني ، وتطلب البيئة البيانات مع التردد الذي يمكنها (عادةً جيد ، إذا كان Hertz 10) ، وفي وضع عرض الصفيف في الذاكرة في شكل الموجة - على سبيل المثال فقط ما هو موضح أعلاه. , , , Code Composer Studio JTAG .في الوقت نفسه ، يمكن للجهاز أن يستمر في العمل كما لو لم يحدث شيء. تم استخدام هذه الأداة بنجاح لأكثر من عشر سنوات ، وفي الواقع ، اقترحت تكساس هذه الإيديولوجية لتصحيح الأخطاء (على ما يبدو ، ولكن يمكن أن أكون مخطئًا). في جميع مشاريعهم التجريبية هناك وحدة datalogger (التي تسجل صفائف الأشكال الموجية) وتصف الكتيبات كيفية استخدامها. بالمناسبة ، هنا تحتاج إلى رمي حجر في حديقة ARM. لديهم أيضًا وضع في الوقت الفعلي ، وفي هذه الهندسة المعمارية هناك أعضاء في الكنيست يمكنهم التحكم في المحركات الكهربائية. ومع ذلك ، لم أجد في أي بيئة تطوير وظيفة رسومية ، حتى إذا كان الوضع في الوقت الحقيقي مدعومًا. على سبيل المثال ، في حالة Keil المحبوبة من قبل الجميع ، من المستحيل تغيير قيمة المتغير بشكل طبيعي على MK قيد التشغيل - يتم تحديثه باستمرار ،وتم مسح القيمة الجديدة التي أدخلها المستخدم في النافذة ... ناهيك عن أي رسوم بيانية هناك. ربما شخص في التعليقات سيقترح خيار عمل؟ أم أنها "لا يحتاجها أحد" ، وبالتالي لا تعمل؟

ولكن هناك مشكلة في طريقة التصحيح هذه ، حتى من خلال Code Composer Studio. وهذه المشكلة هي JTAG. كما قيل ، الموصل الخاص به ليس متاحًا دائمًا ، وغالبًا ما يكون على المعدات قيد التشغيل وغير متوفر على الإطلاق. وبصراحة ، ليس من المريح جدًا الجلوس على بعد أمتار من محول الميجاوات ، ومشاهدة تذبذبات العمل ، ومركزة للغاية ومركزة للالتفاف حول زر "إيقاف" المتحكم الدقيق بالماوس ، ماذا لو ارتجفت إصبع على طول الطريق؟ هل تعرف كيف تكون لوحة اللمس عربات التي تجرها الدواب عند استخدام PWM قوية؟ وإذا فشلت البيئة؟ ماذا عن JTAG؟ كل شيء ، عريضة؟
باباخ عادي


بالإضافة إلى ذلك ، يتم عرض الأشكال الموجية في بيئة التطوير في القيم "كما هي" في C ، بدون أي مقياس ، في نوافذ مختلفة من الرسوم البيانية ، بدون وحدات قياس مخصصة (تذكر أنه في هذا الرسم البياني 0.342 فولت ، يجب ضربها في العقل من خلال 540 للحصول على الوحدات المادية ، وهنا 1.2 أمبير مع مقياس 800A). وغير مريح ومخيف. ومع ذلك ، لا يمكن لجميع أعضاء الكنيست وبيئات التطوير مشاهدة التذبذبات! فجأة لك ليست تكساس؟ لذلك ، قررنا اختراع طريقة أخرى.

قرارنا


في الواقع ، إذا لم نكن بحاجة إلى تصحيح الأخطاء خطوة بخطوة ، فما هي المشكلة؟ نحن نستبدل كل ما نقوم به من خلال JTAG بأي واجهة اتصال أخرى ونصنع غلافنا من المستوى الأعلى الخاص بنا ، والذي يبني الرسوم البيانية بالطريقة التي نريدها. ربح!

لذا فعلنا. واجهة الاتصال التي اخترناها CAN ، بروتوكول - CANopen. لماذا؟ CAN هي واجهة اتصالات صناعية جيدة جدًا ، ومقاومة للضوضاء ، ولديها تحكيم في الأجهزة ، ووصول غير مدمر إلى الحافلة ، وتأكيد الأجهزة للحزم ، وفي الوقت نفسه - سلكان فقط وأرض. هذا أفضل من جميع RS ، وأقل وحشية من Ethernet (وهو غريب نوعًا ما على motorcontrol MK). لماذا يمكن فتحه؟ في الواقع ، هناك بروتوكولان شائعان لـ CAN ، وهما J1939 ("السيارات") و CANopen (الأدوات الآلية ، الأتمتة ، المستشعرات ، إلخ). لا يوجد فرق كبير بينهما ، ولكن كانوبن بدا لنا أكثر مرونة ، لذلك قمنا بتطبيقه في المكدس الخاص بنا (السائق). من لا يعرف أي شيء عن CANopen - وظيفته الرئيسية ، مثل العديد من البروتوكولات لـ MK ، هي توفير الوصول إلى قاموس الكائنات (قائمة المتغيرات في C MK) على عنوان معين. يمكن القيام بذلك بطريقتين رئيسيتين:رسائل SDO من نوع الاستجابة للطلب ، بالإضافة إلى رسائل PDO في شكل قيم إرسال ثابتة حسب المؤقت أو الحدث (يعين المستوى الأعلى لما يجب إرساله ومتى). هناك أيضًا العديد من خدمات الخدمة مثل رسائل الطوارئ والرسائل حول وجود الأجهزة على الشبكة (نبض القلب) ، إلخ. المعالج على الشبكة غير مطلوب: من يريد - يرسل ، لمن يريد - يقبل.

لقد صنعنا مكدس CANopen ليس فقط لـ MK ، ولكن أيضًا للكمبيوتر في شكل مكتبة. وعلى أساسها بالفعل ، كتب Windows بيئة المستوى الأعلى الخاصة به. أولاً ، قاموا ببساطة بالوصول إلى متغيرات قاموس الكائن بحيث كان من الممكن النظر إلى وتغيير إعدادات نظام التحكم (وهناك مئات منهم ، بالمناسبة!) ، ثم قاموا بعمل رسوم بيانية عن طريق الاستعلام بشكل دوري عن معلمة قاموس الكائن عبر الشبكة ، ثم أضافوا تحميل الأشكال الموجية من MK (علاوة على ذلك ، يتم أيضًا اختيار ما يتم تذبذبه من كائنات متغيرة في القاموس). لقد حصلنا على كل شيء بنفس الطريقة التي توفر التصحيح من خلال JTAG. أم لا؟ لا ، لأنني أحتاج أيضًا إلى وظيفة تحديث البرنامج عبر CAN. على الرغم من وجود محمل إقلاع CAN في Texas MK ، قررنا أن نجعلها خاصة بنا ، نظرًا لأن المعيار لم يكن CANopen ويمكن أن يتداخل مع تشغيل الأجهزة الأخرى على الشبكة أثناء قيامنا بخياطة واحد ، كما يمكن أن تتداخل الأجهزة مع البرامج الثابتة. بالإضافة إلى ذلك ، كانت هناك مشاكل في تصحيح الأخطاء وفقدان الرسالة (على الرغم من أن CAN يمكن أن يكون جيدًا جدًا ، وأحيانًا يتعطل ، والبرامج الثابتة هي شيء مهم جدًا حتى لا تقوم بإجراء تحقق أو إعادة محاولة إرسال قطعة مكسورة). لذلك ، قمنا بتنفيذ "المبرمج" الخاص بنا عبر شبكة CAN ، ولكن في إطار بروتوكول CANOpen. الآن كل شيء. الآن تمكنا من التخلي تمامًا عن JTAG ، باستخدامه مرة واحدة فقط ، لبرمجة عضو جديد.

في الوقت نفسه ، فتح هذا النهج آفاقًا جديدة لتصحيح الأخطاء لم نرها من قبل. نظرًا لأننا صنعنا بيئة المستوى الأعلى مع التركيز ليس فقط على المبرمجين ، ولكن أيضًا على "الأشخاص العاديين" ، فقد صنعنا جميع المعلمات باللغة الروسية وقمنا بعمل وثائق للمثبت لكل معلمة (الوثائق ليست البيئة ، ولكن الجهاز بالطبع). وقد كان ذلك مفيدًا - الآن إذا كانت هناك أي مشكلة في محرك الأقراص ، فلا يتعين عليك "سحب" المطور- يمكن لموظفي خدمة العملاء في بعض الحالات تشخيص المشكلات بشكل مستقل. الآن يمكننا الحصول على بريد إلكتروني مثل "بدأ محركنا في إصدار أصوات غريبة في بعض الأحيان ، نظرت إلى تذبذب مستشعر الموضع ، وهذا ما رأيته (صورة). لقد تحققت من تأريض الشاشة ، سقطت ، ملحوم وعمل كل شيء كما يجب! " وبالتأكيد لا حاجة للذهاب إلى أي مكان أو الطيران! "الاكتشاف" الثاني - إذا كانت هناك مشكلة ، فنحن نطلب من العميل توصيل الكمبيوتر بالمعدات وإعطاء تحكم سطح المكتب عن بعد عبر الإنترنت - نحن نطلق بيئتنا عالية المستوى ، سنقوم بتأرجح كل شيء بأنفسنا ، نقوم بتصحيح المعلمات / البرامج الثابتة / نقول أنها تعطلت - ربح! مرة أخرى ، لست مضطرًا للذهاب إلى أي مكان (الشيء الرئيسي هو أن الإنترنت يجب أن يكون في المنشأة ، على الأقل عبر شبكة خلوية).

على مر السنين ، اكتسب هذا البرنامج عالي المستوى وظائف صغيرة ، مثل الفطر (عملية طبيعية للبرنامج الذي يستخدمونه). يشمل ذلك العمل مع سجل تعطل الجهاز ، وحفظ / تحميل مجموعة من المعلمات إلى ملف على الكمبيوتر ، وتهيئة لوحة التحكم للجهاز على أنها "لوحة تحكم" ، والحفاظ على سجلات الشبكة إلى ملف ، وإعادة حركة مرور شبكة CAN عبر TCP / IP ، وتعدد البرامج الثابتة / المعلمات للأجهزة المماثلة على الشبكة (إذا كان هناك العشرات من الأجهزة ، فإن وميض كل شيء بيديك كسول ، تحتاج إلى برنامج نصي) ، إلخ.

حسنًا ، الآن بعض الإعلانات. الآن هي بالفعل أداة قوية للغاية (أطلقنا عليها اسم UniCON) ، والتي تبدو في بعض المهام أكثر وظيفية من البرامج المماثلة من العلامات التجارية الشهيرة لإعداد محركات الأقراص والأجهزة الخاصة بهم. علاوة على ذلك ، لا يرتبط بجهاز معين - يمكنك تكوين محرك كهربائي على الأقل ، على الأقل موقد ، على الأقل شاحن - فقط يتغير قاموس الأشياء. لا نرى الآن في شركتنا فرصة لإكمال مشروع جديد ومعقد بنجاح بدون أدوات CANopen للتصحيح. للعمل مع UniCON ، ما عليك سوى تضمين مكدس CANopen في MK ، وبعد ذلك يتحول MK إلى مختبر رقمي. نحن على يقين من أن جميع الشركات التي تصنع أنظمة تحكم جادة على MK لديها أدوات تصحيح مماثلة. لكننا نقدم حل CANopen الخاص بنا في شكل منتج برمجي مستقل ، حيث يتم تطبيقه عالميًا من حيث الاستقلال عن وظائف الجهاز. حاليًا ، قمنا بتطبيق حزمة CANopen مع الوظائف المتقدمة الموصوفة لـ Texas Instruments C2000 MK ، وحدات التحكم الدقيقة ARM الخاصة بهم (على سبيل المثال ، عائلة Concerto) و K1921VK01T من NIIET OJSC. لذلك ، إذا كنت بحاجة إلى تطوير نظام تحكم لمحرك كهربائي أو أي كائن تحكم معقد آخر ، فإننا ندعوك للتعاون.



سكرتير خاص
في التعليقات ، نتطلع إلى انتقاد الشكل "لذلك هناك *** - يفعل كل نفس وبالمجان." نظرًا لأننا نبحث عن أدوات تصحيح مشابهة لـ ARM للحصول على الوظائف لفترة طويلة ، فقد تعثرنا في بيئات التطوير الشهيرة.

UPD: شكرا على تصريحات Indemsys ، olekl و LeonidLeninوجدنا وظائف التخطيط في بيئات التطوير لـ ARM Keil و STMStudio عند العمل من خلال SWD. ومع ذلك ، فإنهم لا يعرفون كيفية عرض مجموعة من البيانات من ذاكرة MK في شكل رسم بياني ، وهو ما هو مطلوب فقط لمراقبة العمليات السريعة لأنظمة التحكم (ولكن يمكن لـ STMStudio عرض الرسوم البيانية مع وقت أخذ العينات حوالي 1 مللي ثانية باستخدام التخزين المؤقت للبيانات). من المثير للاهتمام أيضًا أداة NXP FreeMaster - في الوصف والغرض فهي مشابهة جدًا لتطوير UniCON الخاص بنا ، ولكن بخصائصها الخاصة. بالإضافة إلى ذلك ، يحتوي Segger J-Link على أداة عرض شكل الموجة الخاصة به .

Source: https://habr.com/ru/post/ar389123/


All Articles