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

От версии 3.1
отредактировано knetyaga
на 2021/11/29 16:12
Изменить комментарий: К данной версии нет комментариев
К версии 1.1
отредактировано abolgov
на 2020/01/27 16:36
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,0 @@
1 -Modbus
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.knetyaga
1 +XWiki.abolgov
Содержимое
... ... @@ -1,8 +1,8 @@
1 -Для управления шпинделем по Modbus через плату расширения PLCM-B1-G2 Вам понадобится частотный преобразователь (далее ЧП) с поддержкой управления по Modbus RTU, например Toshiba VF-S11.
1 +Для управления шпинделем по Modbus через плату расширения PLCM-B1-G2 Вам понадобится частотный преобразователь (далее ЧП) с поддержкой управления по Modbus RTU, например Toshiba VF-S11.
2 2  
3 3  Порядок настройки управления шпинделем по Modbus следующий:
4 4  
5 -1. Настроить ЧП на режим управления по протоколу Modbus RTU (RS-485) и запомнить настройки COM-порта в ЧП (количество бит в секунду, биты данных, четность и стоповые биты).
5 +1. Настроить ЧП на режим управления по протоколу Modbus RTU (RS-485) и запомнить настройки COM-порта в ЧП (количество бит в секунду, биты данных, четность и стоповые биты).
6 6  
7 7  Пример для Toshiba VF-S11.
8 8  
... ... @@ -50,23 +50,22 @@
50 50  )))
51 51  
52 52  (% style="margin-left: 30.0px;" %)
53 -2. Подключить ЧП к плате расширения PLCM-B1-G2 по интерфейсу RS-485.
53 +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"]]" или активировать пробный период для данной опции в меню "Конфигурация""Менеджер лицензий""Общие опции".
56 +3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft||shape="rect"]]" или активировать пробный период для данной опции в меню "Конфигурация → Менеджер лицензий → Общие опции".
57 57  
58 58  (% style="margin-left: 30.0px;" %)
59 -4. Включить и настроить Modbus в меню "Конфигурация" → "Настройка Modbus".
59 +4. Включить и настроить Modbus в меню "Конфигурация → Настройка Modbus".
60 60  
61 61  Создайте нового Modbus-мастера. Номер COM-порта - PLCM. Остальные настройки должны быть в точности такими же, как в ЧП (на скриншоте пример стандартной настройки COM-порта Toshiba VF-S11).
62 62  
63 63  [[image:attach:master_plcm.png]]
64 64  
65 -Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**.
65 +Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**.
66 66  
67 67  Рекомендуем использовать именно эти названия, так как в дальнейшем к регистрам будет обращение из фоновых операций по их именам.
68 68  
69 -(% class="wrapped" %)
70 70  |=(((
71 71  Название
72 72  )))|=(((
... ... @@ -126,11 +126,19 @@
126 126  {{/note}}
127 127  
128 128  (% style="margin-left: 30.0px;" %)
129 -5. Создать новую фоновую операцию (макрос) через [[окно управления макросами>>doc:Управление макросами и фоновыми операциями]].
128 +5. Создать новую фоновую операцию (макрос) в папке %userprofile%\local settings\application data\purelogic\pumotix\server\macros\background
130 130  
130 +Данный путь можно скопировать в буфер обмена и вставить в адресную строку проводника Windows.
131 +
132 +Еще один способ попасть в рабочий каталог PUMOTIX: "меню Пуск → Программы → PUMOTIX → Working directory → server → macros → background"
133 +
134 +{{tip}}
135 +Если папки background не существует, то нужно создать ее в папке macros.
136 +{{/tip}}
137 +
131 131  Основная задача фонового макроса - отслеживать текущее состояние и обороты шпинделя и отправлять значения в частотный преобразователь по Modbus.
132 132  
133 -Пример фонового макроса **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно добавить в список фоновых операций.
140 +Пример фонового макроса **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно сохранить в каталог background.
134 134  
135 135  [[attach:modbus_spindle.bm]]
136 136  
... ... @@ -139,8 +139,13 @@
139 139  {{/note}}
140 140  
141 141  (% style="margin-left: 30.0px;" %)
142 -6. Включить фоновую операцию. Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.
149 +6. Включить фоновую операцию в меню "Конфигурация → Фоновые операции". Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.
143 143  
144 -[[image:attach:2021-11-29 14_18_03-Управление макросами.png]]
151 +[[image:attach:image2019-11-5_17-8-45.png]]
145 145  
146 146  Если все настроено правильно, то шпиндель теперь должен включаться и выключаться. При изменении оборотов шпинделя в PUMOTIX они, соответственно, должны изменяться и на ЧП.
154 +
155 +(% class="auto-cursor-target" %)
156 +\\
157 +
158 +\\
2021-11-29 14_18_03-Управление макросами.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.XWikiGuest
Размер
... ... @@ -1,1 +1,0 @@
1 -28.5 KB
Содержимое
master_plcm.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.XWikiGuest
Размер
... ... @@ -1,1 +1,0 @@
1 -9.4 KB
Содержимое
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