1

Тема: Lin шлюз

Добрый день.
Подскажите есть задача сделать шлюз lin шины.
Во вложении диаграмма с рабочим шлюзом.
Canny подключен в разрыв и все устройства которые сидят на этой шине работают.
Есть одна проблема, пропала функция "комфорт", нет дотягивания стекол.
Стеклоподъемники сидят на id:016 и id:017. Управление идет по id:015
Где может быть ошибка ?

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

Иконка вложения lin шлюз.cfd 14.08 кб, скачивался 247 раз, последний раз 2020-12-02 

2 (03-12-2020 14:44:29 отредактировано AlexN)

Re: Lin шлюз

Где может быть ошибка ?

Я не врач, но я взглянул...

Стеклоподъемники сидят на id:016 и id:017

Совпадение? (см.картинку)
Не думаю.

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

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

ups.jpg, 68.73 кб, 683 x 159
ups.jpg 68.73 кб, скачивался 228 раз, последний раз 2020-12-03 

3

Re: Lin шлюз

AlexN пишет:

Где может быть ошибка ?

Я не врач, но я взглянул...

Стеклоподъемники сидят на id:016 и id:017

Совпадение? (см.картинку)
Не думаю.

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

Ошибка скорей всего в другом.
По id:015 передаются не все данные. Не все данные именно по D0

4

Re: Lin шлюз

В Вашей диаграмме не формируются сообщения MULTISLAVE для отправки на запросы мастера: нет регистра передачи данных в LIN2; нет перегрузки данных, полученных от SLAVE, в регистры передачи LIN2.
Пример организации LIN MULTISLAVE приведен в документации: https://canny.ru/docs/c7/lin/#sec--c7-l … multislave

5

Re: Lin шлюз

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

В Вашей диаграмме не формируются сообщения MULTISLAVE для отправки на запросы мастера: нет регистра передачи данных в LIN2; нет перегрузки данных, полученных от SLAVE, в регистры передачи LIN2.
Пример организации LIN MULTISLAVE приведен в документации: https://canny.ru/docs/c7/lin/#sec--c7-l … multislave

Дополнил диаграмму, но не взлетело. Передача идет всех данных, кроме одного значения в ID:0x0015, в D0

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

Иконка вложения lin шлюз_1.cfd 16.53 кб, скачивался 220 раз, последний раз 2020-12-03 

6

Re: Lin шлюз

К сожалению, в новой диаграмме не верно задается номер дополнительного буфера и, соответственно, индексы коммутаторов №№99...104. В результате получается путаница. При получении 0x15 заполнится буфер 0, при получении 0x16 заполнится буфер 0 (но со своими  данными, т.е. данными от 0x15), при получении 0x17 заполнится буфер 1 (данными от 0x16); буфер 2 никогда не будет заполнен, ответов на запросы от мастера по третьему ID формироваться не будет. Также, поскольку это шлюз, не верно устанавливаются ID для ответа на запросы мастера: 0x16 LIN1 = 0x0E LIN2; 0x17 LIN1 = 0x0F LIN2.
В предыдущем варианте диаграммы было верное назначение номеров буферов LIN2 - каждому сообщению назначался свой буфер.

7 (04-12-2020 13:17:06 отредактировано AlexN)

Re: Lin шлюз

Dimus пишет:

Дополнил диаграмму, но не взлетело. Передача идет всех данных, кроме одного значения в ID:0x0015, в D0

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

8 (04-12-2020 22:15:32 отредактировано Dimus)

Re: Lin шлюз

AlexN пишет:
Dimus пишет:

Дополнил диаграмму, но не взлетело. Передача идет всех данных, кроме одного значения в ID:0x0015, в D0

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

Я смотрю "Доктор" продолжает давать советы, хотя сам матчасть наверно плохо знает.

9

Re: Lin шлюз

Dimus пишет:
AlexN пишет:
Dimus пишет:

Дополнил диаграмму, но не взлетело. Передача идет всех данных, кроме одного значения в ID:0x0015, в D0

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

Я смотрю "Доктор" продолжает давать советы, хотя сам матчасть наверно плохо знает.

Похоже "доктор" с диагнозом не ошибся. А небольшая аллергическая реакция это нормально.

10 (11-12-2020 22:47:42 отредактировано Dimus)

Re: Lin шлюз

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

К сожалению, в новой диаграмме не верно задается номер дополнительного буфера и, соответственно, индексы коммутаторов №№99...104. В результате получается путаница. При получении 0x15 заполнится буфер 0, при получении 0x16 заполнится буфер 0 (но со своими  данными, т.е. данными от 0x15), при получении 0x17 заполнится буфер 1 (данными от 0x16); буфер 2 никогда не будет заполнен, ответов на запросы от мастера по третьему ID формироваться не будет. Также, поскольку это шлюз, не верно устанавливаются ID для ответа на запросы мастера: 0x16 LIN1 = 0x0E LIN2; 0x17 LIN1 = 0x0F LIN2.
В предыдущем варианте диаграммы было верное назначение номеров буферов LIN2 - каждому сообщению назначался свой буфер.

Поправил диаграмму, все получилось для 3-x id шлюз работает четко. Спасибо за помощь.

Другая проблема, при увеличении шлюза до 6 id, теряются данные. По id:0F теряются данные.

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

