Где его задать? Мне нужно раз в 10-30с, не чаще. Флюктуации записывать незачем.
Спасибо.
Добрый день. Если по Modbus - то можно попробовать увеличить время опроса, конечно.
Встроенных в сома.
Так, их читает и публикует в MQTT wb-mqtt-adc
Можно, конечно, увеличить
averaging_window
а можно просто останавливать wb-mqtt-adc запуская периодически. Ну и от флуктуаций можно избавться поднятием количества чтений. А так - параметра специального для паузы нет.
Когда будет?
Ок, видоизменим вопрос.
Каков интервал опроса встроенных каналов АЦП сейчас?!
~ 50 измерений в секунду получается.
Окно в 500 и 100 замеров кладет систему в крайне маловероятные (отрицательные на датчиках 4-20мА) значения.
50 замеров - работает.
Однако.
Ага, даже примерно представляю где в переменной переполняется значение суммы.
Отлично, (ну, плохо, конечно), но бага.
Воспроизведу - отдам программисту.
рукалицо вы там не того ли джуна подхватили, что я зимой выпер?..
Сразу сделайте период опроса задавать, чтоб не вставать дважды.
А можно пример конфига? Попробовал на штатных входах - пока нет неверных.
{
"debug": false,
"device_name": "ADCs",
"iio_channels": [
{
"channel_number": "voltage0",
"voltage_multiplier": 0.01,
"id": "EXT1_A1",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0048",
"mqtt_type": "current"
},
{
"channel_number": "voltage1",
"voltage_multiplier": 0.01,
"id": "EXT1_A2",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0048",
"mqtt_type": "current"
},
{
"channel_number": "voltage2",
"voltage_multiplier": 0.01,
"id": "EXT1_A3",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0048",
"mqtt_type": "current"
},
{
"channel_number": "voltage3",
"voltage_multiplier": 0.01,
"id": "EXT1_A4",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0048",
"mqtt_type": "current"
},
{
"channel_number": "voltage0",
"voltage_multiplier": 0.01,
"id": "EXT1_A5",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0049",
"mqtt_type": "current"
},
{
"channel_number": "voltage1",
"voltage_multiplier": 0.01,
"id": "EXT1_A6",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0049",
"mqtt_type": "current"
},
{
"channel_number": "voltage2",
"voltage_multiplier": 0.01,
"id": "EXT1_A7",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0049",
"mqtt_type": "current"
},
{
"channel_number": "voltage3",
"voltage_multiplier": 0.01,
"id": "EXT1_A8",
"averaging_window": 1,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-0049",
"mqtt_type": "current"
},
{
"channel_number": "voltage0",
"voltage_multiplier": 10,
"id": "EXT1_A9",
"averaging_window": 50,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-004a",
"mqtt_type": "current"
},
{
"channel_number": "voltage1",
"voltage_multiplier": 10,
"id": "EXT1_A10",
"averaging_window": 50,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-004a",
"mqtt_type": "current"
},
{
"channel_number": "voltage2",
"voltage_multiplier": 10,
"id": "EXT1_A11",
"averaging_window": 50,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-004a",
"mqtt_type": "current"
},
{
"channel_number": "voltage3",
"voltage_multiplier": 10,
"id": "EXT1_A12",
"averaging_window": 50,
"decimal_places": 5,
"max_voltage": 4.5,
"scale": 1,
"match_iio": "21a4000.i2c/*/*-004a",
"mqtt_type": "current"
}
]
}
Когда ставлю 500, получается провал до отрицательных значений, и меня начинает долбать диспетчерская. Повторю, я не имею роскоши быть внештатным бесплатным тестировщиком, увы, и докладываю вам только о тех минах, на которые наступил в процессе эксплуатации. Стенда с возможностью крутить все устройства и все параметры у меня нет.
Может, тут дополнительно другая собака порылась? Just a thought.
Нашел…
10, значит.
wirenboard/wb-homa-adc/blob/master/src/adc_driver.cpp, со 124 строки.
readers->push_back(TChannelDesc{channel.Id,
false,
{MXS_LRADC_DEFAULT_SCALE_FACTOR,
MAX_ADC_VALUE,
channel.ReaderCfg,
10,
DebugLogger,
InfoLogger,
sysfsIIODir}});
Доделаете, чтоб из конфига канала бралось, или мне заколхозить?
Сделал, переслал авторам (на гитхабе изменился механизм авторизации, а я уже спать хочу).
Проверят - смерджат в мастер, наверно.
а куда вы отправили патч? На гитхабе не вижу пулл реквеста
Никите в телегу.
Разберусь с токенами на гитхабе - сделаю как положено.
Мы немного всё переделали, теперь в wb-mqtt-adc более предсказуемый планировщик, и можно настраивать poll_interval
для каждого канала в отдельности.
Версия 2.1.0
, доступна в testing
.
Отлично. Молодцы.