Привет всем читающим!
Здесь я попытаюсь подвести некоторые итоги по написанию подпрограммы мониторинга счетчика СЕ-306 для системы "АСК-Дизайн".
Устройство мониторится по RS-485 . Отдельное описание протокола производитель, видимо, поленился делать, поэтому используем то, что есть. О 306-м там нет ни слова, но можно смотреть на то, что написано про СЕ-301. По бОльшей части это всё правда - из того, что сделал - список ниже - не удалось реализовать только лишь Ping в варианте broadcasting и ReadRelayConf - обе команды возвращают ошибку. Успешно у меня реализованы следующие команды (на С).
Как видно - все они на чтение, но запись - из тех что я пробовал - тоже работает. Есть ещё вот такой протокол - но я его не пробовал. AdminTool для этого счетчика вызывает команды из обоих протоколов - что несколько приводит в недоумение - ну да ладно. Есть некоторая изюминка по паролям - опишу её.
Пароль на чтение успешно устанавливается командой WritePsw или AdminTools. При чтении счетчик проверяет соответствие пароля, НО несоответствие обнаруживается, только если в запросе передан ненулевой пароль, не совпадающий с записанным (о чем в журнале счетчика появляется соответствующая запись), то есть нулевой пароль в запросе на чтение работает всегда. AdminTools не сохраняет установленный пароль, а передаёт в команде нулевой. Вот как это выглядит:
Кроме того, команда Ping (not broadcast, broadcast вообще не реализован) работает в любой ситуации - то есть для неё пароль не проверяется, хотя по писанию должен.
Пароль на запись? Догадайтесь сами.....)
Здесь я попытаюсь подвести некоторые итоги по написанию подпрограммы мониторинга счетчика СЕ-306 для системы "АСК-Дизайн".
Устройство мониторится по RS-485 . Отдельное описание протокола производитель, видимо, поленился делать, поэтому используем то, что есть. О 306-м там нет ни слова, но можно смотреть на то, что написано про СЕ-301. По бОльшей части это всё правда - из того, что сделал - список ниже - не удалось реализовать только лишь Ping в варианте broadcasting и ReadRelayConf - обе команды возвращают ошибку. Успешно у меня реализованы следующие команды (на С).
ReadConfig,
Version,
ReadRTCCorrection,
ReadSubscriberNumber,
ReadSerialNumber,
ReadRelayState,
ReadDateTime,
ReadBatRes,
ReadMeterCode,
ReadCurTariff,
ReadAvrPower,
ReadTariffSumOfDay,
ReadTariffValue,
ReadTariffSum,
ReadTariffCommon,
ReadPower,
ReadEnergyOfDays,
ReadMaxEnOfDay,
ReadMaxEnMon,
ReadJournalEvent.
Version,
ReadRTCCorrection,
ReadSubscriberNumber,
ReadSerialNumber,
ReadRelayState,
ReadDateTime,
ReadBatRes,
ReadMeterCode,
ReadCurTariff,
ReadAvrPower,
ReadTariffSumOfDay,
ReadTariffValue,
ReadTariffSum,
ReadTariffCommon,
ReadPower,
ReadEnergyOfDays,
ReadMaxEnOfDay,
ReadMaxEnMon,
ReadJournalEvent.
Как видно - все они на чтение, но запись - из тех что я пробовал - тоже работает. Есть ещё вот такой протокол - но я его не пробовал. AdminTool для этого счетчика вызывает команды из обоих протоколов - что несколько приводит в недоумение - ну да ладно. Есть некоторая изюминка по паролям - опишу её.
Пароль на чтение успешно устанавливается командой WritePsw или AdminTools. При чтении счетчик проверяет соответствие пароля, НО несоответствие обнаруживается, только если в запросе передан ненулевой пароль, не совпадающий с записанным (о чем в журнале счетчика появляется соответствующая запись), то есть нулевой пароль в запросе на чтение работает всегда. AdminTools не сохраняет установленный пароль, а передаёт в команде нулевой. Вот как это выглядит:
Кроме того, команда Ping (not broadcast, broadcast вообще не реализован) работает в любой ситуации - то есть для неё пароль не проверяется, хотя по писанию должен.
Пароль на запись? Догадайтесь сами.....)
Комментариев нет:
Отправить комментарий