Страница 8 из 10

Re: HBus

Добавлено: Ср сен 18, 2019 5:57 am
akouz
Пока что все, сделанное в рамках проекта, "покоится на двух китах":
1) все процессорные модули (за исключением WiFi шлюза) имеют форм-фактор Arduino Pro Mini, 18x33 mm
2) весь софт написан в среде Ардуино и использует библиотеки Ардуино

Из первого пункта следует, что в альтернативных модулях я не могу использовать камни в корпусах большого размера.

Атмега 644А в корпусе QFN-44 7х7 мм годится, а в корпусе QFP-44 12х12 мм - нет. По какой-то неведомой мне причине китайцы задешево продают только Атмеги в больших корпусах, а в маленьких корпусах цена сразу вырастает в 2-3 раза и становится сопоставимой с ценами Digi-Key, Маузера, и т.п. Вполне вероятно, что дешевые Атмеги - это китайские пиратские копии, которые пакуются только в корпуса из узкого номенклатурного ряда; соответственно, чип Atmega 644А в корпусе QFN-44 уже не пиратский, поэтому стоит намного дороже.

Из второго пункта следует, что желательно исползовать или процы нативного Ардуиновского ряда, т.е. Атмега и SAMD21, или хотя бы те, которые сам производитель удосужился портировать в Ардуино, что верно для ХМС1100. Что же касается STM32, то посмотрев на то, что имеется для Maple и "голубой пилюли", я ужаснулся и решил, что это лучше не трогать.

На SAMD21 вполне можно сделать модуль размера Arduino Pro Mini. Но XMC1100 мне нравится больше за счет широкого диапазона напряжений питания. Кроме того, UART в XMC1100 имеет встроенный механизм обнаружения коллизий на шине, что хорошо подходит для HBus:
14.3.3.4 Collision Detection
In some applications, such as data transfer over a single data line shared by several
sending devices (see Figure 14-30), several transmitters have the possibility to send on
the same data output line TXD. In order to avoid collisions of transmitters being active at
the same time or to allow a kind of arbitration, a collision detection has been
implemented.

The data value read at the TXD input at the DX1 stage and the transmitted data bit value
are compared after the sampling of each bit value. If enabled by PCR.CDEN = 1 and a
bit sent is not equal to the bit read back, a collision is detected and bit PSR.COL is set.
If enabled, bit PSR.COL = 1 disables the transmitter (the data output lines become 1)
and generates a protocol interrupt. The content of the transmit shift register is considered
as invalid, so the transmit buffer has to be programmed again.
Но генератор в XMC1100 - это сущий ад: встроенный RC-генератор очень неточный (4%), его надо калибровать, иначе даже UART правильно работать не будет, а генератора на кварце вообще не предусмотрено.

Re: HBus

Добавлено: Ср окт 02, 2019 12:02 pm
akouz
Заказал платки формата Arduino Pro Mini на процессорах ATMega644A. ОЗУ и ПЗУ в этом чипе вдвое больше, чем в 328P, в обозримом будущем этого должно хватить на что угодно.

Перетряхнул код, перевел все что мог из ОЗУ в ПЗУ. Заодно вынес настройки в отдельный файл HBconfig.h. Расход ОЗУ в базовом скетче rev 1.2 снизился до 61%. Что еще приятнее, скетч HBus Power Meter на этой основе теперь использует 71% ОЗУ, что вполне удовлетворительно. Теперь появилась возможность этот скетч улучшить даже без перехода на ATMega644.

PS: 13.10.2019 - продолжаю фиксить баги, появившиеся всвязи со сделанными изменениями...

PPS: 23.10.2019 - выложил rev 1.4, расход ОЗУ снижен до 54%

Re: HBus

Добавлено: Ср окт 23, 2019 11:31 am
akouz
Теперь базовый код HBus более-менее устоялся, можно переходить к реальным проектам. Однако есть проблема, состоящая в том, что, по мере увеличения кол-ва узлов в сети, становится все трудней уследить за конфигурацией сети. В том числе вести учет какая версия софта прошита в том или ином узле и какие топики он использует.

Поэтому приступил к разработке некого костыля в виде РС-шной программы (назвал ee HBProj), которая должна делать следующее:
  • Вести список проектов, где под "проектом" понимается сеть HBus со своим специфическим набором узлов
  • Для каждого проекта вести список имеющихся в сети узлов
  • Для каждого узла показывать ревизии железа и софта, а также топиков, использованных в узле.
  • Хранить копию конфигурационного файла узла (HBconfig.h), использованного при компиляции (что включает имена топиков), и еще - ссылку на папку, где хранится скетч.
  • Как вариант, там же можно хранить скомпилированный бинарник скетча.
Для каждого проекта буду заводить отдельную папку, где хранится нужная инфа. С базами данных дела иметь не хочу. Даже XML или JSON пока не собираюсь использовать. Наверное, ограничусь старыми добрыми ini-файлами.

В связи с этим провел некоторую "регрессию" кода, чтобы параметры узла можно было задавать не только, как и раньше, при конфигурировании узла, но и заранее, во время компиляции при помощи конфигурационного файла HBconfig.h. То есть, чтобы как можно больше настроек узла отдать во власть HBProj.

Re: HBus

Добавлено: Сб янв 18, 2020 3:01 am
akouz
Обнаружилась серьезная проблема с WiFi шлюзом: использованные Ардуино библиотеки являются блокирующими, из-за этого ESP8266 может "замирать" на большой промежуток времени (до нескольких секунд) и, в принципе, может терять HBus трафик. До сих пор на практике этого не наблюдалось по причине малого трафика в тестовых HBus системах, а также большого UART буфера (256 байт) в ESP8266. Однако сам факт наличия этой проблемы доказан в тестах на другом оборудовании. Проблема неизбежно вылезет в системах с напряженным трафиком.

Решения могут быть такие:
  • Использовать неблокирующие библиотеки
  • Использовать другой WiFi модуль

Re: HBus

Добавлено: Ср янв 22, 2020 12:43 am
Aven
используй ESP32, уж для шлюза совсем не дорого, а мощи вагон.

Re: HBus

Добавлено: Ср янв 22, 2020 9:03 am
akouz
У них два недостатка:
  • те модули на ESP32, которые я попробовал, имели плохую чувствительность, намного хуже чем ESP-12
  • у ESP32 баг в библиотеке <setjmp.h>, поэтому он мне не подходит
К тому же никакая "моща" не спасает от блокирующих библиотек. Я лучше на MKR1000 перейду. Или сменю библиотеки. Или и то и другое. Не решил пока.

Re: HBus

Добавлено: Ср янв 29, 2020 6:40 pm
Aven
1. Имеется ввиду WiFi часть? Вообще нет проблем с этим...
2. Для чего он нужен?

MKR1000 что-то только оригинал

Re: HBus

Добавлено: Ср янв 29, 2020 9:45 pm
Aven
Кстати что думаешь о https://bus-77.org/ ?

Re: HBus

Добавлено: Чт янв 30, 2020 5:10 am
akouz
Aven писал(а):
Ср янв 29, 2020 9:45 pm
Кстати что думаешь о https://bus-77.org/ ?
Слишком высокая бодовая скорость, из-за этого нельзя использовать свободную топологию прокладки кабеля. Если бы они сделали не 125, а 19.2 kbps, то получился бы российский аналог бельгийского Velbus (CAN, длина кабеля до 1 км, свободная топология).

Удивляет, что они рекомендуют терминировать кабель с волновым сопротивлением 100 Ом резисторами по 120 Ом.

Re: HBus

Добавлено: Чт янв 30, 2020 12:25 pm
Aven
Закрытая какая-то система...