1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Обмен по протоколу DCON

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее

Модератор: Глоб.модераторы

Ответить

Автор темы
Алексей_П
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 07 июн 2013, 14:56
Имя: Прокофьев Алексей Анатольевич
Страна: Россия
город/регион: Новосибирск

Обмен по протоколу DCON

Сообщение Алексей_П »

Здравствуйте, нужна помощь по реализации протокола DCON.
Пишу программу на C#. Обмен с модулем I-7017RC используя DCON. Читаю входные значения. Формат команды #AA,
на C# это выглядит так: var wBuffer = new byte[] {0x23, 0x30, 0x31, 0xD};
в ответ приходит такой буфер:
byte[0] = 62;
byte[1] = 50;
byte[2] = 50;
byte[3] = 0;
При конвертировании в строку получаем: 3F-32-32-00
Вопрос: как эти данные преобразовать в мА?
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3971
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 21 раз
Поблагодарили: 229 раз

Re: Обмен по протоколу DCON

Сообщение Никита »

Коротковат у Вас ответ получается. 8-канальные модули на команду #01<CR>, без указания канала, насколько помню, выплевывают в ответ значения всех каналов в строку подряд, с завершением строки тем же символом <CR>. И это явно длиннее четырех байт.
Во-первых, без всяких C отправьте в модуль Ваш запрос хотя бы гипертерминалом или чем Вам удобнее и посмотрите, что будет. Во-вторых, ответный буфер при работе на С надо обработать и символ возврата каретки заменить принятым в С терминирующим нулем, чтобы получить нормальную для С строку.
В третьих - огласите весь список, пожалуйста. Т.е. и отклик модуля в терминале и весь полученный от него буфер до символа 0x0D
Непонятен ноль в последнем байте, его там по идее, быть не может. Но С воспринимает его как конец строки. Кстати, буфер-то у Вас если используется тот же самый, то он конечной длины. Объявите отдельную длинную строку для ответа, будет проще.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "

Автор темы
Алексей_П
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 07 июн 2013, 14:56
Имя: Прокофьев Алексей Анатольевич
Страна: Россия
город/регион: Новосибирск

Re: Обмен по протоколу DCON

Сообщение Алексей_П »

Спасибо за ответ, разобрался! На диске icpdas есть программка Send232 V.2.0.1 называется. Попробовал ей послать #01<CR> Модуль ответил:
>222CFFFFFFFFFFFFFFFFFFFFFFFFFFFF Утилита DCON_Utility возвращает тоже самое. Т.е. модуль исправный.
Далее пробую так:
считываю 34 байта, и конвертирую в строку через BitConverter.ToString() получаем:
3E-
32-32-32-41-
46-46-46-45-
46-46-46-45-
46-46-46-46-
46-46-46-45-
46-46-46-45-
46-46-46-45-
46-46-46-45-
0D
это ASCII символы. 3E это '>', 0D это '♪' (возврат каретки). 32-32-32-41 в шестнадцатеричной 222А или в десятичной 8746.
Далее всё просто. Если датчик 4-20, то ((8746-6553)/(32767-6553))*16+4 = 5.34 мА.

Romcheg
SCADA+
SCADA+
Сообщения: 597
Зарегистрирован: 05 ноя 2009, 11:18
Имя: Бузинов Роман Анатольевич
Страна: Россия
город/регион: Москва
Благодарил (а): 8 раз
Поблагодарили: 36 раз

Re: Обмен по протоколу DCON

Сообщение Romcheg »

Вы в софте режим порта задайте (его кодировку, а то он по-умолчанию в 7-битной работает), поэтому и 3F идут по всем большим значениям. А вообще - мой совет: если работаете с портом в C#, то отправляйте и получайте байты, а не строку символов, так более адекватнее получается. Уже сам не раз на этом попадался. :)
SCADA+

Автор темы
Алексей_П
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 07 июн 2013, 14:56
Имя: Прокофьев Алексей Анатольевич
Страна: Россия
город/регион: Новосибирск

Re: Обмен по протоколу DCON

Сообщение Алексей_П »

Ага, спасибо.
Ответить

Вернуться в «Интерфейсы, протоколы, связь»