Изменения документа Управление шпинделем по Modbus на примере Sunfar E550 и платы расширения PLCM-B1-G2
Редактировал(а) Edgar Allan Poe 2024/04/23 14:11
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
-
Вложения (0 изменено, 4 добавлено, 0 удалено)
-
Объекты (0 изменено, 2 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,0 +1,63 @@ 1 +Для управления шпинделем по Modbus через плату расширения PLCM-B1-G2 Вам понадобится частотный преобразователь (далее ЧП) с поддержкой управления по Modbus RTU, например Sunfar E500. 2 + 3 +Порядок настройки управления шпинделем по Modbus следующий: 4 + 5 +1. Настроить ЧП на режим управления по протоколу Modbus RTU (RS-485) и запомнить настройки COM-порта в ЧП (количество бит в секунду, биты данных, четность и стоповые биты). 6 + 7 +Пример для Sunfar E500. 8 + 9 +|=((( 10 +Код функции 11 +)))|=((( 12 +Значение 13 +)))|=((( 14 +Описание 15 +))) 16 +|F0.00 |2|Источник задания частоты - внешняя передача данных 17 +|F0.02|0002|Выбор канала команды запуска - последовательный порт передачи данных 18 +|(% colspan="1" %)F4.00|(% colspan="1" %)0114|(% colspan="1" %)Настройка передачи данных - выбор скорости: 9600 бит/с, проверка на чётность, протокол передачи данных Modbus 19 + 20 +2. Подключить ЧП к плате расширения PLCM-B1-G2 по интерфейсу RS-485. 21 + 22 +3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft]]" или активировать пробный период для данной опции в меню "Конфигурация" → "Менеджер лицензий" → "Общие опции". 23 + 24 +4. Включить и настроить Modbus в меню "Конфигурация" → "Настройка Modbus". 25 + 26 +Создайте нового Modbus-мастера. Номер COM-порта - PLCM. Остальные настройки должны быть в точности такими же, как в ЧП (на скриншоте пример стандартной настройки COM-порта Sunfar E500). 27 + 28 +(% style="text-align:center" %) 29 +[[image:master_plcm.png||height="300" width="366"]] 30 + 31 +Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Sunfar E500 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**. 32 + 33 +Рекомендуем использовать именно эти названия, так как в дальнейшем к регистрам будет обращение из фоновых операций по их именам. 34 + 35 +(% style="text-align:center" %) 36 +[[image:registers_plcm.png||height="350" width="787"]] 37 + 38 +{{success}} 39 +Номера регистров необходимо задавать в виде десятеричных значений. 40 +{{/success}} 41 + 42 +{{warning}} 43 +В инструкции на частотный преобразователь данные значения могут быть указаны в HEX (шестнадцатеричном виде), например, 0x1001, 0x1002. 44 +{{/warning}} 45 + 46 +5. Создать новую фоновую операцию (макрос) через [[окно управления макросами>>doc:Руководство пользователя.Описание M-кодов.Управление макросами и фоновыми операциями.WebHome]]. 47 + 48 +Основная задача фонового макроса - отслеживать текущее состояние и обороты шпинделя и отправлять значения в частотный преобразователь по Modbus. 49 + 50 +Пример [[фонового макроса>>doc:Руководство пользователя.Описание фоновых операций.Создание фоновой операции.WebHome]] **modbus_spindle.bm** для управления шпинделем по ModBus размещен во вложении. Данный файл нужно добавить в список фоновых операций. 51 + 52 +**[[Скачать фоновый макрос>>attach:modbus_spindle (1).bm]]** 53 + 54 +{{warning}} 55 +Обращение к регистрам Modbus из макросов осуществляется по имени Modbus-регистра с учетом регистра! Например, **SpindleRPM** и **SpindleRpm** - это разные регистры. 56 +{{/warning}} 57 + 58 +6. Включить фоновую операцию. Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции. 59 + 60 +(% style="text-align:center" %) 61 +[[image:2021-11-29 14_18_03-Управление макросами.png||height="500" width="680"]] 62 + 63 +Если все настроено правильно, то шпиндель теперь должен включаться и выключаться. При изменении оборотов шпинделя в PUMOTIX они, соответственно, должны изменяться и на ЧП.
- 2021-11-29 14_18_03-Управление макросами.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +28.5 KB - Содержимое
- master_plcm.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +9.4 KB - Содержимое
- modbus_spindle (1).bm
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +933 bytes - Содержимое
-
... ... @@ -1,0 +1,38 @@ 1 +function handle() 2 + local desired_rpm = GetCurSpindleRPM() 3 + if (not IsRealDeviceConnected()) then 4 + desired_rpm = 0 5 + end 6 + 7 + local value, is_online = ReadModbusRegisterUpdated("SpindleStatus") 8 + Sleep(30) 9 + local mode_updated = is_online and (value == get_mode(desired_rpm)) 10 + 11 + if (prev_rpm == nil or prev_rpm ~= desired_rpm or not mode_updated) then 12 + if (send_spindle_control_command(desired_rpm)) then 13 + prev_rpm = desired_rpm 14 + end 15 + end 16 +end 17 + 18 +function send_spindle_control_command(rpm) 19 + local mode = get_mode(rpm) 20 + 21 + local Hz = math.floor(math.abs(rpm) / 60 * 10 + 0.5) 22 + 23 + local success_1 = WriteModbusRegister("SpindleMode", mode) 24 + Sleep(30) 25 + local success_2 = WriteModbusRegister("SpindleRPM", Hz) 26 + return success_1 and success_2 27 +end 28 + 29 +function get_mode(rpm) 30 + local mode = 3 -- Stop 31 + if (rpm > 0) then 32 + mode = 1 -- Forward 33 + elseif (rpm < 0) then 34 + mode = 2 -- Reverse 35 + end 36 + 37 + return mode 38 +end
- registers_plcm.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +40.2 KB - Содержимое
- XWiki.XWikiRights[0]
-
- Разрешить/Запретить
-
... ... @@ -1,0 +1,1 @@ 1 +Разрешить - Группы
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiAdminGroup - Уровни
-
... ... @@ -1,0 +1,1 @@ 1 +view
- XWiki.XWikiRights[2]
-
- Разрешить/Запретить
-
... ... @@ -1,0 +1,1 @@ 1 +Запретить - Группы
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiAllGroup - Уровни
-
... ... @@ -1,0 +1,1 @@ 1 +view