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

От версии 13.1
отредактировано writer
на 2023/01/27 12:01
Изменить комментарий: К данной версии нет комментариев
К версии 2.1
отредактировано abolgov
на 2020/01/27 16:36
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,0 @@
1 -Руководство пользователя.Modbus.WebHome
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.Knetyaga
1 +XWiki.abolgov
Содержимое
... ... @@ -1,65 +1,158 @@
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  
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
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 +)))
14 14  
15 15  (% style="margin-left: 30.0px;" %)
16 -2. Подключить ЧП к плате расширения PLCM-B1-G2 по интерфейсу RS-485.
53 +2. Подключить ЧП к плате расширения PLCM-B1-G2 по интерфейсу RS-485.
17 17  
18 18  (% style="margin-left: 30.0px;" %)
19 -3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft||shape="rect"]]" или активировать пробный период для данной опции в меню "Конфигурация""Менеджер лицензий""Общие опции".
56 +3. Приобрести опцию "[[Работа по протоколу MODBUS>>url:http://pumotix.ru/#soft||shape="rect"]]" или активировать пробный период для данной опции в меню "Конфигурация → Менеджер лицензий → Общие опции".
20 20  
21 21  (% style="margin-left: 30.0px;" %)
22 -4. Включить и настроить Modbus в меню "Конфигурация" → "Настройка Modbus".
59 +4. Включить и настроить Modbus в меню "Конфигурация → Настройка Modbus".
23 23  
24 24  Создайте нового Modbus-мастера. Номер COM-порта - PLCM. Остальные настройки должны быть в точности такими же, как в ЧП (на скриншоте пример стандартной настройки COM-порта Toshiba VF-S11).
25 25  
26 -(% style="text-align: center;" %)
27 -[[image:attach:master_plcm.png||data-xwiki-image-style-alignment="center" height="300" width="366"]]
63 +[[image:attach:master_plcm.png]]
28 28  
29 -Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**.
65 +Для управления ЧП и считывания статусов с ЧП необходимо добавить регистры. Например, для Toshiba VF-S11 необходимо настроить регистры с именами **SpindleMode**, **SpindleRPM** и **SpindleStatus**.
30 30  
31 31  Рекомендуем использовать именно эти названия, так как в дальнейшем к регистрам будет обращение из фоновых операций по их именам.
32 32  
33 -|=(% style="text-align:center" %)Название|=(% style="text-align:center" %)Мастер|=(% style="text-align:center" %)Адрес на шине|=(% style="text-align:center" %)Номер регистра|=(% style="text-align:center" %)Тип регистра
34 -|SpindleMode|PLCM|1|64000|Output
35 -|SpindleRPM|PLCM|1|64001|Output
36 -|SpindleStatus|PLCM|1|64769|Input
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 +)))
37 37  
38 -{{success}}
114 +\\
115 +
116 +{{tip}}
39 39  Номера регистров необходимо задавать в виде десятеричных значений.
40 -{{/success}}
118 +{{/tip}}
41 41  
42 -{{warning}}
120 +(% class="auto-cursor-target" %)
121 +\\
122 +
123 +{{note}}
43 43  В инструкции на частотный преобразователь данные значения могут быть указаны в HEX (шестнадцатеричном виде), например, 0x1001, 0x1002.
44 -{{/warning}}
125 +{{/note}}
45 45  
46 46  (% style="margin-left: 30.0px;" %)
47 -5. Создать новую фоновую операцию (макрос) через [[окно управления макросами>>doc:Руководство пользователя.Описание M-кодов.Управление макросами и фоновыми операциями.WebHome]].
128 +5. Создать новую фоновую операцию (макрос) в папке %userprofile%\local settings\application data\purelogic\pumotix\server\macros\background
48 48  
130 +Данный путь можно скопировать в буфер обмена и вставить в адресную строку проводника Windows.
131 +
132 +Еще один способ попасть в рабочий каталог PUMOTIX: "меню Пуск → Программы → PUMOTIX → Working directory → server → macros → background"
133 +
134 +{{tip}}
135 +Если папки background не существует, то нужно создать ее в папке macros.
136 +{{/tip}}
137 +
49 49  Основная задача фонового макроса - отслеживать текущее состояние и обороты шпинделя и отправлять значения в частотный преобразователь по Modbus.
50 50  
51 -Пример фонового макроса **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно добавить в список фоновых операций.
140 +Пример фонового макроса **modbus_spindle.bm** для управления шпинделем по ModBus для ЧП Toshiba VF-S11 размещен во вложении. Данный файл нужно сохранить в каталог background.
52 52  
53 53  [[attach:modbus_spindle.bm]]
54 54  
55 -{{warning}}
144 +{{note}}
56 56  Обращение к регистрам Modbus из макросов осуществляется по имени Modbus-регистра с учетом регистра! Например, **SpindleRPM** и **SpindleRpm** - это разные регистры.
57 -{{/warning}}
146 +{{/note}}
58 58  
59 59  (% style="margin-left: 30.0px;" %)
60 -6. Включить фоновую операцию. Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.
149 +6. Включить фоновую операцию в меню "Конфигурация → Фоновые операции". Убедиться, что операция стартовала и работает нормально. Об этом будет свидетельствовать зеленый индикатор справа от названия операции.
61 61  
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"]]
151 +[[image:attach:image2019-11-5_17-8-45.png]]
64 64  
65 65  Если все настроено правильно, то шпиндель теперь должен включаться и выключаться. При изменении оборотов шпинделя в 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
Содержимое
Macros_Manager_wndw.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Knetyaga
Размер
... ... @@ -1,1 +1,0 @@
1 -26.0 KB
Содержимое
master_plcm.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.XWikiGuest
Размер
... ... @@ -1,1 +1,0 @@
1 -9.4 KB
Содержимое
modbus_master_en.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Knetyaga
Размер
... ... @@ -1,1 +1,0 @@
1 -9.1 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