Создание фоновой операции

Редактировал(а) Edgar Allan Poe 2024/02/28 18:13

Внимание!

Перед началом работы убедитесь в наличии активной опции «Фоновые операции».

Для многих задач по управлению ЧПУ системой требуется возможность фонового выполнения макросов, в которых отслеживаются определённые параметры работы системы и выполняются необходимые действия (например, управление выходами).

Код макроса может быть написан в любом текстовом редакторе (стандартный Блокнот, Notepad++ и другие). Список функций в API для разработки фоновых макросов приведён в разделе "Функции для разработки фоновых макросов". Обратите внимание, что набор доступных функций отличается в API фоновых макросов и классических макросов.

Для создания фоновой операции воспользуйтесь окном "Управление макросами и фоновыми операциями": нажмите кнопку "Создать" и введите имя фоновой операции. После того как новая фоновая операция появится в списке, перейдите в режим редактирования (окно стандартного текстового редактора) для добавления кода. Для запуска фоновой операции выделите её в списке и нажмите кнопку "Запустить".

При запуске сервер PUMOTIX начинает выполнение каждого фонового макроса в отдельном потоке. При этом внутри макроса вызывается функция — обработчик с интервалом 100 мс (интервал между вызовами обработчика может изменяться в зависимости от определённых условий, для точного замера прошедшего времени используйте функцию GetSystemTickCount).

Пример фонового макроса
function handle()
 local x = AxisGetMachinePos(Axis.X)

 local new_state_0 = x < 0
 local new_state_1 = x >= 0

 if (PinGetState(Outputs.UserOutput_0) ~= new_state_0) then
    PinSetState(Outputs.UserOutput_0, new_state_0)
 end

 if (PinGetState(Outputs.UserOutput_1) ~= new_state_1) then
    PinSetState(Outputs.UserOutput_1, new_state_1)
 end
end