
Цел
Целта беше да се „настроят“ алгоритмите за управление на електродвигателя и настройките на параметрите, за да се постигне оптимална производителност. Особено внимание беше отделено на доброто управление на тока, което е от решаващо значение за постигането на максимален въртящ момент от двигателя и за свеждане до минимум на работната му температура и шума.
Фактори, които трябва да се вземат предвид
Въпреки че токовете в намотките на двигателя могат да се наблюдават с помощта на осцилоскоп, е полезно да имаме възможност да наблюдаваме и вътрешни променливи в софтуера за управление. Например, ако използваме пространствено-векторно управление, бихме искали да можем да наблюдаваме директно пространствения вектор, който съществува единствено в софтуера.

(Илюстрация на пространствен вектор от www.switchcraft.org)
За да улесним настройката на системата за управление, бихме искали също така да можем да променяме стойностите на параметри като коефициентите на PI-регулатора, без да се налага да създаваме и изтегляме нова версия на софтуера или конфигурационните данни. Бихме искали да направим „фината настройка“ на параметрите възможно най-лесна и да наблюдаваме ефекта в реално време.
При такава система за управление на двигател не можем да спрем изпълнението и да проверим стойностите на променливите, тъй като след това няма да можем да я рестартираме. Повтарящите се неконтролирани спирания на двигателя са крайно нежелателни. Във всеки случай, разглеждането на моментална снимка на данни, които непрекъснато се променят, има ограничена полза.
Подход
Беше разработен инструмент, който позволяваше стойностите на вътрешните променливи в софтуера за управление да се визуализират графично на персонален компютър в почти реално време (т.е. данните на екрана бяха съгласувани във времето, но можеха да бъдат с известно закъснение).
Инструментът позволяваше също така стойностите на статичните променливи в софтуера за управление да бъдат презаписани със стойности, въведени на персоналния компютър.
Инструмент за компютър
Беше написана приложение за персонален компютър на езика C#, което да показва редица променливи в реално време. Външният вид на дисплея приличаше на осцилоскоп, работещ в режим на автоматично задействане. C# беше избран единствено поради наличието на редица други инструменти за разработка, написани на този език.
Променливите, които трябваше да се показват, можеха да се въвеждат в инструмента или като сурови адреси в RAM, или чрез използване на имената на променливите, използвани в кода. Инструментът анализираше файла с картата, генериран от линкера, за да преобразува името на променливата в адрес в RAM. Можеха да се показват само статични променливи.
Инструментът позволяваше също така на потребителя да презаписва стойностите в адресите в паметта. И това можеше да се направи или чрез сурови адреси в RAM, или чрез използване на имената на променливите в кода.
Комуникационен протокол
Комуникацията между тествания софтуер, работещ на електронния блок за управление на двигателя, и компютъра се осъществяваше чрез CAN шина. С оглед на скоростта това беше „суров“ CAN, без допълнителен протокол отгоре. Данните се предаваха в компактен двоичен формат. Това беше от решаващо значение, тъй като контурът за управление на тока работеше на всеки 100 μs и при всеки цикъл трябваше да се предават множество стойности на данни.
Модификации на софтуера за управление
За да се предадат данните от тествания софтуер, в планиращия модул на управляващия софтуер беше вмъкнат малък фрагмент код.
Вмъкнатият софтуер следеше CAN шината за команди от инструмента на персоналния компютър. Те можеха да бъдат или команди, указващи кои адреси в паметта да се предадат, или команди, указващи да се презапише конкретен адрес в паметта.
При всеки цикъл на изпълнение вмъкнатият софтуер четеше поисканите адреси в паметта и периодично предаваше съдържанието им по CAN шината.
Процесът
Като инструмент за лабораторни тестове процесът на разработване беше неформален и итеративен.
Първоначално инструментът беше разработен от един инженер за собствена употреба. Към него се добавяха функции според конкретните нужди към съответния момент. С разширяването на функционалността на инструмента беше изготвено ръководство за ползване, за да могат и други инженери да го използват.
Резултати
Оказа се, че е доста лесно да се разработи прост инструмент според нашите нужди, като се използва C#. Производителността в реално време на стандартен компютър беше задоволителна. Най-трудната част беше прехвърлянето на данни между нишката за визуализация на Windows и нишката за мониторинг на CAN-шината.
Възможността за визуализиране на формите на вълните на всички етапи от алгоритмите за управление на двигателя и за бърза оценка на ефекта от промените позволи да се постигне целта за избор на стойности на параметрите на PI-управлението, които дават възможност за увеличаване на изходния въртящ момент на двигателя при намалено загряване и шум.
Въпреки че инструментът беше разработен първоначално с цел подпомагане на разработването на алгоритми за управление на двигатели, той се оказа полезен и за други цели. Примери за това са:
- Тестване чрез въвеждане на грешки
- Наблюдение на преходите в състоянията на машината
- Тестване на диагностиката на температурата и напрежението
