1 (10-08-2017 11:47:37 отредактировано kazakovse)

Тема: Последовательная отправка CAN с двух входов

Добрый день. Подскажите пожалуйста, можно ли как нибудь упростить диаграмму: При появлении сигнала в CAN-шине "закрывается" В кан-шину отправляетя последовательно 4 сообщения, допустим с индексом 1, 7, 3 и опять 7, потом отправка прекращается. Когда появляется сигнал "открывается" отправляются сообщени с индексом 2, 7, 4, 7 и прекращается.
Первая версия вообще не стабильная. Зависает вся CAN автомобиля. Вторая слишком сложная.

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

Иконка вложения Проект 1v1.cfd 8.84 кб, скачивался 11 раз, последний раз 2017-08-10 

2 (10-08-2017 11:45:40 отредактировано kazakovse)

Re: Последовательная отправка CAN с двух входов

Вторая версия.

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

Иконка вложения Проект 1v2.cfd 8.4 кб, скачивался 12 раз, последний раз 2017-08-10 

Re: Последовательная отправка CAN с двух входов

В диаграммах имеется ряд недочетов.
В части чтения данных CAN рекомендуется использовать подход приведенный в описании драйвера CAN на wiki, пример 2.
В части отправки данных CAN. Заполнение регистров передачи CAN выполнено интересно, а условие отправки сообщения не корректное - при таком подходе может получиться что в регистре начала передачи будет в течение нескольких циклов выполнения диаграммы "висеть" значение "1" и отправка CAN-сообщений будет выполняться на каждом из них, забивая CAN-шину автомобиля. Для отправки сообщений следует использовать подход из примера 1 того же раздела wiki (детектор фронта).
Упростить диаграммы можно, но важнее сначала добиться чтобы они корректно работали.

Re: Последовательная отправка CAN с двух входов

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

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

Иконка вложения Проект 1v2a.cfd 6.45 кб, скачивался 13 раз, последний раз 2017-08-10 

5

Re: Последовательная отправка CAN с двух входов

Спасибо, попробую.
Еще вопрос.
Задумка была складывать зеркала при постановке на штатную охрану и раскладывание, при снятии с охраны Volvo S80.
Что может занавешивать СAN-шину? В принципе мой второй вариант работал, зеркала складывались и раскладывались, но вот сам ЦЗ срабатывал при этом через раз (почти никогда не срабатывал), хотя передача сообщений прекращалась уже (диод не горел).

Re: Последовательная отправка CAN с двух входов

Предлагаю немного доработанный вариант предыдущей диаграммы. В ней устранены некоторые неточности и учтены возможные особенности работы CAN-шины автомобиля.
"Подвисание" шины автомобиля, скорее всего, было обусловлено забиванием CANа отправляемыми контроллером сообщениями (в течение 500 мс контроллер, на каждом цикле выполнения диаграммы, стремился отправить сообщение, т.е. это около 50-100 сообщений), мешая работе штатного оборудования автомобиля.
При наличии CANNY7, в режиме CAN/LIN-монитора, (или другого CAN-анализатора) можно было бы посмотреть что происходило в CAN при работе Ваших исходных диаграмм.

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

Иконка вложения Проект 1v2b.cfd 6.73 кб, скачивался 10 раз, последний раз 2017-08-10 

7

Re: Последовательная отправка CAN с двух входов

Проект1v2a не работает. CAN шину читаю прибором CHIPSOFT j2534 mid, через obd и CANNY nano тоже подключаю через obd (купил на ALI корпус). Сделаю тройник, чтоб 2 устройства сразу подключить.

8

Re: Последовательная отправка CAN с двух входов

1v2b работает, зеркала складываются, но так же глючит ЦЗ при этом, не срабатывает или срабатывает не на все двери.

Re: Последовательная отправка CAN с двух входов

