1

Тема: Выбор платы для контроллера наддува автомобиля

Не нашёл похожую тему, поэтому создал новую. Наличие CAN протокола подразумевает автомобильную тематику. Хочу сделать на базе Canny прототип контроллера давления наддува.

Задача несложная, на входе с кан шины обороты и положение дроссельной заслонки. На выходе - шим сигнал на соленоид контролирующий наддув турбины.


Из минусов реализации на Canny - судя по всему нет поддержки работ с таблицами. Из плюсов Поддержка кан шины.

Но прежде чем создавать такое устройство хотелось бы узнать мощность самих контроллеров Canny. Странно что такая базовая информация если и доступна, то не на видном месте.

Я смог найти только информацию по двум контроллерам Canny:

1. Canny 5 nano PIC18f25k80 RAM 4kb, ROM 32kb, 16 MIPS
2. Canny 5 pico PIC33ev64gm104 RAM 8kb, ROM 64 kb, 70MIPS

(Для сравнения можно привести информацию по
Arduino Nano - 328P Atmega, RAM 2kb, ROM 32 kb, 20 MIPS)

Есть ли информация по контроллеру Canny 7? Какой у него объём памяти и производительность?

Для контроллера наддува выход ШИМ должен поддерживать до 500мА силу тока. Конечно можно прикрутить мосфет к любому контроллеру с шим выходом, но какие модели поддерживают такой ШИМ из коробки?

2

Re: Выбор платы для контроллера наддува автомобиля

Я б на Вашем месте сделал на базе 5.3 пико и прикрутил бы мосфет.

3 (03-05-2022 21:30:41 отредактировано Dmitry30Rus)

Re: Выбор платы для контроллера наддува автомобиля

Я написал в техподдержку Canny и получил ответ, что "так как пользователь контроллеров CANNY не контролирует аппаратуру контроллера напрямую, то информация о тактовой частоте и объеме памяти примененных в них микроконтроллеров не позволяет сделать достоверный вывод о доступных пользователю ресурсах контроллера и его производительности.В то же время имеет смысл информация о сравнительной производительность контроллеров, которая приведена в каталоге продукции: canny.ru/products/table/  см.индекс производительности."

По индексу производительности лидирует CANNY•5.3 MD1. C учетом наличия на нем силового транзистора для подключения клапана наддува думаю будет оптимальным вариантом.

К сожалению поддержка таблиц не планируется, поэтому добавление таблиц достаточно кропотливая, хотя и возможная задача.

Я сделал тестовый вариант программы буст контроллера с 3D картой наддува по оборотам двигателя и положению дроссельной заслонки с неким подобием физической модели чтобы оценить работоспособность логики. Все работает.

Для рабочего использования в программе надо убрать физическую модель, назначить физические выходы, настроить параметры PID и настроить параметры сообщений CAN (пока они взяты с потолка, а точнее из части какой то программы).

Вложений в сообщении

Иконка вложения Буст контроллер 3D карта CAN для Pico MD1 тест.cfd 71.48 кб, скачивался 25 раз, последний раз 2022-05-03 

4

Re: Выбор платы для контроллера наддува автомобиля

Программа выше использует PID контроллер из соседней ветки. Я сегодня проверял логику работы этого модуля, он написан неверно. Так что программа выше может быть полезна только как пример использованя таблиц к канни без их нативной поддержки. В таком виде она физически работать не будет.

5

Re: Выбор платы для контроллера наддува автомобиля

Dmitry30Rus пишет:

Я сделал тестовый вариант программы буст контроллера с 3D картой наддува по оборотам двигателя и положению дроссельной заслонки с неким подобием физической модели чтобы оценить работоспособность логики. Все работает.

Отличная работа! Спасибо, что поделились результатами вашего труда!

Dmitry30Rus пишет:

Программа выше использует PID контроллер из соседней ветки. Я сегодня проверял логику работы этого модуля, он написан неверно.

Что именно неверно в PID-регуляторе?

6

Re: Выбор платы для контроллера наддува автомобиля

Константин, CANNY пишет:
Dmitry30Rus пишет:

Я сделал тестовый вариант программы буст контроллера с 3D картой наддува по оборотам двигателя и положению дроссельной заслонки с неким подобием физической модели чтобы оценить работоспособность логики. Все работает.

