Редактировал(а) Edgar Allan Poe 2024/02/29 12:05

От версии 14.1
отредактировано writer
на 2023/01/27 12:02
Изменить комментарий: К данной версии нет комментариев
К версии 18.1
отредактировано writer
на 2023/06/06 15:21
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -24,12 +24,13 @@
24 24  Создайте нового Modbus-мастера. Номер COM-порта - PLCM. Остальные настройки должны быть в точности такими же, как в ЧП (на скриншоте пример стандартной настройки COM-порта Toshiba VF-S11).
25 25  
26 26  (% style="text-align: center;" %)
27 -[[image:attach:master_plcm.png||data-xwiki-image-style-alignment="center" height="300" width="366"]]
27 +[[image:/xwiki/bin/download/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/Modbus/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%88%D0%BF%D0%B8%D0%BD%D0%B4%D0%B5%D0%BB%D0%B5%D0%BC%20%D0%BF%D0%BE%20Modbus%20%D0%BD%D0%B0%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5%20Toshiba%20VF-S11%20%D0%B8%20%D0%BF%D0%BB%D0%B0%D1%82%D1%8B%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20PLCM-B1-G2/WebHome/master_plcm.png?width=366&height=300&rev=1.2||alt="master_plcm.png" data-xwiki-image-style-alignment="center" height="300" width="366"]]
28 28  
29 29  Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**.
30 30  
31 31  Рекомендуем использовать именно эти названия, так как в дальнейшем к регистрам будет обращение из фоновых операций по их именам.
32 32  
33 +(% class="non-break" %)
33 33  |=(% style="text-align:center" %)Название|=(% style="text-align:center" %)Мастер|=(% style="text-align:center" %)Адрес на шине|=(% style="text-align:center" %)Номер регистра|=(% style="text-align:center" %)Тип регистра
34 34  |SpindleMode|PLCM|1|64000|Output
35 35  |SpindleRPM|PLCM|1|64001|Output
... ... @@ -50,7 +50,7 @@
50 50  
51 51  Пример [[фонового макроса>>doc:Руководство пользователя.Описание фоновых операций.Создание фоновой операции.WebHome]] **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно добавить в список фоновых операций.
52 52  
53 -**[[Скачать фоновую операцию>>attach:modbus_spindle.bm]]**
54 +**[[Скачать фоновую операцию>>attach:modbus_spindle.zip]]**
54 54  
55 55  {{warning}}
56 56  Обращение к регистрам Modbus из макросов осуществляется по имени Modbus-регистра с учетом регистра! Например, **SpindleRPM** и **SpindleRpm** - это разные регистры.
... ... @@ -60,6 +60,6 @@
60 60  6. Включить фоновую операцию. Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.
61 61  
62 62  (% style="text-align: center;" %)
63 -[[image:attach:2021-11-29 14_18_03-Управление макросами.png||data-xwiki-image-style-alignment="center" height="500" width="680"]]
64 +[[image:/xwiki/bin/download/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/Modbus/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%88%D0%BF%D0%B8%D0%BD%D0%B4%D0%B5%D0%BB%D0%B5%D0%BC%20%D0%BF%D0%BE%20Modbus%20%D0%BD%D0%B0%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5%20Toshiba%20VF-S11%20%D0%B8%20%D0%BF%D0%BB%D0%B0%D1%82%D1%8B%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20PLCM-B1-G2/WebHome/2021-11-29%2014_18_03-%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D0%B0%D0%BC%D0%B8.png?width=680&height=500&rev=2.2||alt="2021-11-29 14_18_03-Управление макросами.png" data-xwiki-image-style-alignment="center" height="500" width="680"]]
64 64  
65 65  Если все настроено правильно, то шпиндель теперь должен включаться и выключаться. При изменении оборотов шпинделя в PUMOTIX они, соответственно, должны изменяться и на ЧП.
modbus_spindle.bm
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.XWikiGuest
Размер
... ... @@ -1,1 +1,0 @@
1 -1.3 KB
Содержимое
... ... @@ -1,52 +1,0 @@
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
modbus_spindle.zip
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Knetyaga
Размер
... ... @@ -1,0 +1,1 @@
1 +672 bytes
Содержимое