Автор Тема: Контроллер SMSD-1.5Modbus  (Прочитано 654 раз)

moto

  • Новичок
  • *
Контроллер SMSD-1.5Modbus
« : 27 Декабря 2019, 12:17:10 »
Здравствуйте!

Хотел бы узнать как установить связь с контроллером и как правильно отправлять запросы? Пробую средствами C#, компонент SerialPort:
Скорость передачи данных - 19200
Проверка чѐтности - Even
Число стоповых битов - 1
Число битов данных - 8

Отправляю запрос: 01 01 22 19 00 44 + CRC (если я правильно понял это запрос на чтение значения часа)
Ответ не приходит, на контроллере не загорается индикатор USB.
Программа SMC_Program_Modbus общается с контроллером и с её помощью можно управлять шаговым двигателем.

Если не сложно приведите для примера запрос на чтение реального времени и его установки.

Administrator

  • Администратор
  • Ветеран
  • *****
Re: Контроллер SMSD-1.5Modbus
« Ответ #1 : 28 Декабря 2019, 14:16:28 »
0x2219 - это код функции TRD (Чтение текущего значения часов реального времени), а не номер регистра, в котором хранится это значение.

Вам нужны следующие регистры:
0x8110 - секунды
0x8111 - минуты
0x8112 - часы

и т.д. - смотрите сводную таблицу описания регистров.

Кроме того, очевидно, что указано неверное количество регистров для чтения -  Вы указываете чтение 0x44 регистров  - вероятно, ошибка.

Даже при посылке предложенного запроса ( 01 01 22 19 00 44 7F) контроллер отвечает с указанием кода ошибки (01 81 02 7C - недопустимый адрес, т.к. адрес 0x2219 не предназначен для считывания по Modbus). Т.е. в первую очередь Вам необходимо в Вашей программе проверить функцию чтения из порта.

Пример чтения регистра 0x8110 (секунды) - 01 03 81 10 00 01 6A
Пример ответа: 01 03 02 00 0A F0

clive

  • Новичок
  • *
Re: Контроллер SMSD-1.5Modbus
« Ответ #2 : 16 Января 2020, 13:53:47 »
Здравствуйте!

Хотел бы узнать как установить связь с контроллером и как правильно отправлять запросы? Пробую средствами C#, компонент SerialPort:
Скорость передачи данных - 19200
Проверка чѐтности - Even
Число стоповых битов - 1
Число битов данных - 8

Отправляю запрос: 01 01 22 19 00 44 + CRC (если я правильно понял это запрос на чтение значения часа)
Ответ не приходит, на контроллере не загорается индикатор USB.
Программа SMC_Program_Modbus общается с контроллером и с её помощью можно управлять шаговым двигателем.

Если не сложно приведите для примера запрос на чтение реального времени и его установки.

Дополнительное программное обеспечение SMSD Controller Demonstrator идёт с открытым исходным кодом, в его составе есть ModbusMaster.DLL. В ней есть всё необходимое для отправки запросов, используйте статическое связывание (есть h- и lib-файлы), или динамическое. Так же потребуется comport.dll для работы ModbusMaster.DLL.