Рассмотри вариант с использованием интерфейса RS-485 и преобразователя Меркурий 221. Статья во многом аналогична ранее опубликованной, но доработана именно под счетчик Меркурий 234
Меркурий 221» представляет собой преобразователь интерфейса USB в CAN/RS-232/RS485 и обратно (т.е. для подключения к ПК может использоваться только интерфейс
Рис 1. Назначение клемм преобразователя. |
В преобразователе интерфейсов имеется перемычка X4 (Рис. 2), которая предназначена для аппаратного отключения «Эхо» ( Эхо – сигнал запроса который может быть принят за сигнал ответа, т.е. передатчик и приемник, разнесенные в преобразователе, могут работать таким образом, что приемник получив сигнал отправленный передатчиком для счетчика посчитает этот сигнал за ответ)
Наличие перемычки ни как не зависит от типа интерфейса в счетчике, она лишь влияет на выбор интерфейса в программе опроса «Конфигуратор счетчиков Меркурий 230» и на необходимость установки галочки «Эхо» в программе «Конфигуратор Универсальный»
Если перемычка в преобразователе установлена (или просто преобразователь после покупки не открывался и перемычка не удалялась), то в программе Универсальный конфигуратор» необходимо установить галочку «Эхо». А в программе Конфигуратор счетчиков Меркурий 230″ выбрать интерфейс CAN, даже если используется счетчик с интерфейсом RS-485.Рис. 2 Перемычка Х4 преобразователя интерфейсов |
Для подключения к ПК, преобразователь интерфейсов оснащен интерфейсом USB. После подключения преобразователя к порту USB компьютера операционная система попытается найти и установить драйвер.
Рис. 3 Сообщение Windows 7, об установке драйвера. |
Если автоматически Windows не удастся найти драйвер то скачать его можно здесь:
http://incotexcom.ru/plc-system/can/FTDI_w98ME_2000_XP.zip для WinXP. Рис. 4 Окно «Диспетчера устройств». Диспетчер устройств нам потребуется также для уточнения номера порта. Порт ищем в разделе «Порты (COM и LPT)». Если этого раздела нет, или в нем нет записи «USB Serial Potr», то значит драйвер не установился. Если запись есть, то запоминаем номер в скобочках. в нашем случае, см рис. 4, это порт номер 17. |
Как указано на схеме использован может быть и второй интерфейс счетчика. На наличие второго интерфейса указывает литера «R» в маркировке счетчика, например Меркурий 234 ART-03 PB. R. Последняя буква и указывает на наличие второго интерфейса. Второй интерфейс выведен на разъем XS1.
XS1 — выход интерфейса RS485
XS2 — выход +5В 100 мА для питания внешних устройствШаг 3.
Питание
интерфейса счетчика Меркурий 234 производится от встроенного источника
питания, поэтому достаточно счетчик подключить на три фазы, что бы интерфейс заработал.
В нашем случае, при использовании преобразователя Меркурий 221 , это RS-485, CAN, галочка «Эхо» ставится в зависимости от наличия перемычки в преобразователе. (см. выше)
4. Указываем настройки COM порта, которые включают в себя следующие параметры:
Номер порта устанавливается в соответствии с тем, какой номер указан в Диспетчере устройств. (см шаг 1)
Скорость обмена – с завода на всех счетчиках скорость обмена программируется равной 9600 бод. Значение может быть иным если производилось соответствующее программирование данного параметра после покупки.
Системный тайм аут и его множитель могут быть увеличены пользователем, в случае если связь осуществляется нестабильно.
5. Указываем пароль уровня доступа
С завода пароль устанавливается «по умолчанию»? для User : 111111, для Admin: 222222
Галочка «HEX» по умолчанию ставится.
6. Открываем канал связи, кликнув по кнопке «Соединить»В случае успешного завершения обмена со счетчиком откроется вкладка «Служебная информация
Если же выводится сообщение об ошибке, то канал связи не открыт. В данном случае, как указано на картинке ниже, не прошла команда «тест связи», т.е. счетчик не ответил ничего.
А вот в случае такой ошибки:Про подключение счетчика Меркурий 234 через оптопорт напишем в следующей статье.
incotex-support.blogspot.com
Организовать удаленный сбор показаний с электросчетчиков — задача вроде не сложная, счетчики с каждым годом все умнее и умнее и должны сами все отправлять, ан нет, информация конечно есть, но она разрозненная. Производители оборудования видимо тоже хотят зарабатывать на продаже своего ПО. Пишу эту статью чтобы сэкономить время всем, у кого есть похожие задачи.
Клеммы для подключения к счетчику находятся под опломбированной крышкой.
Поэтому нам пришлось договариваться сетевой компанией о том что, нужно снимать пломбы, выполнять работы, заново пломбировать счетчики. Но в итоге, договоренности были достигнуты и можно было спокойно заниматься решением основной задачи.
Счетчик, принимает на вход строку байтов формата ADDR-CMD-CRC, а отдает ADDR-CMD-DATA-CRC, где:
Первым делом, подключимся к счетчику с помощью стандартной программы konfigurator и, с помощью сниффера, посмотрим на передаваемые пакеты, выясним какую контрольную сумму нужно добавлять в конец. Ниже, строка полученная от счетчика.
Воспользовавшись онлайн калькулятором CRC выясняем, что нужно вычислить CRC-16 (Modbus) с полиномом 0xA001.
def crc16(data):
crc = 0xFFFF
l = len(data)
i = 0
while i < l:
j = 0
crc = crc ^ data[i]
while j < 8:
if (crc & 0x1):
mask = 0xA001
else:
mask = 0x00
crc = ((crc >> 1) & 0x7FFF) ^ mask
j += 1
i += 1
if crc < 0:
crc -= 256
result = data + chr(crc % 256).encode() + chr(crc // 256).encode('latin-1')
return result
import serial
import struct
import time
sn = 26222790
# Открываем соединение
ser = serial.Serial('/dev/ttyUSB0', 9600, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
print ('Connected:', ser.isOpen())
# \x2f - Команда для получения серийного номера
chunk = struct.pack('>L', int(sn))
chunk += b'\x2f'
chunk = crc16(chunk)
# Отправим данные на счетчик и получим информацию с него
ser.write(chunk)
time.sleep(1)
out = ser.read_all()
ser.close()
print ('Check CRC:', out[-2:] == crc16(out[:-2])[-2:])
print ('Result string:', ':'.join('{:02x}'.format(c) for c in out))
chunk += b'\x27'
t1 = ''.join('{:02x}'.format(c) for c in out[5:9])
t2 = ''.join('{:02x}'.format(c) for c in out[9:13])
print ('T1 =', float(t1)*0.01, '(кВт*ч)', 'T2 =', float(t2)*0.01, '(кВт*ч)')
Для разработки использовался Адаптер USB -> COM «Меркурий-221», но можно напрямую подключать счетчик к COM-порту.
Полезная информация по подключению счетчиков находится тут
Документация на официальном сайте
Сайт техподдержки
Про CRC на Википедии
habr.com
Часто для корректировки времени и тарифных зон требуется перепрограммирование электрических счетчиков. Делается это обычно при помощи специального интерфейса. Перепрограммирование всегда производится за счет владельца счетчика.
Подключить свой компьютер или ноутбук к электросчетчикам можно разными способами, варианты зависят от вида встроенного интерфейса в этот счетчик и решаемой задачи. В основном используют либо непосредственное подключение преобразователей интерфейса к компьютеру (см. ниже), либо передача сигнала через сети Ethernet / WiFi или через мобильную связь 3G/4G. Несколько примеров:
Если доступа к электросчетчику нет, он стоит в закрытом шкафу или на подстанции, то можно использовать радиомодемы (радиоудлинители) типа JTT-A (RS485/CAN).
В случае необходимости можно подключить любой из адаптеров USB-RS485/CAN/IRDA/оптопорт к сетям Ethernet / WiFi с помощью шлюза или же при наличии высокоскоростного мобильного интернета можно вести опрос через сети 3G/4G.
Для опроса можно использовать либо Универсальный конфигуратор счетчиков Меркурий, либо TaskGroup.
Эти виды подключений подходят и для любых других электросчетчиков, только ПО надо искать у производителей счетчиков.
Пароль по умолчанию в счетчиках Меркурий: 11111111 и 2222222 (информация не проверенная!)
Лучше для конкретной модели узнавать в блоге поддержки счетчиков Меркурий
www.wattrouter.ru
Последние версии программного обеспечения для PLC по состоянию на 9.01.2013
Программа для параметрирования выносного индикатора Меркурий 258
incotex-support.blogspot.com