<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[CANNY forum &mdash; Потеря сообщений при приеме]]></title>
	<link rel="self" href="https://forum.canny.ru/extern.php?action=feed&amp;tid=778&amp;type=atom" />
	<updated>2020-10-21T08:39:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.canny.ru/viewtopic.php?id=778</id>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8989#p8989" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>В сообщениях с ID=0x18EBFF00 кроме &quot;ЕС1PACK&quot; еще какие-нибудь данные могут быть получены?</p></blockquote></div><p>Да, кроме EC1 мультипакетами отправляются и диагностические сообщения DM1, у них так же идет BAM, а затем n-ное количество пакетов. Например, если движок шлет и ЕС1, и DM1 и они оба мультипакетные, IDшники у ВАМов и PACKов будут идентичные. Принимающие узлы определяют какая &quot;пачка&quot; пакетов к какому сообщению относится только по PGN, который передается в последних трех байтах BAM-сообщения, следом за которым прошел этот мультипакет.</p>]]></content>
			<author>
				<name><![CDATA[Sergey]]></name>
				<uri>https://forum.canny.ru/profile.php?id=764</uri>
			</author>
			<updated>2020-10-21T08:39:31Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8989#p8989</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8988#p8988" />
			<content type="html"><![CDATA[<p>Посмотрел лог. Стало понятнее.<br />В сообщениях с ID=0x18EBFF00 кроме &quot;ЕС1PACK&quot; еще какие-нибудь данные могут быть получены?</p>]]></content>
			<author>
				<name><![CDATA[Денис, CANNY]]></name>
				<uri>https://forum.canny.ru/profile.php?id=3</uri>
			</author>
			<updated>2020-10-21T08:28:50Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8988#p8988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8986#p8986" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Не вполне понятно как у вас организована обработка &quot;ЕС1PACK&quot;<br />Пожалуйста, приведите пример хотя бы двух последовательных сообщений мультипакета. На картинке EC1_pack.PNG присутствует идентификатор 0x18FEE300x. Хочется понять, все же с каким ID передаётся мультипакет.</p></blockquote></div><p>Да, я сразу не сообразил заскринить более наглядно, поэтому кажется, как будто PACK отправляется с IDшником самого ЕС1, но это не так. По J1939 у нас для ВАМ первый байт - приоритет, второй и третий - ID ВАМ-сообщения, который всегда ECFF, последний байт - адресант, в данном случае 00 - блок двигателя. Для PACK аналогично: первый байт - приоритет, второй и третий - ID PACK-сообщения, который всегда EBFF, последний байт - адресант.<br />В первом пакете 1С20 - это как раз-таки наши обороты хх, которые выставлены на 900. Остальные данные не заполнены за ненадобностью.<br />На всякий случай еще добавил лог. Если у вас есть возможность читать .blf, то могу отправить в таком формате.<br />Состав ЕС1 более наглядно виден в CAN Interactive generator, с помощью которого я генерю сообщения в CAN, скрин во вложении.</p>]]></content>
			<author>
				<name><![CDATA[Sergey]]></name>
				<uri>https://forum.canny.ru/profile.php?id=764</uri>
			</author>
			<updated>2020-10-21T06:04:39Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8986#p8986</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8985#p8985" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Sergey пишет:</cite><blockquote><p>...По поводу фильтров. Я так понимаю, что фильтры, которые Вы добавили в начале диаграммы, необходимы для того, чтобы принимать узлом только те сообщения, которые нам нужны, а не все, что есть в шине.</p></blockquote></div><p>Именно так, на аппаратном уровне. И более того - гарантировать приём если не каждого, то по крайней мере первого сообщения с заданным в фильтре ID с момента попадания в диаграмму предыдущего сообщения с таким ID.</p><div class="quotebox"><cite>Sergey пишет:</cite><blockquote><p>...как быть, если нужно принимать более 16 сообщений? Ведь &quot;Регистров установки фильтра приёма&quot; всего 16...</p></blockquote></div><p>Фильтры можно перенастраивать динамически, можно подключить параллельно второй CAN интерфейс у которого тоже 16 фильтров, второй контроллер и т д. Кроме того, дополнительные возможности фильтрации даёт драйвер Шлюза CAN. Но, разумеется, предел возможностей существует.</p><p>Не вполне понятно как у вас организована обработка &quot;ЕС1PACK&quot;<br />Пожалуйста, приведите пример хотя бы двух последовательных сообщений мультипакета. На картинке EC1_pack.PNG присутствует идентификатор 0x18FEE300. Хочется понять, все же с каким ID передаётся мультипакет.</p>]]></content>
			<author>
				<name><![CDATA[Денис, CANNY]]></name>
				<uri>https://forum.canny.ru/profile.php?id=3</uri>
			</author>
			<updated>2020-10-20T17:07:23Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8985#p8985</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8984#p8984" />
			<content type="html"><![CDATA[<p>Благодарю за помощь! Теперь работает, хотя если долго наблюдать за симуляцией процесса, изредка все-таки проскакивает значение с педали, когда нижний предел в ЕС1 выставлен более 600. Но я так думаю, нужно поиграться с задержками, чтобы свести к нулю вероятность возникновения таких моментов.<br />По поводу ЕС1, скрины во вложении. TPCM - это ЕС1BAM - в данном случае из всего, что в нем передается, нас интересует PGNunber, потому что кроме ЕС1 есть еще другие мультипакетные сообщения и нам нужно знать какое из них будет передаваться в данный момент. ЕС1 - это ЕС1PACK, для удобства отображения &quot;Vector&quot; склеивает 6 восьмибайтных сообщений в одно и отображает как одно 40-байтное сообщение. Фактически после ЕС1BAM передается подряд 6 сообщений по 8 байт, в которых первый байт - номер пакета, а остальные семь содержат данные. В конкретном примере нас интересует только EngineSpeedAtIdlePoint1. Описание параметра пo J1939 во вложении (SPN_188.PNG). Остальные параметры нас не интересуют, поэтому я не задавал для них каких-либо значений и они стоят по нулям и остальные 5 пакетов принимать в CANNY нет необходимости.</p><p>По поводу фильтров. Я так понимаю, что фильтры, которые Вы добавили в начале диаграммы, необходимы для того, чтобы принимать узлом только те сообщения, которые нам нужны, а не все, что есть в шине. А затем уже мы сравниваем значение регистров &quot;Рег.чтен.СAN0 IDL&quot;,&nbsp; &quot;Рег.чтен.СAN0 IDH&quot;,&nbsp; &quot;Рег.чтен.СAN0 ERL&quot; c идентификаторами конкретных сообщений и, если совпадает, то извлекаем из поля данных конкретного сообщения необходимую нам информацию. То есть получается как бы &quot;двухуровневая фильтрация&quot; идентификаторов: вначале на прием из CAN, а затем, на поиск среди принятых того ID, который нужен для конкретной цепочки? <br />И еще: как быть, если нужно принимать более 16 сообщений? Ведь &quot;Регистров установки фильтра приема&quot; всего 16. Значит, остальные сообщения будут приниматься без фильтров, просто по совпадению идентификаторов с заданными константами?</p>]]></content>
			<author>
				<name><![CDATA[Sergey]]></name>
				<uri>https://forum.canny.ru/profile.php?id=764</uri>
			</author>
			<updated>2020-10-20T07:45:30Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8984#p8984</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8980#p8980" />
			<content type="html"><![CDATA[<p>Для уверенного приема идентификаторов рекомендуется использовать фильтры CAN: <a href="https://wiki.canny.ru/index.php/CANNY_7.2_duo,_%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_CAN" rel="noopener noreferrer" target="_blank">https://wiki.canny.ru/index.php/CANNY_7 … %D1%80_CAN</a><br />Для лучшего понимания алгоритма, приведите, пожалуйста, пример мультипакета конфигурации двигателя ЕС1 (с расшифровкой что где в нем расположено).<br />В исходную диаграмму добавлены фильтры, а также несколько примеров оптимизации.</p>]]></content>
			<author>
				<name><![CDATA[Денис, CANNY]]></name>
				<uri>https://forum.canny.ru/profile.php?id=3</uri>
			</author>
			<updated>2020-10-19T15:39:53Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8980#p8980</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Потеря сообщений при приеме]]></title>
			<link rel="alternate" href="https://forum.canny.ru/viewtopic.php?pid=8979#p8979" />
			<content type="html"><![CDATA[<p>Добрый день всем! На днях столкнулся с очередной проблемой. Суть такова: требуется отправлять в CAN значение запроса оборотов двигателя, принятое с резистивной педали акселератора, при условии, что оно превышает предустановленное значение оборотов холостого хода, которое можно извлечь из сообщения конфигурации двигателя. (Минимальное значение оборотов хх – 600 об/мин). Схема преобразования значения АЦП и схема приема конфигурации двигателя работают корректно и описанный алгоритм работает, но по какой-то причине конфигурация двигателя (EC1), отправляемая раз в 5 секунд, принимается CANNY раз в десять реже, если не более. Т.е., если, допустим в ЕС1 обороты хх выставлены не 600 об/мин, а 900 об/мин, а с педали выдается, например, 800 об/мин, то в CAN все равно отправляется значение с педали. Отправляемое значение обнуляется лишь изредка, после того, как CANNY все-таки «выловил» EC1 (обнаружение CANNY EC1 детектировал визуально с помощью зеленого светодиода, присоединенного к старшей части идентификатора сообщения).<br />Как показали наблюдения, с уменьшением периода отправки EC1, частота его приема в CANNY все-таки увеличивается. Но так же рандомно. Перебор значений задержек в схеме не привел к успеху, потому что EC1 может прийти как раз в секунду, так и раз в минуту.<br />Загрузка шины только сообщениями, которые видны в диаграмме на прием и на отправку.<br />Ни приоритет, ни периодичность ЕС1 поменять мы не можем.<br />Я так предполагаю, проблема в том, что буфер CANNY заполняется сообщениями, отправляемыми с большей частотой, а EC1 CANNY просто не успевает обработать. Но почему тогда при установке задержек для удержания принятого значения оборотов вплоть до минуты, отправляемое значение все равно сбрасывается через несколько секунд?<br />Надеюсь, проблему описал понятно. Диаграмма во вложении. Сабж в самом низу диаграммы и выделен красными рамочками.</p>]]></content>
			<author>
				<name><![CDATA[Sergey]]></name>
				<uri>https://forum.canny.ru/profile.php?id=764</uri>
			</author>
			<updated>2020-10-19T07:31:17Z</updated>
			<id>https://forum.canny.ru/viewtopic.php?pid=8979#p8979</id>
		</entry>
</feed>
