Интервал опроса АЦП?

Где его задать? Мне нужно раз в 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, значит. :zipper_mouth_face:
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}});

Доделаете, чтоб из конфига канала бралось, или мне заколхозить?

1 лайк

Сделал, переслал авторам (на гитхабе изменился механизм авторизации, а я уже спать хочу).
Проверят - смерджат в мастер, наверно.

1 лайк

а куда вы отправили патч? На гитхабе не вижу пулл реквеста

Никите в телегу. :slight_smile:
Разберусь с токенами на гитхабе - сделаю как положено.

1 лайк

Мы немного всё переделали, теперь в wb-mqtt-adc более предсказуемый планировщик, и можно настраивать poll_interval для каждого канала в отдельности.

Версия 2.1.0, доступна в testing.

1 лайк

Отлично. Молодцы.