F168_PulseOutput_Home

原点返回

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

参数

输入

s_dutDataTable (F168_PulseOutput_Home_DUT)

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

n_iPulseOutputChannel(十进制常量)

脉冲输出01

标注

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

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

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

    • 不带近原点输入:

    • 带近原点输入:

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

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

使用以下预定义DUT:

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

  • 控制代码

  • 初始和最终速度

  • 目标速度

  • 加速/减速时间

  • 脉冲停止(固定)

脉冲输出特性

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

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

通用编程信息

  • 在系统寄存器中将所有分配到脉冲输出通道的高速计数器设置为"未使用"。

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

  • 高速计数器控制标志(例如sys_bIsHscChannel0ControlActive)和脉冲输出控制标志(例如sys_bIsPulseChannel0Active)被分配为相同的特殊内部继电器编号(例如R903A)。因此,当执行高速计数器指令或脉冲输出指令时,所用通道的高速计数器控制标志(例如sys_bIsHscChannel0ControlActive)和脉冲输出控制标志(例如sys_bIsPulseChannel0Active)均为TRUE。只要此标志为TRUE,就无法执行其他高速计数器指令或脉冲输出指令。

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

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

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

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

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

以FP0兼容模式运行FP0R

若要以FP0兼容模式运行FP0R,可以将FP0程序下载到FP0R。请注意以下限制:

  • FP0R支持经过值和目标值的有符号的32-位数据;FP0支持有符号的24-位数据。在FP0兼容模式中,即使数据超过FP0范围,也会继续进行计数和脉冲输出。

  • 无论指令中的设置如何,占空比始终为25%。通过脉冲输出方法"脉冲/方向",在已输出方向信号之后,输出脉冲约300ms;电机驱动器特性同时考虑在内。

  • FP0R不支持"不计数"设置。相反,当FP0脉冲输出指令设置为"不计数"时,将执行递增计数。

  • 最大脉冲输出频率为10000Hz

  • 确保脉冲输出指令不使用正同时用作标准输出的输出。

  • 如果PLC类型(C10C14C16C32T32)精确匹配,FP0只能以FP0兼容模式运行。FP0兼容模式不可用于F32类型FP0R

FP0、FP-e的输出和系统变量

通道和脉冲输出编号

通道编号 脉冲输出 脉冲输出方式

0

Y0

脉冲

Y2

方向

1

Y1

脉冲

Y3

方向

所用内存区的系统变量. 括号中的值对FP0 T32有效。

描述

系统变量

脉冲输出:通道的控制标志

0

sys_bIsPulseChannel0Active

1

sys_bIsPulseChannel1Active

脉冲输出:通道的经过值

0

sys_diPulseChannel0ElapsedValue

1

sys_diPulseChannel1ElapsedValue

脉冲输出:通道的目标值

0

sys_diPulseChannel0TargetValue

1

sys_diPulseChannel1TargetValue

高速计数器或脉冲输出控制代码

sys_wHscOrPulseControlCode

FP0、FP-e的原点输入

通道编号 原点输入

0

X0

1

X1

示例

POU头

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

VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		dutHome: F168_PulseOutput_Home_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 0,
iTargetSpeed := 0,
iAccelerationAndDecelerationTime := 0;
		iInitialAndFinalSpeed: INT:=3000;
		iTargetSpeed: INT:=7000;
		iAccelerationTime: INT:=300;
		@'': @'';
	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 := 13 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_F,E_MOVE!,Instance,17,1,23,5,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iAccelerationAndDecelerationTime,23,3,25,5,);
B(B_F,E_MOVE!,Instance,17,5,23,9,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iInitialAndFinalSpeed,23,7,25,9,);
B(B_F,E_MOVE!,Instance,17,9,23,13,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iTargetSpeed,23,11,25,13,);
B(B_VARIN,,iAccelerationTime,15,3,17,5,);
B(B_VARIN,,iInitialAndFinalSpeed,15,7,17,9,);
B(B_VARIN,,iTargetSpeed,15,11,17,13,);
L(1,3,4,3);
L(6,3,17,3);
L(8,3,8,11);
L(8,11,17,11);
L(8,7,17,7);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,F168_PulseOutput_Home!,Instance,11,0,24,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutHome,9,2,11,4,);
B(B_VARIN,,0,9,3,11,5,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

IF DF(X0_bMotorSwitch) then
    dutHome.iInitialAndFinalSpeed:=iInitialAndFinalSpeed
    dutHome.iTargetSpeed:=iTargetSpeed
    dutHome.iAccelerationAndDecelerationTime:=iAccelerationTime
END_IF;
IF DF(X0_bMotorSwitch) then
F168_PulseOutput_Home(s_dutDataTable := dutHome,
    n_iPulseOutputChannel :=0);
END_IF;

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