Изменения документа Управление шпинделем по Modbus на примере Toshiba VF-S11 и платы расширения PLCM-B1-G2
Редактировал(а) Edgar Allan Poe 2024/02/29 12:05
От версии 1.1
отредактировано abolgov
на 2020/01/27 16:36
на 2020/01/27 16:36
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (3 изменено, 0 добавлено, 0 удалено)
-
Вложения (0 изменено, 5 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Родительский документ
-
... ... @@ -1,0 +1,1 @@ 1 +Руководство пользователя.Modbus.WebHome - Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.a bolgov1 +XWiki.Knetyaga - Содержимое
-
... ... @@ -1,158 +1,66 @@ 1 -Для управления шпинделем по Modbus через плату расширения 1 +Для управления шпинделем по Modbus через плату расширения PLCM-B1-G2 Вам понадобится частотный преобразователь (далее ЧП) с поддержкой управления по Modbus RTU, например Toshiba VF-S11. 2 2 3 3 Порядок настройки управления шпинделем по Modbus следующий: 4 4 5 -1. Настроить ЧП на режим управления по протоколу Modbus 5 +1. Настроить ЧП на режим управления по протоколу Modbus RTU (RS-485) и запомнить настройки COM-порта в ЧП (количество бит в секунду, биты данных, четность и стоповые биты). 6 6 7 7 Пример для Toshiba VF-S11. 8 8 9 -(% class="wrapped" %) 10 -|=((( 11 -Код функции 12 -)))|=((( 13 -Значение 14 -)))|=((( 15 -Описание 16 -))) 17 -|((( 18 -F800 19 -)))|((( 20 -3 21 -)))|((( 22 -Скорость передачи данных: 9600 бит/с 23 -))) 24 -|((( 25 -F801 26 -)))|((( 27 -1 28 -)))|((( 29 -Проверка на чётность включена 30 -))) 31 -|(% colspan="1" %)(% colspan="1" %) 32 -((( 33 -F802 34 -)))|(% colspan="1" %)(% colspan="1" %) 35 -((( 36 -1 37 -)))|(% colspan="1" %)(% colspan="1" %) 38 -((( 39 -Номер устройства на шине 40 -))) 41 -|(% colspan="1" %)(% colspan="1" %) 42 -((( 43 -F829 44 -)))|(% colspan="1" %)(% colspan="1" %) 45 -((( 46 -1 47 -)))|(% colspan="1" %)(% colspan="1" %) 48 -((( 49 -Протокол связи: Modbus RTU 50 -))) 9 +|=(% style="text-align: center; width: 150px;" %)Код функции|=(% style="text-align: center; width: 100px;" %)Значение|=(% style="text-align:center" %)Описание 10 +|(% style="width:150px" %)F800|(% style="width:100px" %)3|Скорость передачи данных: 9600 бит/с 11 +|(% style="width:150px" %)F801|(% style="width:100px" %)1|Проверка на чётность включена 12 +|(% style="width:150px" %)F802|(% style="width:100px" %)1|Номер устройства на шине 13 +|(% style="width:150px" %)F829|(% style="width:100px" %)1|Протокол связи: Modbus RTU 51 51 52 52 (% style="margin-left: 30.0px;" %) 53 -2. Подключить ЧП к 16 +2. Подключить ЧП к плате расширения PLCM-B1-G2 по интерфейсу RS-485. 54 54 55 55 (% style="margin-left: 30.0px;" %) 56 -3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft||shape="rect"]]" или активировать пробный период для данной опции в меню "Конфигурация → Менеджер лицензий → Общие опции". 19 +3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft||shape="rect"]]" или активировать пробный период для данной опции в меню "Конфигурация" → "Менеджер лицензий" → "Общие опции". 57 57 58 58 (% style="margin-left: 30.0px;" %) 59 -4. Включить и настроить Modbus в меню "Конфигурация → Настройка Modbus". 22 +4. Включить и настроить Modbus в меню "Конфигурация" → "Настройка Modbus". 60 60 61 61 Создайте нового Modbus-мастера. Номер COM-порта - PLCM. Остальные настройки должны быть в точности такими же, как в ЧП (на скриншоте пример стандартной настройки COM-порта Toshiba VF-S11). 62 62 63 -[[image:attach:master_plcm.png]] 26 +(% style="text-align: center;" %) 27 +[[image:attach:master_plcm.png||data-xwiki-image-style-alignment="center" height="300" width="366"]] 64 64 65 -Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для 29 +Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**. 66 66 67 67 Рекомендуем использовать именно эти названия, так как в дальнейшем к регистрам будет обращение из фоновых операций по их именам. 68 68 69 -|=((( 70 -Название 71 -)))|=((( 72 -Мастер 73 -)))|=((( 74 -Адрес на шине 75 -)))|=((( 76 -Номер регистра 77 -)))|=((( 78 -Тип регистра 79 -))) 80 -|((( 81 -SpindleMode 82 -)))|((( 83 -PLCM 84 -)))|((( 85 -1 86 -)))|((( 87 -64000 88 -)))|((( 89 -Output 90 -))) 91 -|((( 92 -SpindleRPM 93 -)))|((( 94 -PLCM 95 -)))|((( 96 -1 97 -)))|((( 98 -64001 99 -)))|((( 100 -Output 101 -))) 102 -|((( 103 -SpindleStatus 104 -)))|((( 105 -PLCM 106 -)))|((( 107 -1 108 -)))|((( 109 -64769 110 -)))|((( 111 -Input 112 -))) 33 +(% class="non-break" %) 34 +|=(% style="text-align:center" %)Название|=(% style="text-align:center" %)Мастер|=(% style="text-align:center" %)Адрес на шине|=(% style="text-align:center" %)Номер регистра|=(% style="text-align:center" %)Тип регистра 35 +|SpindleMode|PLCM|1|64000|Output 36 +|SpindleRPM|PLCM|1|64001|Output 37 +|SpindleStatus|PLCM|1|64769|Input 113 113 114 -\\ 115 - 116 -{{tip}} 39 +{{success}} 117 117 Номера регистров необходимо задавать в виде десятеричных значений. 118 -{{/ tip}}41 +{{/success}} 119 119 120 -(% class="auto-cursor-target" %) 121 -\\ 122 - 123 -{{note}} 43 +{{warning}} 124 124 В инструкции на частотный преобразователь данные значения могут быть указаны в HEX (шестнадцатеричном виде), например, 0x1001, 0x1002. 125 -{{/n ote}}45 +{{/warning}} 126 126 127 127 (% style="margin-left: 30.0px;" %) 128 -5. Создать новую фоновую операцию (макрос) в папке %userprofile%\localsettings\applicationdata\purelogic\pumotix\server\macros\background48 +5. Создать новую фоновую операцию (макрос) через [[окно управления макросами>>doc:Руководство пользователя.Описание M-кодов.Управление макросами и фоновыми операциями.WebHome]]. 129 129 130 -Данный путь можно скопировать в буфер обмена и вставить в адресную строку проводника Windows. 131 - 132 -Еще один способ попасть в рабочий каталог PUMOTIX: "меню Пуск → Программы → PUMOTIX → Working directory → server → macros → background" 133 - 134 -{{tip}} 135 -Если папки background не существует, то нужно создать ее в папке macros. 136 -{{/tip}} 137 - 138 138 Основная задача фонового макроса - отслеживать текущее состояние и обороты шпинделя и отправлять значения в частотный преобразователь по Modbus. 139 139 140 -Пример фонового макроса сохранить в каталогbackground.52 +Пример [[фонового макроса>>doc:Руководство пользователя.Описание фоновых операций.Создание фоновой операции.WebHome]] **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно добавить в список фоновых операций. 141 141 142 -[[attach:modbus_spindle.bm]] 54 +**[[Скачать фоновую операцию>>attach:modbus_spindle.bm]]** 143 143 144 -{{n ote}}56 +{{warning}} 145 145 Обращение к регистрам Modbus из макросов осуществляется по имени Modbus-регистра с учетом регистра! Например, **SpindleRPM** и **SpindleRpm** - это разные регистры. 146 -{{/n ote}}58 +{{/warning}} 147 147 148 148 (% style="margin-left: 30.0px;" %) 149 -6. Включить фоновую операцию в меню "Конфигурация → Фоновые операции". Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.61 +6. Включить фоновую операцию. Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции. 150 150 151 -[[image:attach:image2019-11-5_17-8-45.png]] 63 +(% style="text-align: center;" %) 64 +[[image:attach:2021-11-29 14_18_03-Управление макросами.png||data-xwiki-image-style-alignment="center" height="500" width="680"]] 152 152 153 153 Если все настроено правильно, то шпиндель теперь должен включаться и выключаться. При изменении оборотов шпинделя в PUMOTIX они, соответственно, должны изменяться и на ЧП. 154 - 155 -(% class="auto-cursor-target" %) 156 -\\ 157 - 158 -\\
- 2021-11-29 14_18_03-Управление макросами.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +28.5 KB - Содержимое
- Macros_Manager_wndw.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +26.0 KB - Содержимое
- master_plcm.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +9.4 KB - Содержимое
- modbus_master_en.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Knetyaga - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +9.1 KB - Содержимое
- modbus_spindle.bm
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.XWikiGuest - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +1.3 KB - Содержимое
-
... ... @@ -1,0 +1,52 @@ 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 check_mode(value, 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 * 100 + 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 = 49152 -- Stop 31 + if (rpm > 0) then 32 + mode = 50176 -- Forward 33 + elseif (rpm < 0) then 34 + mode = 50688 -- Reverse 35 + end 36 + 37 + return mode 38 +end 39 + 40 +function check_mode(status, rpm) 41 + if (rpm > 0) then 42 + return is_bit_assigned(status, 10) and not is_bit_assigned(status, 9) -- Forward 43 + elseif (rpm < 0) then 44 + return is_bit_assigned(status, 10) and is_bit_assigned(status, 9) -- Reverse 45 + else 46 + return not is_bit_assigned(status, 10) -- Stop 47 + end 48 +end 49 + 50 +function is_bit_assigned(value, index) 51 + return value & (1 << index) ~= 0 52 +end