F177_PulseOutput_Home

原点返回

此指令根据指定DUT中的参数执行原点返回。当指定通道的控制标志为FALSE且执行条件为TRUE时,脉冲从该通道输出。

参数

输入

s_dutDataTable (F177_PulseOutput_Home_Type0_DUT) (F177_PulseOutput_Home_Type1_DUT)

包含数据表的区域的开始地址

n_iPulseOutputChannel*(十进制常量)

脉冲输出通道:0–3

标注

已打开驱动系统后,内部位置值(经过值)和轴的机械位置之间有差异;无法预定此差异。内部值必须与轴的实际位置值同步。这将通过原点返回执行,在此期间位置值注册到已知参考点(原点)。在执行原点返回指令期间,持续输出脉冲,直到启用原点输入。I/O分配由所用的通道决定。若要在接近原点位置时减速运动,请指定近原点输入,并将存储脉冲输出控制代码(sys_wHscOrPulseControlCode)的特殊数据寄存器的位4设置为TRUE,然后再次重设回FALSE当原点返回已完成时,偏差计数器清零输出可设置为TRUE

选择两个不同操作模式之一:

  • 类型0:

    无论是否有近原点输入,是否发生减速或是否减速已完成,原点输入均有效。

    不带近原点输入:

    1.  (1) 初始速度
    2.  (2) 目标速度
    3.  (3) -
    4.  (4) 原点输入:TRUE

    带近原点输入:

    1.  (1) 初始速度
    2.  (2) 目标速度
    3.  (3) 近原点输入:TRUE
    4.  (4) 原点输入:TRUE
    5.  (5) 爬坡速度
    6.  (6) 原点输入始终有效。
  • 类型1:仅在减速(由近原点输入开始)已完成后,原点输入才有效。

    1.  (1) 初始速度
    2.  (2) 目标速度
    3.  (3) 近原点输入:TRUE
    4.  (4) 原点输入:TRUE
    5.  (5) 爬坡速度
    6.  (6) 原点输入仅在加速之后有效

使用以下预定义DUT:F177_PulseOutput_Home_Type0_DUTF177_PulseOutput_Home_Type1_DUT

可以在DUT中指定以下参数:

  • 控制代码

  • 初始速度

  • 目标速度

  • 加速时间

  • 减速时间

  • 爬坡速度

  • 偏差计数器清零信号(输出时间)

脉冲输出特性

  • 脉冲输出频率根据指定加速时间和指定减速时间而变化。

  • 目标和初始速度之差决定斜坡的斜率。

  • 使用25%的占空比输出脉冲。

  • 通过脉冲输出方法"脉冲/方向",在已输出方向信号之后,输出脉冲约300ms;电机驱动器特性同时考虑在内。

通用编程信息

  • 在系统寄存器中设置所需通道的"脉冲输出"。

  • 即使已发生原点输入,执行此指令也会使脉冲输出开始。

  • 如果正在加速时启用近原点输入,将开始减速。

  • 偏差计数器清零信号被分配到各PLC类型特定的专用输出编号。

  • 如果主程序和中断程序都包含同一通道的代码,请确保两者不同时执行。

  • 当执行脉冲输出指令且正在输出脉冲时,相应通道的脉冲输出控制标志(例如sys_bIsPulseChannel0Active)为TRUE。只要此标志为TRUE,就无法执行其他脉冲输出指令。

  • 当正在以RUN模式编辑程序时,脉冲输出停止,但是在已下载程序变更之后会恢复。

  • 强烈建议将强制停止选项包含到位置控制程序中。

  • 在执行扫描时,高速计数器控制标志或脉冲输出控制标志的状态可能改变。例如,如果多次读取接收到的字节数,则在单次扫描中可能存在不同的状态。

的偏差计数器清零输出和原点输入

FP0R
  • FP0R C16

    通道编号

    偏差计数器清零输出

    原点输入

    0 Y6 X4
    1 Y7 X5
    2 X6
    3 X7
    注释
    • 输入X4–X7可用作高速计数器输入或原点输入。

    • Y6Y7可用作通道3的脉冲输出或通道0和1的偏差计数器清零输出。

  • FP0R C32, T32, F32

    通道编号

    偏差计数器清零输出

    原点输入

    0 Y8 X4
    1 Y9 X5
    2 YA X6
    3 YB X7
    注释

    输入X4–X7可用作高速计数器输入或原点输入。

示例

全局变量

在全局变量列表中,定义项目中所有POU都可以访问的变量。

DUT

DUTF177_PulseOutput_Home_Type1_DUT[FP library]中预定义。

POU头

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

	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		diInitialSpeed: DINT:=1000;
		diTargetSpeed: DINT:=5000;
		diAccelerationTime: DINT:=3000;
		diDecelerationTime: DINT:=3000;
		diCreepSpeed: DINT:=5000;
		dutHomeType1: F177_PulseOutput_Home_Type1_DUT:=dwControlCode := 16#0012,
diInitialSpeed := 0,
diTargetSpeed := 0,
diAccelerationTime := 0,
diDecelerationTime := 0,
diCreepSpeed := 0;
			(*For ControlCode (16#0012):
1 = Forward 
2 = Pulse/Sign forward on*)
		@'': @'';
	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 := 24 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHomeType1.diAccelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,20,23,24,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diDeviationCounterClearSignalOutputTime,23,22,25,24,);
B(B_VARIN,,0,15,22,17,24,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diInitialSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diDecelerationTime,23,14,25,16,);
B(B_VARIN,,diDecelerationTime,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,16,23,20,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHomeType1.diCreepSpeed,23,18,25,20,);
B(B_VARIN,,diCreepSpeed,15,18,17,20,);
L(7,2,7,6);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,6,7,10);
L(7,10,7,22);
L(7,22,17,22);
L(7,14,17,14);
L(7,18,17,18);
L(1,0,1,24);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 12 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,8,5,10,7,R);
B(B_VARIN,,dutHomeType1,15,6,17,8,);
B(B_VARIN,,0,15,7,17,9,);
B(B_COMMENT,,Example for home position return,1,2,18,4,);
B(B_F,F177_PulseOutput_Home!,Instance,17,4,30,9,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(10,6,17,6);
L(1,6,8,6);
L(1,0,1,12);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

IF DF(X0_bMotorSwitch) then
  dutHomeType1.diInitialSpeed:=diInitialSpeed;
  dutHomeType1.diTargetSpeed:=diTargetSpeed;
  dutHomeType1.diAccelerationTime:=diAccelerationTime;
  dutHomeType1.diDecelerationTime:=diDecelerationTime;
  dutHomeType1.diCreepSpeed:=diCreepSpeed;
  dutHomeType1.diDeviationCounterClearSignalOutputTime:=0;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
  F177_PulseOutput_Home(s_dutDataTable := dutHomeType1, 
    n_iPulseOutputChannel := 0);
END_IF;

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