Отличная работа! Спасибо, что поделились результатами вашего труда!

Dmitry30Rus пишет:

Программа выше использует PID контроллер из соседней ветки. Я сегодня проверял логику работы этого модуля, он написан неверно.

Что именно неверно в PID-регуляторе?

не знаю как выкладывать на этом форуме картинки в тексте, мне пишет "Слишком много ссылок в сообщении. Разрешено 0 ссылок". Поэтому просто приложу скрин как файл.

В данной программе модель регулятора наддува взята как в бойлере, т.е. вкл или выкл. Если же изменить модель на реальную для регулятора наддува, т.е. величина PID будет описывать величину открытия клапана наддува от 0 до 100%, вся программа летит в тартарары.

Причины такого поясню ниже:

Итак например рассмотрим сумматор параметров P, I, D. Они в сумме должна дать некую величину, которая будет описывать величину воздействия (в данном случае процент открытия клапана наддува), которая будет уменьшать возмущение (в данному случае разницу между фактическим наддувом и желаемым).

Когда разница между желаемым и фактическим наддувом велика, большую часть на себя должен взять P параметр. Он так и называется - пропорциональный. Потому что он тем больше, чем больше разница между уставкой и фактом. И он действительно большой - 61286. Что близко к предельной величине в вычислениях Канни 65536.

Но смотрим что происходит дальше - к P величине добавляется I величина, которая тоже близка к предельной величине, а именно 64303. И в сумме они дают 125589? Нет, Канни не понимает цифр больше 65536 и выдает их сумму как если бы вычисления пошли на второй круг и выдает результат суммы P и I как 60053.

Я не спорю, логика PID регулятора в целом описана верно, за это огромный респект. Но не учтены все ограничения Канни в вычислениях. Разве что учли необходимость суммирования отрицательных величин, хотя довольно необычным способом. И то, что регулятор работает для режима ВКЛ/ВЫКЛ, говорит о большом запасе прочности самой PID логики к ошибкам в ходе ее вычислений.

После исправления этих ограничений, PID регулятор работает так как должен для всех режимов работы включая правильное определение величины открытия регулирующего клапана, а именно:

P параметр - увеличивается пропорционально разницы между уставкой и фактом, но никогда не достигнет ее.
I параметр - выполняет роль корректировки той самой величины, на которую не достигнет P параметр. Кстати вместо него можно поставить константу - конечную величину.
D параметр - сглаживает возможные колебания. В целом не самый важный параметр, если I ведет себя адекватно и не вводит систему в дисбаланс. В некоторых случаях можно вообще не использовать.

Вложений в сообщении

Иконка вложения before SV.JPG 736.46 кб, скачивался 2 раз, последний раз 2022-05-09 

7

Re: Выбор платы для контроллера наддува автомобиля

Причины такого поясню ниже:

Правильно ли я понял, что частный пример реализации ПИД-регулятора водонагревателя с дискретным управлением не получилось применить к пропорциональному управлению наддувом в неизменном виде, однако после необходимой переработки исходного примера, всё получилось?

Канни не понимает цифр больше 65536

Некоторые примеры реализации 32-битных вычислений можно найти здесь: https://canny.ru/docs/tips_tricks/

8

Re: Выбор платы для контроллера наддува автомобиля

Константин, CANNY пишет:

Причины такого поясню ниже:

Правильно ли я понял, что частный пример реализации ПИД-регулятора водонагревателя с дискретным управлением не получилось применить к пропорциональному управлению наддувом в неизменном виде, однако после необходимой переработки исходного примера, всё получилось?

Канни не понимает цифр больше 65536

Некоторые примеры реализации 32-битных вычислений можно найти здесь: https://canny.ru/docs/tips_tricks/

Да, все верно. Данный алгоритм работает только для системы вкл/выкл. При подключении клапана с шим сигналом определяющим величину его открытия алгоритм не работает.

Я все это написал не ради того чтобы указать на ошибки, а скорее для того, чтобы сторонний человек попытавшись внедрить этот алгоритм не удивлялся почему он не работает. Причины почему он не работает я тоже указал, поправить его не сложно. Думаю это исправление будет интересно сделать людям самим.