Доброго времени суток.
Возникла необходимость управлять частотным преобразователем по RS485. Марка Prostar PR6000, он же pr6100, он же CTA-C2.
Смотрю документацию, но никак не разберусь, какие байты и за что отвечают. Хотя в ней написано что это протокол Modbus RTU.
Например команда "Прямой пуск преобразователя" 2D 01 FF 0F 00 00 17 10 00 00 DB (всего 22байта).
Если я правильно понимаю, то согласно инструкции: 2D(заголовок блока данных 1 байт) 01(адрес slave устройства)
FF(управление константой) 0F(значение константы) 00(управление) 00(значение задания),
а вот с этого места непонятно, это контрольная сумма 17 10 00 00 ? И с 2D не все ясно куда его ставить. и где номер функции?
Описание для rs485:
Нашел информацию, что частотник откликается на эти запросы:
01 10 20 00 00 02 04 00 12 13 88 CRC16 FWD 50.00 - "Прямой пуск преобразователя" почему-то отличается от мануала.
01 10 20 00 00 02 04 00 22 13 88 CRC16 REV 50.00
01 10 20 00 00 02 04 00 01 00 00 CRC16 STOP 00.00
01 03 20 01 00 01 CRC16 Запросить частоту
01 03 02 13 88 CRC16 Ответ #1388 = 50.00
Но не указано какой программой формировали эти посылки запросов.
Пробовал делать запрос при помощи COMPump, чп не реагирует на них.
Обычно в мануалах на приборы с которыми я работал, этот протокол выглядит совсем по другому.
Например - запрос от мастера к слейву состоит из 8-ми байт. Пример: 01 05 00 00 FF 00 8C 3A.
Где 01(адрес прибора - 1байт); 05(функция - 1байт); 00 00(номер реле - 2 байта); FF 00(состояние - 2 байта);
8C 3A(контрольная сумма - 2 байта). И всегда прилагается карта регистров с их адресами.
Подскажите может кто-то сможет расшифровать этот ребус.
Или может программа типа сканера какая нибудь есть чтобы методом перебора вычислить адреса регистров.
Нестандартный протокол Modbus RTU
- Реклама
Re: Нестандартный протокол Modbus RTU
Fireforce, mosbus можно считать стандартом только когда связываются устройства одного изготовителя, а почти во всех остальных случаях кто во что горазд. Вполне возможно, что это делается намеренно. Поэтому, увы, приходится прибегать к методу научного тыка.
Я в таких случаях пользуюсь программкой TerringModbus Tools.Fireforce писал(а):Нашел информацию, что частотник откликается на эти запросы:
01 10 20 00 00 02 04 00 12 13 88 CRC16 FWD 50.00
.....
Но не указано какой программой формировали эти посылки запросов.
Re: Нестандартный протокол Modbus RTU
ART_ME - спасибо за подсказку насчет TerringModbus Tools. Кстати по этому поисковому запросу нашел еше много полезной для себя информации.Я в таких случаях пользуюсь программкой TerringModbus Tools.
И еще по протоколу. Возможно этот протокол китайцы выдернули от сименсовского частотника sinamics v20. Карта регистров показана в этом видео на 5мин.25сек.
А в инструкции, которую я находил на sinamics v20, где должны быть адреса регистров просто пустые колонки. И на сайте где продают Prostar преобразователи,
в тех.характеристиках указано: "RS-485 встроенный (закрытый протокол)".
Еще нашел брошуру от Siemens MICROMASTER 420. Вот там есть полное описание абревеатур STX, LGE.. подробно на русском - стр 114, но это не ModBus RTU,
а протокол USS. В нем как раз и адресация до 31 устройства в сети - максимум. Все как на картинке в инструкции, что мне техподдержка прислала.
Похоже наши взяли китайский частотник, или просто готовые блоки и слепили его, потом выдернули куски из разных руководств, видимо ничего другого не было.
Или же там действительно какой-нибудь микс из ModBus и USS. Перевели на ломаный русский, да еще и с ошибками. Написано "PKE состоит из 16 байт", а надо бит.
В мануале от Siemens-са пишется так: "Часть PKW состоит из PKE (1-слово)".
Думаю если такую инструкцию техподдержка прислала, то еще неизвестно что замутили китайцы в контроллер этого частотника.
С моим ч.п. еще шла книжка на английском, там уже ближе к истине, и функция 10-я описывалась и вначале сообщения пауза в 10мс,
на C++ кусок кода дан для рассчета контрольной суммы.
В общем завтра все буду тестить на работе.
Re: Нестандартный протокол Modbus RTU
Все получилось. ЧП выполняет необходимые команды.
Оказывается контрольную сумму после расчета нужно перевернуть задом на перед.
CRC cчитал с помощью онлайн калькулятора.
Записываем строку 01 10 20 00 00 02 04 00 12 13 88 в поле ввода,
устанавливаем чекбокс на "HEX" и получаем результат CRC-16 (Modbus) 0x3DC7.
Добавляем его в конец строки. Но здесь есть нюанс, - байт C7 нужно поставить перед 3D.
В итоге данные будут представлены в таком виде: 01 10 20 00 00 02 04 00 12 13 88 C7 3D.
Для передачи полученной информации в порт можно воспользоваться программой COMPump.
Помещаем строку в поле ввода данных. Нажимаем "Запись", и вуаля частотник запустился на частоте 50 Гц.
P.S. Для работы через RS485 порт ЧП необходимо сконфигурировать.
В соответствии с документацией устанавливаем параметры:
P0.01 - 3 (Источник задания частоты);
P0.04 - 2 (Управление работой преобразователя);
P8.00 - 1 (Локальный адрес) или тот который вам необходим;
P8.01 - 003 (Конфигурация соединения) ,можно и с проверкой четности 013 - тоже работает).
Остальные значения параметров по умолчанию.
Оказывается контрольную сумму после расчета нужно перевернуть задом на перед.
CRC cчитал с помощью онлайн калькулятора.
Записываем строку 01 10 20 00 00 02 04 00 12 13 88 в поле ввода,
устанавливаем чекбокс на "HEX" и получаем результат CRC-16 (Modbus) 0x3DC7.
Добавляем его в конец строки. Но здесь есть нюанс, - байт C7 нужно поставить перед 3D.
В итоге данные будут представлены в таком виде: 01 10 20 00 00 02 04 00 12 13 88 C7 3D.
Для передачи полученной информации в порт можно воспользоваться программой COMPump.
Помещаем строку в поле ввода данных. Нажимаем "Запись", и вуаля частотник запустился на частоте 50 Гц.
P.S. Для работы через RS485 порт ЧП необходимо сконфигурировать.
В соответствии с документацией устанавливаем параметры:
P0.01 - 3 (Источник задания частоты);
P0.04 - 2 (Управление работой преобразователя);
P8.00 - 1 (Локальный адрес) или тот который вам необходим;
P8.01 - 003 (Конфигурация соединения) ,можно и с проверкой четности 013 - тоже работает).
Остальные значения параметров по умолчанию.

