F166_PulseOutput_Set

目标值匹配打开(脉冲输出)

如果经过值与所选脉冲输出通道的目标值匹配,则指定的输出立即变为TRUE

参数

输入

n_diPulseOutputChannel (DINT)

脉冲输出通道:0–3

s_diTargetValue (DINT)

在以下范围内为目标值指定一个32位数据值: -2147483467~+2147483648

输出

d_Y (BOOL)

当经过值与目标值匹配时变为TRUE的输出: Y0~Y1F

标注

  • 脉冲输出特性

    目标值:10000

    (1)

    脉冲输出的经过值

    (2)

    执行条件

    (3)

    "输出控制激活"标志

    (4)

    PLC输出

    当经过值与目标值匹配时,PLC输出变为TRUE。另外,"输出控制激活"标志变为FALSE,且指令被禁用。如果指定了尚未执行的输出,则仅设置或复位相应WY地址的内部存储器。

  • 中断操作

    当经过值与目标值匹配时,将执行中断程序。任何已输入任务列表的中断都将自动启用。每个通道编号都会分配一个特殊的中断程序编号。

  • 中断程序使用的通道:

    中断8

    通道0

    中断9

    通道1

    中断10

    通道2

    中断11

    通道3

通用编程信息

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

  • 当执行此指令时,所用通道的"输出控制激活"标志(例如sys_bIsPulseChannel0ControlActive)变为TRUE。只要此标志为TRUE,就无法执行使用相同通道的其他具有输出控制(F166_PulseOutput_SetF167_PulseOutput_Reset)的高速计数器指令。

  • 此指令可用于F173_PulseOutput_PWM除外的所有脉冲输出,并且可以在执行脉冲输出指令之前或之后执行。

  • 重复使用其他指令(OUT、SET、RST、KEEP和其他F型指令)中的输出不会被FPWIN Pro验证,并且不会被检测到。

  • 若要将之前通过此指令设置为TRUE的PLC输出设置为FALSE,请使用RSTMOVE指令。

  • 若要取消执行脉冲输出指令,请将存储脉冲输出控制代码(sys_wHscOrPulseControlCode)的数据寄存器的第2位设置为TRUE。然后脉冲输出控制标志将变为FALSE.若要重新允许执行指令,请将位2复位为FALSE

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

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

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

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果通道编号或数据表的值超出允许范围
  • 如果尚未在系统寄存器中设置脉冲输出
sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果通道编号或数据表的值超出允许范围
  • 如果尚未在系统寄存器中设置脉冲输出

示例

全局变量

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

POU头

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

VAR_EXTERNAL
		out_0: BOOL:=FALSE;
			(*output Y0 of PLC*)
	END_VAR
	VAR 
		start: BOOL:=FALSE;
			(*start condition*)
		@'': @'';
	END_VAR

POU本体

当变量start设置为TRUE时,执行此函数。

LD本体

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_F,F166_PulseOutput_Set!,Instance,12,1,26,6,,?DEN?Hn_diPulseOutputChannel?Ds_diTargetValue?AENO?Cd_Y);
B(B_VARIN,,0,10,3,12,5,);
B(B_VARIN,,10,10,4,12,6,);
B(B_VAROUT,,out_0,26,3,28,5,);
B(B_CONTACT,,start,5,2,7,4,R);
L(1,3,5,3);
L(7,3,12,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

IF DF(start) then
    F166_PulseOutput_Set(n_diPulseOutputChannel := 0, 
          s_diTargetValue := 10, 
          d_Y => out_0);
END_IF;

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