1 (01-04-2021 21:46:38 отредактировано r595ro)

Тема: Программный ШИМ вместо внешнего.

Здравствуйте! Хотел программно имитировать ШИМ канала N0. Для того, чтобы производить отладку через эмулятор.
По факту, с внешним питание при замыкания канал 0 и 8 в кан идут одни пакеты, а в эмуляторе через генератор ШИМ с такими же параметрами периода и наполнения работает все неадекватно. При запуске через эмулятор длительность прог. цикла ставлю 1.

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

Иконка вложения шим 1000 8 канал_V3_шим.cfd 5.13 кб, скачивался 200 раз, последний раз 2021-04-01 

2

Re: Программный ШИМ вместо внешнего.

Как минимум для эмуляции входа-счетчика не хватает самого счетчика. Генератор ШИМ может только генерировать импульсы, т.е. выдавать на свой вход 0 или 1, которые кто-то должен считать.

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

Иконка вложения c72duo_шим 1000 8 канал_V3_шим.cfd 5.23 кб, скачивался 190 раз, последний раз 2021-04-02 

3

Re: Программный ШИМ вместо внешнего.

Денис, CANNY пишет:

Как минимум для эмуляции входа-счетчика не хватает самого счетчика. Генератор ШИМ может только генерировать импульсы, т.е. выдавать на свой вход 0 или 1, которые кто-то должен считать.

Спасибо большое! Два дня пробовал, хотел сам добиться. Понимал, что кто-то считать должен, а не просто ШИМ 0/1. Но не знал как это сделать.

4

Re: Программный ШИМ вместо внешнего.

Денис, CANNY пишет:

Как минимум для эмуляции входа-счетчика не хватает самого счетчика. Генератор ШИМ может только генерировать импульсы, т.е. выдавать на свой вход 0 или 1, которые кто-то должен считать.

Все сделал, конвертировал ШИМ-обороты двс-CAN пакет. В диаграмме, в 12 блоке значения периода и заполнения при 750 об\мин. Не могу разобраться почему прыгают значение на выходе из счетчика, а именно блока 4. Как я понял это из-за достижения в блоке 6 значения коэффициента и последующей отправкой единицы на блок 4.
1. Исходя из чего устанавливать коэффициент в блоке, подгонять под значение выхода 4 блока?
2. Какое значение должно быть на выходе из 4 блока? В документации написано х100об\мин. Получается при 1000 об\мин там должно быть 10, при 2200 будет 22 и.т.д?
3. Как победить прыгающие значения на выходе из счетчика?

Спасибо!!!

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

Иконка вложения tach_otladka0704.cfd 5.25 кб, скачивался 189 раз, последний раз 2021-04-06 

5

Re: Программный ШИМ вместо внешнего.

Для более точного определения характеристик импульсных сигналов, особенно на высоких частотах был разработан специальный режим работы входов счетчиков - Определение значений ширины (длительности) импульса: https://canny.ru/docs/c72duo/io/#sec--c … ti-impulsa . Для работы на высоких и низких частотах может потребоваться переключение между определением ширины импульса (позволяет получить значение частоты почти мгновенно) и подсчетом количества импульсов за интервал времени, как это сделано в исходной диаграмме (позволяет получить более точные значения при большем интервале времени подсчета импульсов, но при этом повышается и время отклика, т.е. снижается частота обновления данных - требуется баланс).

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

Вероятно получается небольшой рассинхрон в работе блоков в режиме симуляции, что при указанных настройках Генератора ШИМ и эмуляции длительности выполнения диаграммы приводит к изменению выходного значения счетчика в пределах единицы. В "железе", при реальных значениях длительности выполнения диаграммы и параметров поступающих импульсов нужно быть очень внимательным.
При использовании блоков "Отображение" многие другие преобразования (умножение + деление) можно попробовать упразднить.

Подобные задачи уже успешно решались нашими пользователями, например https://forum.canny.ru/viewtopic.php?id=773 .
Попробуйте разобраться в этом примере. Если будут трудности, приведите здесь формулу пересчета частоты импульсов (оборотов) в значения CAN или таблицу соответствия ряда частот (оборотов) значениям, передаваемым в CAN - попробуем помочь.

6

Re: Программный ШИМ вместо внешнего.

Подобные задачи уже успешно решались нашими пользователями, например

Именно эти примеры, а точнее вторую (субару) я взял за основу и изменил под себя. Первая диаграмма (Гетц) показалось мне сильно громоздкой и нету объяснений зачем сделано столько вычислений после регистра значений ширины импульса канала 9 и до отображения, в справке описано очень скромно.. Поэтому решил, что если две диаграммы решают задачу одинаково зачем делать длинный код. Теперь понимаю, что пример Гетц вычисляет значения намного точней и работает стабильней и стоить понять как он работает и пользоваться таким способом в будущем. Если не так поправьте меня пожалуйста.