Контроллер начинает отправлять сообщения сразу после получения сигнала на "закрытие" или "открытие". Возможно это мешает автомобилю отработать закрытие ЦЗ. Прилагаю немного измененную диаграмму. В ней заменен блок №13 (Детектор переднего фронта => Детектор заднего фронта), т.е. отправка сообщений контроллером начнется по заднему фронту сигнала от генератора импульсов (спустя 500мс после получения команды). Этого может хватить для отработки команд на закрытие ЦЗ. Если не хватит, но будет заметно улучшение работы ЦЗ, задержку начала складывания зеркал можно еще увеличить.

UPD: При работе диаграммы Проект 1v2b CAN продолжает подвисать?

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

Иконка вложения Проект 1v2c.cfd 6.73 кб, скачивался 10 раз, последний раз 2017-08-11 

10 (12-08-2017 12:45:29 отредактировано kazakovse)

Re: Последовательная отправка CAN с двух входов

Добрый день. 1v2c - всё то же самое.  Может это из-за того, что сообщение "закрыто" не отправляется один раз, при нажатии на кнопку, а висит в шине всё время (или отправляется множество раз), пока не появится сообщение "открыто", которое так же долго будет висеть.  Я попробовал модифицировать мою вторую версию, добавил туда задержку выключения, стало более менее стабильно - замок срабатывает примерно 2 раза из 3х.

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

Иконка вложения Proekt_1v3.cfd 8.41 кб, скачивался 10 раз, последний раз 2017-08-12 

Re: Последовательная отправка CAN с двух входов

kazakovse пишет:

...Может это из-за того, что сообщение "закрыто" не отправляется один раз, при нажатии на кнопку, а висит в шине всё время (или отправляется множество раз), пока не появится сообщение "открыто", которое так же долго будет висеть...

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

kazakovse пишет:

...Я попробовал модифицировать мою вторую версию, добавил туда задержку выключения, стало более менее стабильно - замок срабатывает примерно 2 раза из 3х.

В новой версии диаграммы также изменены период и заполнение у блоков "Генератор ШИМ". При этом все равно, пока отрабатывает алгоритм складывания зеркал CAN-шина забивается сообщениями контроллера (за 20мс может пройти 2-5 цикла диаграммы и на каждом будет выполняться попытка отправки сообщения в CAN) и, наверняка, шина подвисает, но это длится не более 100мс (4 сообщения по 20мс).
Возможно стоит разделить задачу на этапы. По команде закрытия сначала дать машине закрыть ЦЗ, а потом попробовать сложить зеркала (использовать задержку включения выполнения алгоритма складывания зеркал, т.е. начать складывание через 1-2с после получения команды).
Предлагаю вариант диаграммы 1v2c с измененными, по примеру 1v3, периодом и заполнением "Генератора ШИМ". Возможно это окажет влияние на стабильность работы.

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

Иконка вложения Проект 1v2d.cfd 6.73 кб, скачивался 9 раз, последний раз 2017-08-12 

12

Re: Последовательная отправка CAN с двух входов

Вот так? Попробовал - замок работает, а зеркала нет...

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

Иконка вложения Проект 1v2b1.cfd 7.04 кб, скачивался 7 раз, последний раз 2017-08-12 

13

Re: Последовательная отправка CAN с двух входов

А если задержку ставить меньше (20мс), то опять зеркала работают, замок нет.

Re: Последовательная отправка CAN с двух входов

Предполагалось как-то так...

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

Иконка вложения Проект 1v2b2.cfd 7.04 кб, скачивался 9 раз, последний раз 2017-08-12 

15 (13-08-2017 10:05:04 отредактировано kazakovse)

Re: Последовательная отправка CAN с двух входов

Тоже самое...  Есть одна догадка. Когда я подключаю Canny, сразу идет отправка сообщений (диод сразу начинает моргать и не перестает), даже пока не нажимаю кнопку, ведь в CAN-шине всё время "гуляет" код либо открыто, либо закрыто, с периодичностью примерно 25-50мс. Нужно как то сделать, чтоб отправка начиналась, только когда меняется код с "открыто" на "закрыто" и наоборот.

