Исходный код вики Создание фоновой операции
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | (% class="auto-cursor-target" %) | ||
2 | \\ | ||
3 | |||
4 | {{tip title="Внимание!"}} | ||
5 | Перед началом работы убедитесь в наличии активной опции «Фоновые операции». | ||
6 | {{/tip}} | ||
7 | |||
8 | Для многих задач по управлению ЧПУ системой требуется возможность фонового выполнения макросов, в которых отслеживаются определённые параметры работы системы и выполняются необходимые действия (например, управление выходами). | ||
9 | |||
10 | Код макроса может быть написан в любом текстовом редакторе (стандартный Блокнот, Notepad++ и другие). Список функций в API для разработки фоновых макросов приведён в разделе "Функции для разработки фоновых макросов". Обратите внимание, что набор доступных функций отличается в API фоновых макросов и классических макросов. | ||
11 | |||
12 | Для создания фоновой операции воспользуйтесь окном "[[doc:PUMPUBLIC.Управление макросами и фоновыми операциями]]": нажмите кнопку "Создать" и введите имя фоновой операции. После того, как новая фоновая операция появится в списке, перейдите в режим редактирования (окно стандартного текстового редактора) для добавления кода. Для запуска фоновой операции выделите её в списке и нажмите кнопку "Запустить". | ||
13 | |||
14 | При запуске сервер PUMOTIX начинает выполнение каждого фонового макроса в отдельном потоке. При этом внутри макроса вызывается функция - обработчик с интервалом 100 мс (интервал между вызовами обработчика может изменяться в зависимости от определённых условий, для точного замера прошедшего времени используйте функцию [[GetSystemTickCount>>doc:PUMPUBLIC.Описание фоновых операций.Функции для разработки фоновых макросов.WebHome||anchor="number GetSystemTickCount ()"]]). | ||
15 | |||
16 | {{code title="Пример фонового макроса"}} | ||
17 | function handle() | ||
18 | local x = AxisGetMachinePos(Axis.X) | ||
19 | |||
20 | local new_state_0 = x < 0 | ||
21 | local new_state_1 = x >= 0 | ||
22 | |||
23 | if (PinGetState(Outputs.UserOutput_0) ~= new_state_0) then | ||
24 | PinSetState(Outputs.UserOutput_0, new_state_0) | ||
25 | end | ||
26 | |||
27 | if (PinGetState(Outputs.UserOutput_1) ~= new_state_1) then | ||
28 | PinSetState(Outputs.UserOutput_1, new_state_1) | ||
29 | end | ||
30 | end | ||
31 | {{/code}} | ||
32 | |||
33 | (% class="auto-cursor-target" %) | ||
34 | \\ |