PulseOutput_Trapezoidal_FB

梯形控制

此指令根据功能块和指定DUT中的参数自动执行梯形控制。当指定通道的控制标志为FALSE且执行条件为TRUE时,从该通道输出脉冲。

参数

输入

bExecute (BOOL)

FP-SIGMA, FP-X, FP0, F168_PulseOutput_Trapezoidal: 仅通过边沿触发器

F171_PulseOutput_Trapezoidal执行条件可以为:通过边沿触发器;永久,如果需要改变速度。

bAbsoluteValueControl (BOOL)

绝对值控制 = TRUE, 相对值控制 = FALSE

diInitialAndFinalSpeed (DINT)

初始和最终速度: 根据PulseOutput_Channel_Configuration_DUT中所选的频率范围设置此值:

FPSFP-X1~98001,5Hz~9,8kHz

48~10000048Hz~100kHz

191~100000191~100kHz

F171_PulseOutput_Trapezoidal1~500001Hz~50kHz

FP0F168_PulseOutput_Trapezoidal40~500040Hz~5kHz

diTargetSpeed (DINT)

目标速度: 根据PulseOutput_Channel_Configuration_DUT中所选的频率范围设置此值:

FPSFP-X1~98001,5Hz~9,8kHz

48~10000048Hz~100kHz

191~100000191~100kHz

F171_PulseOutput_Trapezoidal1~500001Hz~50kHz

FP0F168_PulseOutput_Trapezoidal40~500040Hz~5kHz

diAccelerationTime (DINT)

加速/减速时间FPSFP-X):

30步幅:30ms~32760ms(以30为步幅指定)

60步幅:60ms~32760ms(以60为步幅指定)

加速/减速时间 (FP0, F168_PulseOutput_Trapezoidal): 30ms~32760ms

加速时间 (F171_PulseOutput_Trapezoidal): 1ms~32760ms

diDecelerationTime (DINT)

减速时间 (F171_PulseOutput_Trapezoidal): 1ms~32760ms

diTargetValue (DINT)

目标值[脉冲]-2147483648~2147483647

dutChannelConfiguration用于通道配置的预定义系统DUT:PulseOutput_Channel_Configuration_DUT

输出

bError (BOOL)

如果应用的输入值无效,则为TRUE。功能块停止执行。

标注

这种非内联指令是脉冲输出工具指令的一部分。有关内部使用指令的详细描述,请参阅:

  • FPS, FP-X: F171_PulseOutput_Trapezoidal

  • FP0: F168_PulseOutput_Trapezoidal

使用PulseInfo_IsActive检查所选通道的控制标志是否为FALSE

示例

DUT

使用数据单元类型(DUT),可以定义由其他数据类型组成的数据单元类型。DUT首先在DUT池中定义,然后像全局变量列表或POU头中的标准数据类型(BOOLINT等)一样进行处理。

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

POU本体

	VAR
		PulseOutput_Trapezoidal: PulseOutput_Trapezoidal_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		ChannelConfiguration_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		bConfigureDUT: BOOL:=FALSE;
	END_VAR

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 28 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,5,1,7,3,);
B(B_F,E_MOVE!,,14,0,20,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,12,2,14,4,);
B(B_F,E_MOVE!,,14,8,20,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,12,10,14,12,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_SignReverse,20,10,22,12,);
B(B_F,E_MOVE!,,14,12,20,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,14,4,20,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,12,6,14,8,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_SignForward,20,6,22,8,);
B(B_VARIN,,TRUE,12,14,14,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.iChannel,20,2,22,4,);
B(B_F,E_MOVE!,,14,16,20,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,12,18,14,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bDutyRatio25,20,18,22,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bAccelerationSteps60,20,14,22,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz,20,22,22,24,);
B(B_VARIN,,TRUE,12,22,14,24,);
B(B_F,E_MOVE!,,14,20,20,24,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,14,24,20,28,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,12,26,14,28,);
B(B_VAROUT,,ChannelConfiguration_DUT.Trapezoidal_bTargetSpeedUpToTheMaximum,20,26,22,28,);
L(9,18,14,18);
L(9,14,14,14);
L(9,10,14,10);
L(9,6,14,6);
L(9,2,9,18);
L(9,18,9,22);
L(9,22,14,22);
L(9,22,9,26);
L(9,26,14,26);
L(9,2,14,2);
L(7,2,9,2);
L(1,2,5,2);
L(1,0,1,28);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 11 ;
        NETWORK_BODY
B(B_FB,PulseOutput_Trapezoidal_FB!,PulseOutput_Trapezoidal,14,1,28,11,,?BbExecute?BbAbsolute?BdiInitialAndFinalSpeed?BdiTargetSpeed?BdiAccelerationTime?BdiDecelerationTime?BdiTargetValue?BdutChannelConfiguration?AbError);
B(B_VARIN,,bExecute,12,2,14,4,);
B(B_VARIN,,bAbsolute,12,3,14,5,);
B(B_VARIN,,600,12,4,14,6,);
B(B_VARIN,,12000,12,5,14,7,);
B(B_VARIN,,300,12,6,14,8,);
B(B_VARIN,,600,12,7,14,9,);
B(B_VARIN,,50000,12,8,14,10,);
B(B_VARIN,,ChannelConfiguration_DUT,12,9,14,11,);
B(B_VAROUT,,bError,28,2,30,4,);
L(1,0,1,11);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

(* Used DUT parameters *)
ChannelConfiguration_DUT.iChannel := 1;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_DUT.Trapezoidal_bTargetSpeedUpToTheMaximum := TRUE;
ChannelConfiguration_DUT.bExecuteInInterrupt := FALSE;
(* FB *)
PulseOutput_Trapezoidal(bExecute := bExecute,
            bAbsolute := bAbsolute,
            diInitialAndFinalSpeed := 600,
            diTargetSpeed := 12000,
            diAccelerationTime := 300,
            diDecelerationTime := 600,
            diTargetValue := 50000,
            dutChannelConfiguration := ChannelConfiguration_DUT,
            bError => bError);

最后更新日期: 此页面上的反馈松下热线