Ошибки при чтении Bolid С2000-ПП

Здравствуйте! Есть задача считывать состояния охранных шлейфов из ИСО Орион Болида. Используем преобразователь интерфейсов С2000-ПП версии 2.0. Мануал: https://bolid.ru/files/373/566/s2000_pp_rept_jan_21.pdf

Сейчас настроено три шлейфа сигнализации, их состояние хранится в регистрах 4096, 4112 и 4128 соответственно. Если читать их вручную через терминал- всё отлично.

Если добавить все три в конфиг вот так:

Конфиг
{
  "slave_id": "1",
  "id": "S2000PP",
  "name": "S2000PP",
  "protocol": "modbus",
  "poll_interval": 1000,
  "channels": [
    {
      "name": "ch1",
      "type": "text",
      "reg_type": "input",
      "address": "4096",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    },
    {
      "name": "ch2",
      "type": "text",
      "reg_type": "input",
      "address": "4112",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    },
    {
      "name": "ch3",
      "type": "text",
      "reg_type": "input",
      "address": "4128",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    }
  ],
  "device_max_fail_cycles": 0
}

То успешно читаются первый и третий регистры, второй не читается вообще, сыпет ошибками:

/var/log/messages
root@wirenboard-A2T6NRMB:~# tail -f /var/log/messages
Jun  2 19:01:02 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:03 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:04 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:05 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:05 wirenboard-A2T6NRMB CRON[21607]: pam_unix(cron:session): session closed for user root
Jun  2 19:01:06 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:07 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:08 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:09 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:10 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:11 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:12 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:13 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:14 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:15 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:16 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:17 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:18 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:01:19 wirenboard-A2T6NRMB wb-mqtt-serial[21061]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out

По опыту работы с невотоном, добавил в конфиг “device_timeout_ms”: 3000 и “frame_timeout_ms”: 2500:

Конфиг
{
  "slave_id": "1",
  "id": "S2000PP",
  "name": "S2000PP",
  "protocol": "modbus",
  "poll_interval": 1000,
  "channels": [
    {
      "name": "ch1",
      "type": "text",
      "reg_type": "input",
      "address": "4096",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    },
    {
      "name": "ch2",
      "type": "text",
      "reg_type": "input",
      "address": "4112",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    },
    {
      "name": "ch3",
      "type": "text",
      "reg_type": "input",
      "address": "4128",
      "format": "s16",
      "readonly": true,
      "poll_interval": 1000
    }
  ],
  "device_max_fail_cycles": 0,
  "device_timeout_ms": 3000,
  "frame_timeout_ms": 2500
}

С такими настройками успешно читаются все три регистра, но в то же время они время от времени вываливаются в ошибку:

/var/log/messages
root@wirenboard-A2T6NRMB:~# tail -f /var/log/messages
Jun  2 19:04:15 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: INFO: [mqtt] subscription succeeded (message id 45)
Jun  2 19:04:15 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: INFO: [mqtt] subscription succeeded (message id 116)
Jun  2 19:04:16 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: INFO: [serial client] device modbus:209 is connected
Jun  2 19:04:21 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 coil(s) @ 0 of device modbus:209: Serial protocol error: request timed out
Jun  2 19:04:21 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:21 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: INFO: [serial client] device modbus:1 is connected
Jun  2 19:04:24 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4096 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:27 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4128 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:30 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:33 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4096 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:36 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4128 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:39 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:42 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4096 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:46 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4128 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:49 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:52 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4096 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:55 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4128 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:04:58 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4112 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:05:01 wirenboard-A2T6NRMB wb-mqtt-serial[21934]: WARNING: [modbus] failed to read 1 input(s) @ 4096 of device modbus:1: Serial protocol error: request timed out
Jun  2 19:05:01 wirenboard-A2T6NRMB CRON[21997]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun  2 19:05:01 wirenboard-A2T6NRMB CRON[21996]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun  2 19:05:01 wirenboard-A2T6NRMB CRON[22003]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_wbrules.sh 2>&1 | logger -t wb-daemon-watchdogs)
Jun  2 19:05:01 wirenboard-A2T6NRMB CRON[22005]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Jun  2 19:05:03 wirenboard-A2T6NRMB CRON[21997]: pam_unix(cron:session): session closed for user root