16 (13-08-2017 10:22:09 отредактировано kazakovse)

Re: Последовательная отправка CAN с двух входов

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

Re: Последовательная отправка CAN с двух входов

Многое зависит оттого к какому именно событию привязан алгоритм и как он представлен в CAN. Возможно Вы опираетесь, это статус охраны, а не нажатие кнопок пульта.
Еще один вариант диаграммы. Очевидно, что признаком изменения состояния Открывается/Закрывается является 3й бит (считая с 0, т.е. в D1 = 0b1000) байта D1 отслеживаемого идентификатора. Видимо, контроллер реагирует на изменения байтов D0 и D1, из которых нужен только байт D1, точнее его 3й бит. Но, при прежнем подходе (жесткому равенству регистра D1:D0 указанным константам), контроллер будет реагировать на любое изменение в используемых байтах и возможна неправильная работа алгоритма.

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

Иконка вложения Проект 1v2b3.cfd 7.1 кб, скачивался 8 раз, последний раз 2017-08-13 

18

Re: Последовательная отправка CAN с двух входов

Ну да, статус охраны, но он же изменяется с нажатием кнопок на брелке, или поворотом личинки водительской двери. Это мне и нужно. Есть еще кнопка закрытия в салоне, но если сделать к ней, то зеркала будут складываться, даже если нажать её на ходу. Я пытался найти сигнал, который будет однократно подаваться в шину, но видимо он дальше штатной сигналки не доходит, а от сигналки в шину уже статус охраны постоянно.
С последней диаграммы есть улучшения. Замок срабатывает, если нажать второй раз, после отработки зеркал, а то он вобще не срабатывал с подключенным canny.
В Canny 7 есть регистры состояния автомобиля. Неужели для всех марок они одинаковые? Как Canny распознает нужный сигнал?

Re: Последовательная отправка CAN с двух входов

Можно и привязаться и к статусу охраны, просто нужно учитывать как все это влияет на работу алгоритма. Для улучшения ситуации можно попробовать увеличить задержку включения, например до 1000мс.
В CANNY7 статусы для разных машин разные и работают только при использовании драйвера автомобиля в сочетании с соответствующим CCX (системным ПО). Но все же, рекомендуется работать с чистыми данными CAN.

Re: Последовательная отправка CAN с двух входов

Измененный вариант диаграммы 1v2b3. Так будет правильнее.

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

Иконка вложения Проект 1v2b4.cfd 7.04 кб, скачивался 14 раз, последний раз 2017-08-13 

21 (14-08-2017 23:06:37 отредактировано kazakovse)

Re: Последовательная отправка CAN с двух входов

Добрый вечер. Я наконец разобрался в чем дело. CAN-шину никто не забивал. Коды, которые я использовал для складывания зеркал (ID 000FFFFE), это не штатный код автомобиля, а код, который я брал из диагностики. Подключал сканер, складывал через него зеркала и смотрел, какие будут коды. Так вот, если сложить их  (или опустить стекло или еще что нибудь) со сканера, а потом сразу поставить на охрану, то ЦЗ так же не срабатывал. Спустя 5сек, в блоках управления передними дверьми, щелкает какая то релюха и ЦЗ дальше работает нормально.  Если взять сигнал с кнопки складывания в салоне, такой проблемы нет, но они не сложатся с выключенным зажиганием.
  Последние 2 диаграммы полностью рабочие (только задержку убрал), На практике в принципе не нужно открывать и закрывать машину сразу "туда-сюда". Закрыл - замок сработал-диаграмма отработала - зеркала сложились, спустя 5сек блоки вышли из диагностического режима и при снятии с охраны, замок обязательно сработает.
Возьму последнюю диаграмму за основу и к ней теперь буду приделывать подъем стеклоподъемников. Спасибо за помощь.

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

Иконка вложения Проект 1v2b5.cfd 6.73 кб, скачивался 16 раз, последний раз 2017-08-14