<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[CANNY forum &mdash; Потеря сообщений при приеме]]></title>
		<link>https://forum.canny.ru/viewtopic.php?id=778</link>
		<atom:link href="https://forum.canny.ru/extern.php?action=feed&amp;tid=778&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Потеря сообщений при приеме».]]></description>
		<lastBuildDate>Wed, 21 Oct 2020 08:39:31 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8989#p8989</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Sergey)]]></author>
			<pubDate>Wed, 21 Oct 2020 08:39:31 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8989#p8989</guid>
		</item>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8988#p8988</link>
			<description><![CDATA[<p>Посмотрел лог. Стало понятнее.<br />В сообщениях с ID=0x18EBFF00 кроме &quot;ЕС1PACK&quot; еще какие-нибудь данные могут быть получены?</p>]]></description>
			<author><![CDATA[null@example.com (Денис, CANNY)]]></author>
			<pubDate>Wed, 21 Oct 2020 08:28:50 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8988#p8988</guid>
		</item>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8986#p8986</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Sergey)]]></author>
			<pubDate>Wed, 21 Oct 2020 06:04:39 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8986#p8986</guid>
		</item>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8985#p8985</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Денис, CANNY)]]></author>
			<pubDate>Tue, 20 Oct 2020 17:07:23 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8985#p8985</guid>
		</item>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8984#p8984</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Sergey)]]></author>
			<pubDate>Tue, 20 Oct 2020 07:45:30 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8984#p8984</guid>
		</item>
		<item>
			<title><![CDATA[Re: Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8980#p8980</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Денис, CANNY)]]></author>
			<pubDate>Mon, 19 Oct 2020 15:39:53 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8980#p8980</guid>
		</item>
		<item>
			<title><![CDATA[Потеря сообщений при приеме]]></title>
			<link>https://forum.canny.ru/viewtopic.php?pid=8979#p8979</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Sergey)]]></author>
			<pubDate>Mon, 19 Oct 2020 07:31:17 +0000</pubDate>
			<guid>https://forum.canny.ru/viewtopic.php?pid=8979#p8979</guid>
		</item>
	</channel>
</rss>
