Чтение данных со счётчиков Меркурий
- Войдите на сайт для отправки комментариев
Пнд, 03/02/2014 - 10:49
Здравствуйте.
Помогите пожалуйста с кодом. Я имею команды которыми можно управлять счётчик они в HEX формате но я незнаю как их отправить через Arduino на счётчик отправляю одно а на PuTTy вижу другое
char code1 = {0x00, 0xE4, 0x9A, 0xE0, 0x71, 0xAA, 0xFB, 0x0C}; void setup() { Serial.begin(9600); // открываем последовательный порт //и задаем скорость обмена 9600 бод } void loop() { // отправляем данные Serial.print(code1, HEX); }
Максим Спасибо за ответ но проблемма в том что когда я заливаю Arduino вашем кодом в мониторинге я вмжу слеедушее
Например с помошью программы DockLight v2 я отправляю команду 00 E4 9A E0 71 AA FB 0C и счётчик отвечает на него и отключает внутреннее реле.
А тепер я хочу отправить этуже команду с Arduino Mega но у меня чтото не получается помогите пожалуйста буду очень благодарен
А если не программно формировать строку, отправляемую в порт?
А как сделать можете подсказать пожалуйста?
Или так:
int b = 79;
Serial.print(b, HEX)
Например с помошью программы DockLight v2 я отправляю команду 00 E4 9A E0 71 AA FB 0C и счётчик отвечает на него и отключает внутреннее реле.
UDP: И как вообще у вас подключен счетчик к дуине и как вы его подключаете к компу?
Числа в массив вводятся в десятичной системе.
У счётчика есть порт RS232 подключаю счётчик к компу обычным USB to COM кабелем всё работает нормально тоесть отправляю данные и счётчик отвечает...
А когда отправляю с Ардуино то в мониторенге порта вижу другие байты
У вас в настройках порта 2 стоповых бита (9600, None, 8, 2), по умолчанию UART у дуины настроен один стоповый бит (SERIAL_8N1).
http://arduino.cc/en/Serial/Begin
И еще раз:
И как вообще у вас подключен счетчик к дуине?
Счётчик к Ардуине подключон по схеме ниже...
Arduino TX0 - Счётчик RX
Arduino RX0 - Счётчик TX
и плюс через конвертор RS232 to RS485
RS232 на Ардуине а RS485 на Счётчике
Максим если у вас есть Скайп мы можем поговорить пожалуйста мне нужна ваша помошь заранее спасибо
Надо ардуино -> rs232-rs485 -> счетчик.
У дуины нет RS-232, у дуины есть UART. Подключив RS-232 к дуине напрямую ничего не зарабртает, а в некоторых случаях такое подключение может сжечь дуину.
http://easyelectronics.ru/svyaz-mikrokontrollera-s-kompyuterom-cherez-rs232.html
UDP: так что если еще не сдох UART дуины, то собирайте/покупайте преобразователь.
если я куплю как вы думаете сработает. Навернека из за этого биты не правильно отправлялись так может быть
Если вы вручную отправляете через DockLight в счетчик команды и они работаю корректно, то если указав в DockLight порт, на котором висит дуина (тот порт, который вы указываете в ArduinoIDE) получаете от дуины те же команды, то с преобразователем все должно завестись. Так же как вариант можно купить UART TTL -> RS-485 преобразователь или шилд на дуину.
Зачем тебе городить? Бери сразу такой преобразователь
с программы DockLight я отправляю одно но приходит другое тогда так выходит что это из за переобразавателя Большое вам спасибо
с программы DockLight я отправляю одно но приходит другое тогда так выходит что это из за переобразавателя
указав в DockLight порт, на котором висит дуина (тот порт, который вы указываете в ArduinoIDE)
Ниже схема подключения
Ардуино у нас на порте COM17
и есть переоброзователь USB to COM а она на порте COM13
для мониторинга я подключаю
Arduino (RX0) - USB to COM (TX)
Arduino (TX0) - USB to COM (RX)
открываю DockLight выбираю порт COM13 (USB to COM) и отправляю что нибудь например в HEX-е 79
а в мониторинге у Ардуино вижу другое
Я так думаю что это из за UART как вы сказали мне нужен переоброзователь
И еще разок:
Укажите в DockLight COM17 и посмотрите что отправляет дуина. Если команды приходят от дуины те же, то останется только купить преобразователь.
на скриншоте посмотрите Дуина отправлет одно а DockLight показывает другое и плюс с PuTTy тоже пробовал тоже самое показывает другое???
И в четвертый раз - на скриншоте указан СОМ13 - порт на котором преобразователь
Еще раз - не тот порт, на котором висит преобразователь, а тот на котором висит дуина.
В общем, разговор зашел в тупик, я уже не знаю как еще объяснять, перечитывайте ветку пока не поймете смысл написанного...
Ниже схема подключения
Ардуино у нас на порте COM17
и есть переоброзователь USB to COM а она на порте COM13
для мониторинга я подключаю
Arduino (RX0) - USB to COM (TX)
Arduino (TX0) - USB to COM (RX)
mr-Ayaz что у вас за Ардуино?
Если на основе ATmega328 то как вы ее подключили через два порта(фото или схемку) - родной на COM17 и вторй COM13? ;)
Уберите с нее все подключения от переоброзователя USB to COM13, и мониторьте через ее родной порт COM17. Проверте настройки СОМ17 (почему на СОМ13 2 стоповых бита (9600, None, 8, 2)), может и на СОМ17 что-то в этом роде ;) .
Ардуину к счетчику подключайте через переходник UART TTL -> RS-485 .
Если есть возможность залезть внутрь счетчика ;) то наверно можно подключиться к его UART (TTL-уровня) без всяких преобразователей.
Код предложеныйmaksim пишет:
прекрасно работает.
Попробовал в Proteuse - скрин ниже
Спасибо большое за ответ. У меня Ардуиино Мега с 2560 я кажется не сделал чтота не так.
Я прочитал что если я подключаю UART к RS232 то данные будут отправляться но не так как вы отправляете. а RS232 будет принемать данные по другому из за какогота уровня. Большое спасибо Максиму он подсказал что можно использовать MAX232 для переоброзования. Я сегодня проверю что будет и напишу вам ответ.
и к сати схема подключения таков на верху я ошибся
для мониторинга я подключаю
Arduino (COM17) - USB to COM (COM13)
Arduino (RX0) - USB to COM (TX)
Arduino (TX0) - USB to COM (RX)
и ешё это один проект имееться 10 000 счётчиков Я знаю алгоритм работы счётчиков и команды в HEX формате для получения данных и управления счётчиком. но мало знаю про Ардуино кто хочет помочь и работать за хорошие реальные деньги пишите мне на мейл (mr-Ayaz@mail.ru) и плюс после этого есть другие проекты жду ваших ответов Я думаю что у нас чтота получится
Я прочитал что если я подключаю UART к RS232 то данные будут отправляться но не так как вы отправляете,
а RS232 будет принемать данные по другому из за какогота уровня.
Может быть Вам по-английски будет более понятно: http://en.wikipedia.org/wiki/MAX232
Причем в больших компьютерах RS-232 имеет напряжения ± 12V, а вот ардуино выше +5V напряжение не любит.
Добрый вечер. В программировании я не так давно, по этому разрешите обратиться к Вам. Не получается простая задача - не могу вывести массив данных на COM порт. Точнее выводит, но не значения массива, а какие-то квадратики.
Заранее СПАСИБО!!!
Что в массиве лежит то и выводится.
Для этого нужно выводить через функцию Serial.print
для примера забил массив единицами, а выводяться квадратики (какой-то символ наверное)
сам массив определен как int
Просто основная задача (в будующем) не просто выводить значения а передавать их в программу. Функция Serial.print с этим справиться?
Максим помогите пожалуйста
От чего это может быть???
От незнания что такое тип данных и что показывает монитор. Монитор дуины показывает только символы кодов ASCII.
Вы так и не понимаете самой главной и простой вещи - что такое представление данных. Например есть байт данных, в двоичном виде (BIN) его можно представить так 00001010, в десятичном виде (DEC) это будет число 10, в шеснадцетиричном (HEX) байт будет выглядеть как 0А, в кодах ASCII это символ перехода на новую строку. Но это все один и тот же байт данных, в каком виде вы бы его не предстасвляли это все равно все теже 8 бит - 00001010.
Так вот монитор дуины показывает принятые байты только как символы из таблицы кодов ASCII, вы же смотрите на одни и те же данные из DockLight в шеснадцетиричном виде (HEX), переключитесь в DockLight на вкладку ASCII и получите то же самое что и в мониторе дуины.
Может глупость пишу, Но: а на ардуино нельзя никак эмулировать\поднять rs485? Вроде есть библиотеки для модбас. Вроде модбас и rs485 похожи.