Страница 6 из 7 ПерваяПервая ... 4567 ПоследняяПоследняя
Показано с 51 по 60 из 62

Тема: Modbus-мастер в Visual Studio (.NET)

  1. #51
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,537

    По умолчанию

    Возможно, читайте РЭ на модуль. Никто не запрещает множественной командой записывать и один регистр.

  2. #52

    По умолчанию

    Спасибо. Действительно, в РЭ запись только группы регистров. И запись командой WriteMultipleRegisters в один регистр тоже работает.

  3. #53

    По умолчанию

    А в библиотекеNModbus есть инструментарий для контроля утери пакетов или их целостности, подсчет контрольных сумм? Или как то своими силами это организовывать? Где об этом есть информация, пусть даже на английском?

  4. #54

    По умолчанию

    Еще есть вопрос. Нужно вывести на экран измеренную температуру с ТРМ 202. Есть два варианта. Int16 со знаком в одном регистре или float32 в двух регистрах. В NModbus числа представлены ushort16. В мануале NModbus есть примеры преобразования ushort - float и наоборот. Пробовал использовать, но ничего правильного так и не получил на экране. Есть ли более понятный способ преобразования ushort - float ?

  5. #55
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,537

    По умолчанию

    Простите, это что за библиотека Modbus на ПК такая, которая не умеет работать с float и так далее?
    Студенты что ли писали? Я могу понять, когда числа с плавающей точкой являются отсебятиной производителя прибора (встречал такое), но чтобы IEEE не понимало, это как бы..... может в мусорку такую библиотеку ?
    И опять же, расчет CRC тоже должен быть, способов расчетов CRC Modbus в сети для C# предостаточно. Хотя собственно их два, табличный и расчетный с полиномом.

  6. #56

    По умолчанию

    До crc пока руки не дошли. А вот с выводом на экран измеренных значений все наладилось. Signed int просто через двойное приведение типов правильно выводится. А float через несколько битовых операций пришел в норму. И в C# еще есть класс BitConverter, внем есть метод как раз для таких преобразований. Так, что все пишется-читается без проблем. Пробовал читать температуру и регистр статуса одновременно с 9 штук трм. Все нормально, правда быстрее чем за100 мс один прибор опросить не получается, программа начинает выбрасывать исключения. Хотя это не очень принципиально.

  7. #57
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,537

    По умолчанию

    Так паузы между запросами должны быть, приборы то не всегда готовы к ответу на запрос. Может по этому и исключения.
    У вас CRC должна сама библиотека формировать, по крайней мере когда вы отправляете запрос, вы же указываете только номер регистра и номер команды чтения, а раз прибор отвечает, значит все нормально. Это вам при ответе надо убедиться, что ответ пришел полным и не искаженным. Опять же, возможно библиотека и это проверяет и выставляет флаг.

    Вариаций может быть масса, типа
    bool read = Читаем то-то, out error; и если read = true то ответ корректный, если false то смотрим что там за ошибка.

    Это пример, не знаю, как там в бибке этой все устроено. А может надо самостоятельно CRC проверять получив ответ...

  8. #58

    По умолчанию

    Подниму тему. Я пытаюсь считать по modbus TCP c пр200. C#? ,библиотека Nmodbus4. Считываю через конвертор ER-108. Но это не суть. Я готовой программой все считываю. То есть сеть рабочая. В конверторе есть отладкаи вот там мне выдается
    1. Рабочий вариант, готовой программой
    1:05:47 RS485 PORT1 CONNECTION ACCEPTED 192.168.88.2 PORT 59132
    1:05:47 RS485 PORT1 DATA RECEIVED, LEN=8
    0x10 0x03 0x02 0x00 0x00 0x03
    2. Нерабочий - моя недоделка
    0:57:00 RS485 PORT1 CONNECTION ACCEPTED 192.168.88.2 PORT 52620
    0:57:00 RS485 PORT1 DATA RECEIVED, LEN=12
    0x00 0x01 0x00 0x00 0x00 0x06 0x10 0x04 0x02 0x00 0x00 0x01
    Получается какие то непонятные данные приходят на запрос вначале. А с этих 0x10 вроде похожая посылка. Адрес 16, функциями и 03 и 04 все читается готовой прогой.... Не подскажите куда копнуть... Я пока попробую другие библиотеки попробовать. Потому как, вот qModMaster - тоже отказывается читать, хотя соединяется... А прога, которая все читает AVReporter Modbus Communication Tester.

  9. #59

    По умолчанию

    Вот, кстати, догадался и проверил посылку посылку от qModMaster
    Такая же, как и у меня длинная
    0:01:21 RS485 PORT1 DATA RECEIVED, LEN=12
    0x00 0x14 0x00 0x00 0x00 0x06 0x10 0x04 0x02 0x00 0x00 0x01
    ?????

  10. #60
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    7,381

    По умолчанию

    Считываю через конвертор ER-108. Но это не суть.
    Cуть как раз в этом. Ваш прибор - это конвертер интерфейсов, он передает пакет, полученный по TCP, в COM-порт без каких-либо преобразований.
    "Готовая программа" отправляет по TCP кадр протокола Modbus RTU (обычно это называют Modbus RTU over TCP) - т.е. ПР200 в итоге получает фрейм Modbus RTU и корректно его обрабатывает.
    Вы же с помощью Nmodbus4 отправляете по TCP кадр протокола Modbus TCP (с MBAP Header и без CRC) - и когда ПР200 получает фрейм Modbus TCP, то, естественно, считает его невалидным.
    Вам надо разобраться, как с помощью вашей библиотеки отправлять по TCP фреймы протокола Modbus RTU.

Страница 6 из 7 ПерваяПервая ... 4567 ПоследняяПоследняя

Похожие темы

  1. Помогите с ActiveX в Microsoft Visual Studio 2005
    от Alex_31 в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 06.10.2013, 09:55
  2. ModBUS TCP ПЛК100(мастер) и Lectus(слейв)
    от GSK в разделе Сетевые технологии
    Ответов: 4
    Последнее сообщение: 14.09.2012, 11:35
  3. Modbus Universal MasterOPC Server и ПЛК мастер
    от smk1635 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 13.09.2011, 22:22
  4. СМИ1, modbus-rtu, мастер. Команда 4. КАК?
    от Matysik в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 26.05.2011, 15:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •