[Модуль] Счетчики Меркурий (mercury)
Модератор: immortal
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: [Модуль] Счетчики Меркурий (mercury)
Такой вариант (напрямую с com-портом) не предусматривался, конвертируйте его в tcp с помощью ser2net и обращайте по ip адресу.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] Счетчики Меркурий (mercury)
Не знаю правильно ли у всех отображается мощность, если правильно, то я удивлен, потому что значения мгновенной мощности у меня не сходились даже близко и я понял где ошибка.
Вот пример обмена данными со счетчиком:
send:32081600813E (запрос на получение значений мгновенной мощности)
answ:32 c1325d c1325d 000000 000000 8e45 (ответ: адрес PvT Pv1 Pv2 Pv3 CRC)
Так вот, в ответе мгновенной мощности c1 32 5d два старших разряда старшего байта указывают положение вектора
полной мощности и все байты читаются в порядке 1 3 2, то есть c1 5d 32, причем два старших бита этого числа мы должны отбросить, а полученное число разделить на 100.
c15d32 =
110000010101110100110010
000000010101110100110010 -> 89394/100 = 893.94 Вт
Описание протокола: http://www.incotexcom.ru/doc/M23x%20236 ... .12.11.pdf
На странице 44 сказано про старшие биты, на странице 53 (рисунок 36) показано схематично.
Если получится исправить расчет в модуле - пришлю результат.
Вот пример обмена данными со счетчиком:
send:32081600813E (запрос на получение значений мгновенной мощности)
answ:32 c1325d c1325d 000000 000000 8e45 (ответ: адрес PvT Pv1 Pv2 Pv3 CRC)
Так вот, в ответе мгновенной мощности c1 32 5d два старших разряда старшего байта указывают положение вектора
полной мощности и все байты читаются в порядке 1 3 2, то есть c1 5d 32, причем два старших бита этого числа мы должны отбросить, а полученное число разделить на 100.
c15d32 =
110000010101110100110010
000000010101110100110010 -> 89394/100 = 893.94 Вт
Описание протокола: http://www.incotexcom.ru/doc/M23x%20236 ... .12.11.pdf
На странице 44 сказано про старшие биты, на странице 53 (рисунок 36) показано схематично.
Если получится исправить расчет в модуле - пришлю результат.
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] Счетчики Меркурий (mercury)
Исправленная функция.
В гитхабе отправил...
В гитхабе отправил...
Код: Выделить всё
function merc_gd($socket252, $cmd, $factor = 1, $total = 0)
{
$this->send($socket252, $cmd);
$result =$this->read($socket252);
$ret = array();
$start_byte = 1;
if ( $total != 1 )
{
for ( $i = 0; $i < 4; $i++ )
{
//if ( dechex(ord($result[$start_byte + $i * 3])) >= 40 )
//$result[$start_byte + $i * 3] = chr(dechex(ord($result[$start_byte + $i * 3])) - 40);
if ( strlen($result) > $start_byte + 2 + $i * 3 )
// Для всех запросов кроме мощности используем стандартный рассчет
if (substr($cmd,2,6)!='081600') {
$ret[$i] = hexdec($this->dd($result[$start_byte + $i * 3]).$this->dd($result[$start_byte + $i * 3 + 2]).$this->dd($result[$start_byte + $i * 3 + 1]))*$factor;
}
// При запросе мощности нужно маскировать два старших разряда старшего бита
else {
$hex = $this->dd($result[$start_byte + $i * 3]).$this->dd($result[$start_byte + $i * 3 + 2]).$this->dd($result[$start_byte + $i * 3 + 1]);
$bin=base_convert($hex, 16, 2);
// Обрезаем строку до 22 бит
while (strlen($bin)>22) $bin=substr($bin,1);
$ret[$i] = bindec($bin)*$factor;
}
}
}
else
$ret[0] = hexdec($this->dd($result[$start_byte+1]).$this->dd($result[$start_byte]).$this->dd($result[$start_byte+3]).$this->dd($result[$start_byte+2]))*$factor;
return $ret;
}
-
- Сообщения: 264
- Зарегистрирован: Чт ноя 08, 2018 5:51 am
- Благодарил (а): 10 раз
- Поблагодарили: 83 раза
Re: [Модуль] Счетчики Меркурий (mercury)
Спасибо, днем уже сам понял.
а есть пример настройки ser2net?
пробовал разные варианты, но всё что-то не то.
пробовал вот такие например, но с них ответ неадекватный на команды
send:001B07B30<br>answ:fffb03fffb01fffe01fffd00<br>
всё равно такой же ответ.
через утилиту mercury236 напрямую с /dev/ttyUSB0 нормально работает.
а есть пример настройки ser2net?
пробовал разные варианты, но всё что-то не то.
пробовал вот такие например, но с них ответ неадекватный на команды
на выходе1884:telnet:0:/dev/ttyUSB0:9600
1883:telnet:0:/dev/ttyUSB0:9600 NONE 2STOPBITS 8DATABITS -XONXOFF -RTSCTS LOCAL
Причем ответ всегда такой шлю тестовую посылку:send:01010101010101013D7A
answ:
send:0805C673
answ:fffb03fffb01fffe01fffd00
send:08000670
answ:
send:08034671
answ:
send:080287B1
answ:
send:0102020202020202FAFC
answ:
send:0818067A
answ:
send:001B07B30<br>answ:fffb03fffb01fffe01fffd00<br>
всё равно такой же ответ.
через утилиту mercury236 напрямую с /dev/ttyUSB0 нормально работает.
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: [Модуль] Счетчики Меркурий (mercury)
Спасибо принял. Не было возможности самому заняться.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: [Модуль] Счетчики Меркурий (mercury)
у меня запускается через скрипт командойstellhawk писал(а): ↑Чт ноя 08, 2018 5:34 pmСпасибо, днем уже сам понял.
а есть пример настройки ser2net?
пробовал разные варианты, но всё что-то не то.
пробовал вот такие например, но с них ответ неадекватный на команды1884:telnet:0:/dev/ttyUSB0:9600
1883:telnet:0:/dev/ttyUSB0:9600 NONE 2STOPBITS 8DATABITS -XONXOFF -RTSCTS LOCAL
Код: Выделить всё
ser2net -C "3004:raw:60:/dev/ttyUSB0:9600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 60
- Зарегистрирован: Чт мар 19, 2015 10:27 pm
- Благодарил (а): 8 раз
- Поблагодарили: 22 раза
Re: [Модуль] Счетчики Меркурий (mercury)
Нет проблем, главное, чтобы мой код правильно работал, потому что там не самый красивый подход да и программист из меня так себе...
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: [Модуль] Счетчики Меркурий (mercury)
Просьба отписаться, кто пользуется модулем, каков результат. К сожалению, у меня нет оборудования меркурий для тестирования.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 264
- Зарегистрирован: Чт ноя 08, 2018 5:51 am
- Благодарил (а): 10 раз
- Поблагодарили: 83 раза
Re: [Модуль] Счетчики Меркурий (mercury)
к сожалению пока никак. не могу пробиться через ser2net что-то с настройками не так, а что пока не знаю.
-
- Сообщения: 230
- Зарегистрирован: Чт фев 12, 2015 2:34 pm
- Благодарил (а): 36 раз
- Поблагодарили: 6 раз
Re: [Модуль] Счетчики Меркурий (mercury)
Может настройки с моего аппарата помогут?
Мои настройки Ser2net
только скорость 9600, а не как на скриншоте.
конфигуратор меркурия общается со счетчиком через ser2net.
Мои настройки Ser2net
только скорость 9600, а не как на скриншоте.
конфигуратор меркурия общается со счетчиком через ser2net.
- Вложения
-
- ser2net.jpg (74.52 КБ) 3658 просмотров
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
php 7, AMS,broadlink rm2,rm3 mini.