В чём может быть дело? Сейчас всё подключено коротким отрезком Profibus, так что не думаю, что дело в коммутации. Правда, не подключена земля.

Но этот же С2000-ПП отлично читается без ошибок и земли с помощью ПО болида для ПК.

Добрый день.

А все же попробуйте подключить. Для RS-485 земля не нужна только при и так одинаковых потенциалах устройств, что в реальном мире - редкость.

Ошибки, если они есть просто не демонстрируются, можно убедиться анализатором.

Подключил, частота выпадания ошибок не изменилась.

В принципе, конечно, и так жить можно, но хотелось бы без них)

Как правило таймаут связан с тем, что устройство просто не отвечает. Если хоть пара байт ответа есть - будет ошибка CRC.
А не отвечать может - из-за того, что получило запрос с ошибкой. Или не смогло обработать.
Можно еще Guard interval поставить ~200

Может, стоит ещё какой-то таймаут поправить?

Это что и где?

Включить чере “Properties”:
Screenshot from 2021-06-03 15-44-21

А, я в настройках девайса искал. Не помогло, ошибки с той же регулярностью

Анализатор бы прицепить и записать минуту общения. Есть? Например https://aliexpress.ru/item/1005001948010169.html

Увы, нет

Проще заглянуть к вам, при наличии такой возможности. Но только после 13 числа

Ок, тогда позже договоримся, я не в офисе работаю.

1 лайк

Читаю топик и первая мысль «да это же болид, для него нелепые ошибки это норма))»
Но мне очень интересен результат вашей работы, отпишитесь пожалуйста к чему придёте.

Когда Вам будет удобно?

:question:

Всё ещё жду ответа

Здравствуйте! Напишите, пожалуйста, какой именно блок/пульт используете?
Не удалось открыть ссылку в первом вашем сообщении, поэтому хочу уточнить. Преобразователь используете С2000-ПП (Преобразователь протокола С2000-ПП)? Если можно, нарисуйте электрическую схему или эскиз подключения.
Хотим поддержать устройства Bolid и протестировать работу устройств самостоятельно. Возможно, закупить аналогичную конфигурацию устройств, как у вас, и настроить работу.

Добрый вечер! Пульт С2000М, ссылка стухла на днях, они обновили мануал: https://bolid.ru/files/373/566/s2000_pp_rept_jul_21.pdf

Да, именно он. Я довольно долго разбирался с настройкой всего этого болидовского зоопарка, что бы он всё-таки начал выдавать события через ПП в modbus. Там без поллитра не разобраться :grimacing:. Так что гораздо быстрее будет приехать мне к Вам с оборудованием и ноутбуком, что б всё показать и протестировать.

Схема подключения:

image

Подключены питание, Орион и Modbus, джампер XP1 снят.

Если всё-таки будете покупать себе на тест, могу написать полный набор моего тестового “стенда” и скинуть конфиги всех приборов, там всё настроено на передачу показаний через ПП в Modbus

Из какого устройства читайте регистры (в первом сообщении)?

Из С2000-ПП

То есть у вас стоит пульт С2000М (Пульт контроля и управления охранно-пожарный С2000М исп.02), к нему подключен преобразователь С2000-ПП (Преобразователь протокола С2000-ПП), а к преобразователю контроллер Wirenboard. Это правильно?
Этих устройств нам будет достаточно, чтобы воспроизвести вашу проблему?

Ну, раз Вы настаиваете на самостоятельных тестах:

Главный контроллер С2000М, да. К нему подключены по RS485 (системы Орион) С2000-КДЛ, к которому, в свою очередь, по двухпроводной линии связи подключены датчики и извещатели. Так же, к С2000М по RS485 Ориона подключен преобразователь С2000-ПП, который получает события от С2000М и позволяет читать их через Modbus. Подключая С2000-ПП к ПК с помощью преобразователя RS-485 to USB, он исправно и моментально читается из пропиетарной программы Болида. Если подключить к Wirenboard- практически не читается.