Тема подключения ПЧ по модбасу уже много раз обсуждалась, есть куча мануалов и описаний, но я решил всё же выложить результаты моих пыток ПЧ по RS485 (Modbus RTU), чтобы всё лежало в одном месте и не забылось со временем.
Итак, решил я подключить свой частотник
Huanyang HY02D223B (3ф, 220 В, 2.2 кВт) по Modbus RTU к MACH3. Преобразователь интерфейсов USB-RS485 прикупил на алиэкспрессе
http://www.aliexpress.com/snapshot/6207227962.html по 66 рублей за штуку.
Драйверов с ними не было, нашёл по ИД оборудования: USB\VID_1A86&PID_7523&REV_0254
- CH341SER.ZIP
- Дрова к преобразователю интерфейсов USB-RS485
- (187.98 КБ) 8839 скачиваний
Выход 'A(D+)' подключаем ко входу 'RS+' частотника, выход 'B(D-)' - ко входу 'RS-' соответственно.
В описании подключения RS485 говорится что на крайние точки подключения нужно ставить терминальные резисторы по 120 Ом, но у меня провод меньше 0,5 метра, поэтому всё работает и так
Настраиваем MACH3 по инструкции (плагин тоже в архиве присутствует).
Если всё закончилось благополучно - в окне считанных параметров будут стоять актуальные значения. В противном случае - будут числа 99.
Далее самое интересное. Т.к. Modbus вообще не был описан в прилагаемой инструкции, а найденный в интернете вариант мануала
содержит крайне скудную информацию (как потом оказалось - вообще не соответствует спецификации протокола Modbus) то пришлось для изучения Modbus пойти другим путём - методом "от обратного". Для этого установил сниффер СОМ-порта - LGComSpy++ v1.0
и включая/выключая шпиндель и изменяя частоту его вращения из MACH3
смотрел что же улетает через СОМ-порт и прилетает обратно с частотника
В итоге сопоставив эти данные с мануалом частотника удалось понять структуру посылки пакета Modbus и какими параметрами можно управлять частотником:
(для просмотра содержимого нажмите на ссылку)**********************************
* Чтение параметров ПЧ *
**********************************
Read function code data
Format:
ADDR 01 LEN FUNC Data
ADDR=0 means no answer
ADDR не равен 0 means a reply from inverter of this address
When inverter reply normal, the format as follows:
ADDR 01 LEN FUNC Data
If DATA is one word, the LEN=3, If DATA is one byte, the LEN=2 .
When inverter has no this function code or reply no effect, the format as follows:
ADDR 81H 01 FUNC
01 01 02 00 00 B9 FC - Чтение значения параметра PD000
01 01 02 00 00 B9 FC - ответ - PD000 = 0
01 01 02 01 00 B8 6C - Чтение значения параметра PD001
01 01 02 01 02 39 AD - ответ - PD001 = 2
01 01 02 02 00 B8 9C - Чтение значения параметра PD002
01 01 02 02 02 39 5D - ответ - PD002 = 2
01 01 02 03 00 B9 0C - Чтение значения параметра PD003
01 01 03 03 01 F4 CC 59 - ответ - 01 F4 [hex] = 500 [dec] -> PD003 = 5,00 Гц
01 01 02 04 00 BB 3C - Чтение значения параметра PD004
01 01 03 04 9C 40 15 7F - ответ - 9C 40 [hex] = 40000 [dec] -> PD004 = 400,00 Гц
**********************************
* Запись параметров ПЧ *
**********************************
Write function code data
Format:
ADDR 02 LEN FUNC Data
ADDR=0 for broadcast, it write to all inverter, but no reply.
ADDR не равен 0, set data and reply from inverter of this address.
When the setting is incorrect or the inverter does not have this function, the format returned is as
follows:
ADDR 81H 01 FUNC
01 02 02 01 01 79 E8 - Запись значения параметра PD001=1
01 02 02 01 01 79 E8 - ответ - PD001=1
************************
* Управление ПЧ *
************************
Control commands
Format:
ADDR 03 LEN CNTR
ADDR=0 for broadcast, it write to all inverter, but no reply
ADDR?0, reply and return.
CNTR
7 6 5 4 3 2 1 0
jogr jogf jog r/f stop rev for run
When the setting is correct it will return to present control status.
Format:ADDR 03 LEN CNST
CNST
7 6 5 4 3 2 1 0
Track start Braking r/f jogging running r/f jog run
When the check is not correct,
ADDR 83H 01 CNST
01 03 01 01 31 88 - Запуск шпинделя (31 88 - CRC) - адрес 257
01 03 01 00 F0 48 - ответ
01 03 01 08 F1 8E - Останов шпинделя (F1 8E - CRC) - адрес 264
01 03 01 01 31 88 - ответ
*****************************
* Чтение статуса ПЧ *
*****************************
Read status value
Format:
ADDR 04 01 CFG
ADDR=0, no reply
ADDR?0, reply.
CFG=0~7, reply single data
0:Set F 1:Out F 2:Out A 3:RoTT
4:DCV 5:ACV 6:Cont 7:Tmp
For example: read agreed frequency
Send:01 04 03 00 CRC
Return:01 04 03 13 88 CRC
In which, 13 88 are data
13 for high order, while 88 for low order.
01 04 01 00 41 89 - Set F - Заданная частота
01 04 03 00 20 8D 29 EB - ответ = 20 8D [hex] = 8333 [dec] -> 83,33 Гц
01 04 01 01 80 49 - Out F _ Выходная частота
01 04 03 01 20 8D 78 2B - ответ = 20 8D [hex] = 8333 [dec] -> 83,33 Гц
01 04 01 02 C0 48 - Out A - Выходной ток
01 04 03 02 00 01 90 4E - ответ = 00 01 [hex] = 0 [dec] -> 0,1 А
01 04 01 03 01 88 - RoTT - Частота вращения
01 04 03 03 13 87 4D 1C - ответ = 13 87 [hex] = 4999 [dec] -> 4999 об/мин
01 04 01 04 40 4A - DCV - Напряжение в звене постоянного тока
01 04 03 04 0B E7 F6 F5 - ответ = 0B E7 [hex] = 3047 [dec] -> 307,7 Вольт
01 04 01 05 81 8A - ACV - Напряжение на выходе
01 04 03 05 02 26 60 F5 - ответ = 02 26 [hex] = 550 [dec] -> 55,0 Вольт
01 04 01 06 C1 8B - Cont - Counter - Счетчик (видимо - состояние счетчика из параметра PD065)
01 04 03 06 00 00 10 4F - ответ = 00 00 [hex] = 0 [dec] -> 0
01 04 01 07 00 4B - Tmp - Температура
01 04 03 07 00 00 41 8F - ответ = 00 00 [hex] = 0 [dec] -> 0
*****************************************
* Запись задания частоты ПЧ *
*****************************************
В мануале не расписана запись задания частоты ПЧ, поэтому разберём просто на примерах.
Здесь структура похожая:
АДРЕС_ПЧ=01 №_ФУНКЦИИ=05 ДЛИНА=03 (т.к. записываем слово: WORD=2 BYTE) ЗАДАНИЕ_ЧАСТОТЫ [hex] ПУСТОЙ_3-й_БАЙТ=00 CRC
01 05 03 20 8D 00 A9 14 - Скорость шпинделя 5000 об/мин = 83,33 Гц (A9 14 - CRC) - 20 8D -> 8333
01 05 02 20 8D 61 69 - ответ
В принципе, можно указать длину = 02, ничего не изменится, только запись сократится:
01 05 02 20 8D 61 69 - Скорость шпинделя 5000 об/мин = 83,33 Гц (A9 14 - CRC) - 20 8D -> 8333
01 05 02 20 8D 61 69 - ответ
01 05 03 41 1A 00 96 FA - Скорость шпинделя 10000 об/мин = 166.6 Гц (96 FA - CRC) - 41 1A -> 16666
01 05 02 41 1A 09 57 - ответ
01 05 03 61 A8 00 E3 90 - Скорость шпинделя 15000 об/мин = 250 Гц (E3 90 - CRC) - 61 A8 -> 25000
01 05 02 61 A8 90 E2 - ответ
Далее установил программу Modbus Poll, с помощью которой можно отсылать и принимать пакеты Modbus, и , что немаловажно, она сама считает код CRC:
Софтина триальная и рвёт соединение каждые 10 минут, но для экспериментов этого достаточно.
В итоге получилось считывать параметры ПЧ; изменять их; управлять включением/выключением шпинделя; задавать частоту; считывать статусную информацию.
Сделано это всё было в основном для изучения протокола Modbus, т.к. есть интерес к данной области и возможная халтура

, ну и для диагностики Modbus это всё мне очень пригодится, "я так думаю" (с)