kvazimoda24 (kvazimoda24) wrote,
kvazimoda24
kvazimoda24

Categories:

Счётчик ABB E31

Ковыряю тут выше обозначенный счётчик.
Хочу с него по ModBus снимать показания.

Конечно, его родная карта регистров оставляет чувство недосказанности. Но кое-как научился с него считывать текущие значения.
Чтобы что-то записать в него, пришлось натравить родную программу, т.к. описания, что ему надо сказать, чтобы он разрешил в себя запись, нигде не нашлось.
Для тех, у кого есть трудности с подключением родного ПО, приведу лог, который пишет сама программа.

На сколько я понял, весь секрет в первой посылке с кодом доступа. И вот после того, как родная программа отправила этот код доступа, счётчик разрешил себя программировать. Замечу, что настройки с завода были, что "разрешено программирование без кода" и "не обращать внимание на крышку контактов".
И вот столкнувшись с этой проблемой, в моём мозгу начала закрадываться мысль, что прошивку для счётчика писали странные люди.
Вчера же эта мысль подтвердилась.
У счётчика можно запросить через ModBus текущее время. Из консоли в Линукс с использованием ModBus TCP шлюза это будет выглядеть вот так:

И в принципе, всё выглядит более менее логично. 6 байт: первый — год (последние две цифры), второй — месяц... последний — секунды. Для тех кто в танке, оно здесь в шестнадцатеричной форме записано. Т.е. 0x15 если перевести в десятичную форму, то будет, как раз, 21. Время из примера: 2021.08.31 17:09:02. Всё это относительно легко и просто обрабатывается программно.
Но вот я решил прочитать запись из журнала. Счётчик этот хранит в своей памяти показания за последние 12 месяцев, при этом, число и час, когда надо зафиксировать показания в журнале, отдельно настраиваются. Но сейчас не об этом. Смысл в том, что счётчик запоминает время, когда были зафиксированы эти показания. И вот я получаю время фиксации для первой записи (первая запись, по сути, это текущие показания):

И вот тут наблюдательный читатель заметит, что творится какая-то хрень. Почему, вроде как, текущие показания имеют время фиксации 2033.08.49 23:09:86? А всё потому, что писал прошивку кто-то альтернативно одарённый. Он зачем-то решил в журнале время указывать не в шестнадцатеричке, а в десятичке поверх шестнадцатерички.
Не, я конечно понимаю, что вот так в отладке оно красиво выглядит, не надо ничего пересчитывать, сразу видно время. Но, блин, я же это не вручную буду смотреть, а программой. Для кого это всё? Зачем придумывать две разные функции хранения времени? А ведь это значит, что в родной программе пришлось писать две разных функции разбора полученного со счётчика времени. И самое главное, я понимаю, что на компьютере нет больших проблем преобразовать вот этот идиотский формат времени из журнала в понятный машине. Но ведь это преобразование запихали в сам счётчик, а там не безграничные ресурсы. И вот после этого становится понятно, почему после выставления номера записи, которую я хочу считать из счётчика, надо подождать не меньше секунды, прежде чем считывать показания. Наверное, он эту секунду преобразует дату :)

Ну и отдельные лучи ненависти производителю сего девайса за то, что родную программу не обучил работать через ModBus TCP, и что нет версии для Линукс, а виндовая под Wine'ом постоянно падает (хотя, тут, может быть, у меня wine старый и криво настроен).
Tags: linux, железо, кулибничество, линукс, российское ПО, электрика
Subscribe

  • Подключил бризер Tion O2 к умному дому

    Весной этого года приобрёл и установил у себя в квартире два бризера Tion O2. И вот, наконец-то, дошли руки прицепить их к умному дому. Родная…

  • WAP браузер

    Авиакатастрофа. Самолет упал на необитаемый остров. В живых остались два пилота и стюардесса… Через месяц стюардесса со словами: Пора…

  • Intel и разрешение экрана

    Недавно стал обладателем монитора с разрешением матрицы 3840x2160. Основное время я провожу в линуксе, и там у меня не составило большого труда…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments