Arduino Mega + Меркурий 203.2Т RS485
- Войдите на сайт для отправки комментариев
Ср, 25/09/2019 - 17:37
Добрый день! Пытаюсь считать данные со счетчика Меркурий посредством Arduino Mega
Для обмена использую модуль troyka.
Пока пробую взять статичный пакет запроса, заведомо рабочий вариант, который опробован для связи со счетчиком. Не могу понять, почему при считывании я получаю тот же пакет, что и отправил. Точнее логически понимаю, ведь я по сути сам же отправляю этот набор в буфер и потом пытаюсь считать что то из буфера, а там отправленный висит. Только вопрос в том, как же считать ответные данные от счетчика?
Вот скетч:
byte inComing [30]; byte byteReceived; void setup() { // put your setup code here, to run once: Serial3.begin(9600); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: byte buf[7]={0x02,0x54,0x3F,0xF5,0x27,0x7A,0xB6}; for (int i = 0;i<7;i++) { Serial3.write(buf[i]); } byte i =0; delay(500); if (Serial3.available() > 0) { //если есть доступные данные while (Serial3.available()) { Serial.print(Serial3.read()); delay(100); } } delay(1000);
что за модуль тройка вы используете для обмена? модулей тройка существует десятки
RS-485 troyka
http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:troyka-rs485
на данном модуле мигает только индикация Tx, Rx молчит! Подключение к счетчику верное, проверено на usb конверторах.
надеюсь, подключали не по этой картинке ? :)
а если серьезно - от того, что вы записали пакет в буфер - при чтении он считываться не должен. Раз у вас считывается - похоже данные реально возвращаются обратно. Толи этот "тройка-модуль" так настроен, толи счетчик Меркуоий пакеты футболит
Похоже что по этой картинке) это плохо?
Вообще сам меркурий не должен футболить посылки, ибо такую же ровно посылку от проги принимает на ура и отвечает что надо.
Похоже что по этой картинке) это плохо?
ну там какая-то откровенная фигня нарисована. На левой колодке провода красный и черный не имеют ни малейшего отношения к VCC и GND. Средний контакт зачем-то заведен на пин ардуино, когда он на модуле не используется.
но вообще я с этим модулем дела не имел, может кто другой подскажет
а попробуйте подключить модуль тройка к проге и принять тот пакет, что посылает программа
а попробуйте подключить модуль тройка к проге и принять тот пакет, что посылает программа
Интересная идея! Подключил. с компа отправляю пакет, на тройке мигает Rx, правда в мониторе порта ничего не видно...
похоже что то не так с подключением!
имхо, если говорить про шину rs485, то это нормальное явление - видеть в приемнике, то что отправил. Как вариант, сразу вычитывать буфер после каждого отправленного байта, чтобы на приёмнике это эхо не мешало.
Опирался на эту статью: https://habr.com/ru/post/339868/ Чем для меня плоха связь по485- 1)он под пломбой, 2)если есть система, то её нужно временно отключать для своей поделки, 3) надо знать сетевой номер. Я по оптике сначала опрашиваю прибор по 0 адресу и узнаю его сетевой, закрываю сессию по 0 и открываю по сетевому, потом уже опрос. Читаю Меркурий234 по оптопорту: 9600 8N1, протокол обмена практически одинаков для всех меркуриев (сейчас этим же устройством опрашиваю и СЭТ4ТМ, разница- 9600 8O1, и в старых версиях по 40 "AA" и 40 "66" отправлять, команды практически те же самые). Самая большая сложность -разместить соосно свето/фотодиоды и настроить их чувствительность. На порт-3 последовательно: 1светодиод для контроля передачи, резистор 100 Ом, IR светодиод от старого ТВ пульта и всё на +5v. На порт-2: фототранзистор от компьютерной мышки и эмиттерный повторитель BC547 с контрольным светодиодом (проверял пультом от телевизора по морганию). 3 кнопки управления:1-Наложить маску отображаемых параметров(мне не нужны тарифы, а счётчиков порядка 40шт); 2-показания Актив/Реактив- вчера 0 часов, сегодня 0 часов, сейчас; 3-параметры электросети пофазно (правда всё это можно посмотреть и на экране счётчика): напряжения В, токи мА, углы между напряжениями, угол между током и напряжением (cos F). В планах подключить цветной дисплей и выводить векторной диаграммой.