Иконка вложения Шлюз 6 id.cfd 13.61 кб, скачивался 238 раз, последний раз 2020-12-11 

11 (17-02-2021 19:14:21 отредактировано Константин, CANNY)

Re: Lin шлюз

Dimus пишет:

...Другая проблема, при увеличении шлюза до 6 id, теряются данные. По id:0F теряются данные.

Не совсем понятно что происходит. Не передаются SLAVEу или не возвращаются MASTERу?
Судя по диаграмме может быть и то и другое. ID=0x0F имеет наименьший приоритет и отправляется SLAVEу в последнюю очередь, а так как период отправки запросов 30мс, то возможно не успевают отправиться все предыдущие сообщения и до последних просто не доходит очередь.
Также режим MULTISLAVE поддерживает работу только с 4 буферами сообщений, т.е. 0...3 (см. https://canny.ru/docs/c7/lin/#sec--c7-l … multislave). Дополнительных буферов передачи LIN 4, 5 и 6 - не существует.

UPDATE: Начиная с версии CannyLab 2.8 в режиме LIN MULTISLAVE доступно 8 буферов сообщений

12

Re: Lin шлюз

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

...Другая проблема, при увеличении шлюза до 6 id, теряются данные. По id:0F теряются данные.

Не совсем понятно что происходит. Не передаются SLAVEу или не возвращаются MASTERу?
Судя по диаграмме может быть и то и другое. ID=0x0F имеет наименьший приоритет и отправляется SLAVEу в последнюю очередь, а так как период отправки запросов 30мс, то возможно не успевают отправиться все предыдущие сообщения и до последних просто не доходит очередь.
Также режим MULTISLAVE поддерживает работу только с 4 буферами сообщений, т.е. 0...3 (см. https://canny.ru/docs/c7/lin/#sec--c7-l … multislave). Дополнительных буферов передачи LIN 4, 5 и 6 - не существует.

В моем случае, получается не передаются SLAVEу...
Я правильно понимаю, что одним контроллером у меня не получится  реализовать шлюз, где есть 6 id ?

13

Re: Lin шлюз

Dimus пишет:

Я правильно понимаю, что одним контроллером у меня не получится  реализовать шлюз, где есть 6 id ?

Попробуем сделать чтобы получилось. О результатах сообщим в ближайшее время.

14 (17-02-2021 19:13:28 отредактировано Константин, CANNY)

Re: Lin шлюз

Dimus пишет:

Я правильно понимаю, что одним контроллером у меня не получится  реализовать шлюз, где есть 6 id ?

Ответил в почту.

UPDATE: Начиная с версии CannyLab 2.8 в режиме LIN MULTISLAVE доступно 8 буферов сообщений

15

Re: Lin шлюз

Здравствуйте,
не могли бы посмотреть правильно ли я переделал диаграмму шлюза для 7-ми ID ?

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

Иконка вложения Шлюз LIN IDs 7.cfd 16.97 кб, скачивался 120 раз, последний раз 2022-02-08 

16

Re: Lin шлюз

Диаграмма содержит ряд ошибок (см. вложение).
В данном виде диаграмма (шлюз) передает Slave все сообщения от Master (данные и запросы на получение данных) и отправляет Slave 7 дополнительных запросов данных (отправка запроса по каждому из ID выполняется приблизительно раз в 210 мс (30мс х 7 = 210мс)). Ответы от Slave, полученные на эти запросы, загружаются в буферы MULTISLAVE. Ответы Slave на запросы непосредственно от Master также загружаются в буфер для дальнейшей передачи Master, однако при этом Master скорее всего не получит ответа на свой запрос (особенно если таких запросов будет несколько) в виду того что будут нарушены жесткие временные интервалы LIN.
Возможно, нужно более детально проработать сам алгоритм взаимодействия Master и Slave через шлюз.

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

Иконка вложения c7_Шлюз LIN IDs 7.cfd 17.41 кб, скачивался 148 раз, последний раз 2022-02-09 

17 (09-02-2022 16:23:56 отредактировано pro-1)

Re: Lin шлюз

Денис, спасибо за ответ. Правильно ли понял, если от Master идут 7 id, но изменять данные от Slave мне нужно будет только по двум id, заработает такая диаграмма?

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

Иконка вложения c7_Шлюз LIN IDs 2.cfd 8.98 кб, скачивался 141 раз, последний раз 2022-02-09 

18

Re: Lin шлюз

Здесь важнее по скольким ID Master отправляет запросы на получение данных Slave.
На все эти запросы шлюз должен подготовить ответы заранее, используя собственные запросы к Slave и заполнением буферов MultiSlave, меняя, если нужно, те или иные данные ответа Slave.
Данные/команды от Master можно пропускать к Slave насквозь, как это сделано сейчас, или, при необходимости, меняя какие-либо данные от Master. Возможно рациональнее было бы пересылать от Master только данные, т.е. сообщения с длиной больше 0.
Также может использоваться подход, когда шлюз полностью берет на себя роль Master и, получая данные от Master, сохраняет их и ретранслирует при периодической отправке (что-то похожее на вариант из сообщения https://forum.canny.ru/viewtopic.php?pid=10182#p10182), но при этом диаграмма будет довольно громоздкая.