При использовании блоков "Отображение" многие другие преобразования (умножение + деление) можно попробовать упразднить.

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

Если будут трудности, приведите здесь формулу пересчета частоты импульсов (оборотов) в значения CAN или таблицу соответствия ряда частот (оборотов) значениям, передаваемым в CAN - попробуем помочь.

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

7 (09-04-2021 20:40:45 отредактировано r595ro)

Re: Программный ШИМ вместо внешнего.

Попробуйте разобраться в этом примере. Если будут трудности, приведите здесь формулу пересчета частоты импульсов (оборотов) в значения CAN или таблицу соответствия ряда частот (оборотов) значениям, передаваемым в CAN - попробуем помочь.

Здравствуйте!
Создал по примеру который указали диаграмму. Прилагаю два файла, диаграмма эмулятора с подставленными константами и диаграмму которую записываю.
1. Что значат константы представленные в диаграмме, область счетчика?
2. В эмуляторе, результат вывода при замыкании канала 0 и 8 не совпадает с проверкой на железе. На эмуляторе D1D0=1F05, На железе D1D0=7210. При чем изменение шима на канале 0 ничего не меняет.
Помогите пожалуйста.
P.S. С вопросом 2 разобрался прочитав еще раз инструкцию. Добавил регистр счетчика задних фронтов.

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

Иконка вложения Emulator_tach_otladka_new_schetchik.cfd 9.88 кб, скачивался 190 раз, последний раз 2021-04-09 

Иконка вложения tach_otladka_new_schetchik.cfd 9.29 кб, скачивался 171 раз, последний раз 2021-04-09 

8

Re: Программный ШИМ вместо внешнего.

r595ro пишет:

1. Что значат константы представленные в диаграмме, область счетчика?

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

9 (13-04-2021 09:57:44 отредактировано r595ro)

Re: Программный ШИМ вместо внешнего.

Денис, CANNY пишет:
r595ro пишет:

1. Что значат константы представленные в диаграмме, область счетчика?

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

Да в этом и заключается вопрос, а именно почему в блоках 16,27,4,18,12 такие константы. Какие блоки относятся непосредственно к счетчику и будут неизменными, а какие нужны для преобразования.

И еще получил проблему с линейным преобразовании в блоке MAP. Значении выхода CAN от 0х0000 до 0х4B00. Частота меняется линейно, но значения ширины импульса меняются не линейно, Видно, что при 20км\ч счетчик выдает 6км\ч как преобразовать при таком случае? Спасибо.

выход CAN    км\ч          период мс          заполнение мс       частота Гц

6                  20                72,08               35,28                13,87
30  -------------------------------------------------------------------------
41                40                   34,56                  17,24                28,94
50                50                   28,72                  13,84                34,82
59                60                   23,6                       11,2                42,37
71                70                   20,52                        10                48,73
79                80                   17,44                     8,36                57,34
89                90                   15,48                        7,4                64,6
102              100           13,92                     6,64                71,84

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

Иконка вложения Emulator_SPD_otladka_new_schetchik.cfd 10.01 кб, скачивался 173 раз, последний раз 2021-04-13 

10

Re: Программный ШИМ вместо внешнего.

r595ro пишет:

...а именно почему в блоках 16,27,4,18,12 такие константы...

Блоки, предшествующие блоку №4, отвечают за определение периода поступления импульсов. Для повышения точности, определяется количество циклов переполнения регистра значения ширины импульса. Т.о. можно получить это значение в микросекундах, приводимое к значению в сотнях микросекунд. Вплоть до блока №4 никаких изменений для Вашей задачи вносить не требуется.
Блок №4 преобразует значение в частоту, но с некоторой тонкостью: в блоках №4 и №11, опять же для повышения точности, значение делителя блока №4 и констант "Значение от" и "Значение до" блока №11 приведены с повышенным коэффициентом. В итоге на выходе блока "Отображение" получается требуемое значение. Так или иначе, в основном, требуется правильно назначить константы блока "Отображение". Также нужно точно сопоставить значение скорости и данных CAN.
Технически, если не требуется работа непосредственно с частотой, и можно использовать период в сотнях миллисекунд, блок №4 можно упразднить, но тогда это нужно будет учесть при определении констант блока №11.

При использовании ширины импульса для определения периода следует использовать только один счетчик фронтов. Ширина импульса (период), при использовании счетчика передних фронтов определяется Регистром значения ширины импульса 2 (см. https://canny.ru/docs/c72duo/io/#sec--c … ti-impulsa , вариант 1, рис.7, табл.6).

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

Иконка вложения c72duo_Emulator_SPD_otladka_new_schetchik.cfd 10.73 кб, скачивался 196 раз, последний раз 2021-04-13