PPFUN STARTSUB(50) - Команда начала подпрограммы УП
Команда начала подпрограммы УП PPFUN STARTSUB(50) вместе с командой конца подпрограммы УП PPFUN ENDSUB(51) используется для выделения технологических команд подпрограммы. Все технологические команды между PPFUN STARTSUB(50) и PPFUN ENDSUB(51) считаются командами подпрограммы УП. Команды основной программы обрабатываются последовательно, тогда как команды подпрограммы УП пропускаются. Команды подпрограммы УП транслируются только при вызове операторов вывода подпрограммы УП из одной из команд основной программы.
Параметр CLD[2] содержит уникальный идентификатор подпрограммы УП.
Доступ из sppx
В sppx у PPFUN нет отдельного обработчика для каждого подкода. Все подкоды PPFUN обрабатываются в едином обработчике program PPFun с диспетчеризацией по cld[1] (CLD.SubCode); обработайте STARTSUB, добавив в него соответствующую ветку. Полный обработчик см. в разделе Постпроцессорная функция (PPFUN).
Пример (из постпроцессора Fanuc (30i)_Mill):
program PPFun
case cld[1] of
50: begin ! StartSub
OutBlock;
Output ""
Output "%"
ProgNum = MainProgramID + CLD[2]; ProgNum@ = MaxReal
if CLData$<>"" then
Output OutStr$ + " (" + UPCASE(CLData$) + ")"
OutBlock
Interp_ = MaxReal; Interp_@ = Interp_
Feed_ = MaxReal; Feed_@ = Feed_
end
end
end
Доступ из .NET
Помимо базового OnPPFun, этот подкод вызывает специальный обработчик OnStartNCSub:
public override void OnStartNCSub(ICLDSub sub, ICLDPPFunCommand cmd, CLDArray cld)
Общая модель .NET (члены, индексация 1-based и 0-based) описана в разделе Постпроцессорная функция (PPFUN).
Пример — OnStartNCSub (из постпроцессора Heidenhain_Mill_iTNC530_DN):
public override void OnStartNCSub(ICLDSub cldSub, ICLDPPFunCommand cmd, CLDArray cld)
{
//433 LBL101
cldSub.Tag = 100 + cldSub.SubCode;
nc.WriteLine();
nc.OutText($"LBL{cldSub.Tag}");
}