线性插补
根据指定DUT中的参数从两个通道输出脉冲,从而使目标位置路径形成直线。当指定通道的控制标志为FALSE且执行条件为TRUE时,脉冲从该通道输出。
输入
脉冲输出通道:
FP-XH C30 T/P: 0~3
FP-XH C60 T/P: 0~5
FPS: 0, 2
FP-X C30T/C60T: 0, 1, 2, 3
FP-XC14T: 0, 1, 2
FP-X R: 0, 1
FP0R: 0, 1, 2, 3
对于插补,通道0和1或通道2和3成对使用。只能指定0或2(对于C14T:仅限0)。
输入/输出
包含数据表的区域的开始地址
FPS, FP-X: F175_PulseOutput_Linear_DUT_0
FP0R: F175_PulseOutput_Linear_DUT_1
使用以下预定义DUT:F175_PulseOutput_Linear_DUT_0
可以在DUT中指定以下参数:
在执行指令时计算各轴的以下参数并存储在DUT的运算结果区域中。
脉冲输出特性
X轴目标值(通道0): 5000
Y轴目标值(通道2)(FP-X:通道1): 2000
控制两个轴,以便按照线性路径到达目标位置。
FP-X:当执行脉冲输出指令且正在输出脉冲时,相应通道的脉冲输出控制标志(例如sys_bIsPulseChannel0Active)为TRUE。只要此标志为TRUE,就无法执行其他脉冲输出指令。
FPS:高速计数器控制标志(例如sys_bIsHscChannel0ControlActive)和脉冲输出控制标志(例如sys_bIsPulseChannel0Active)被分配为相同的特殊内部继电器编号(例如R903A)。因此,当执行高速计数器指令或脉冲输出指令时,所用通道的高速计数器控制标志(例如sys_bIsHscChannel0ControlActive)和脉冲输出控制标志(例如sys_bIsPulseChannel0Active)均为TRUE。只要此标志为TRUE,就无法执行其他高速计数器指令或脉冲输出指令。
FPS:执行圆弧插补控制指令F176_PulseOutput_Center将圆弧插补控制标志(sys_bIsCircularInterpolationActive)设置为TRUE。保持此标志的状态,直到达到目标值(即使执行条件不再为TRUE)。在此期间,无法执行其他脉冲输出指令。
FPS:在系统寄存器中将所有分配到脉冲输出通道的高速计数器设置为"未使用"。
FP-X:在系统寄存器中设置所需通道的"脉冲输出"。
强烈建议将强制停止选项包含到位置控制程序中。
使用以下预定义DUT:F175_PulseOutput_Linear_DUT_1
可以在DUT中指定以下参数:
在执行指令时计算各轴的以下参数并存储在DUT的运算结果区域中。
脉冲输出特性
X轴目标值(通道0): 5000
Y轴目标值(通道1): 2000
脉冲从X轴(通道0)和Y轴(通道1)输出,以便初始速度为500Hz,目标速度为5kHz,并且加速时间和减速时间为300ms。控制两个轴,以便按照线性路径到达目标位置。
使用25%的占空比输出脉冲。通过脉冲输出方法"脉冲/方向",在已输出方向信号之后,输出脉冲约300ms;电机驱动器特性同时考虑在内。
当达到目标值时,脉冲输出停止。
强烈建议将强制停止选项包含到位置控制程序中。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
bTrigger: BOOL:=FALSE;
dutLinearData: F175_PulseOutput_Linear_DUT_0:=dwControlCode := 16#1000,
diInitialAndFinalSpeed := 500,
diMaximumSpeed := 5000,
diAccelerationAndDecelerationTime := 300,
diTargetValue_X := 5000,
diTargetValue_Y := 2000;
(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 0=Fixed
Digit 1: 0=Relative value control
Digit 0: 0=CW/CCW
*)
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bTrigger,4,2,6,4,R);
B(B_VARIN,,dutLinearData,11,4,13,6,);
B(B_VARIN,,0,11,3,13,5,);
B(B_F,F175_PulseOutput_Linear!,Instance,13,1,28,6,,?DEN?Hn_iPulseOutputChannel?Ds_dutDataTable?As_dutDataTable?AENO);
L(1,3,4,3);
L(6,3,13,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bTrigger) then
F175_PulseOutput_Linear(n_iPulseOutputChannel := 0,
s_dutDataTable := dutLinearData);
END_IF;