F174_PulseOutput_DataTable

数据表控制

此指令根据指定DUT中的参数通过不同速度和目标值的任意数执行矩形控制。当指定通道的控制标志为FALSE且执行条件为TRUE时,脉冲从该通道输出。

参数

输入

s_dutDataTable (ANY_DUT)

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

样本:F174_PulseOutput_DataTable_8_Values_DUT

n_iPulseOutputChannel*(十进制常量)

脉冲输出通道:

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

标注

使用以下DUT作为样本,创建您自己的DUTF174_PulseOutput_DataTable_8_Values_DUT

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

  • 控制代码

  • 频率 1

  • 目标值 1

  • 频率 2

  • 目标值 2

  • ...

  • 频率 n

  • 目标值 n

  • 脉冲停止

脉冲输出特性

  1.  (1) 执行条件
  2.  (2) 脉冲输出控制标志

x 高速计数器的经过值(行程量)

  • 以指定频率输出脉冲,直到达到目标值。然后频率更改为第二个频率值且脉冲输出继续,直到达到第二个目标值,以此类推。

  • 当达到最后一个目标值时,脉冲输出停止。

  • 0的频率表示最终频率并停止脉冲输出。

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

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

  • 如果指定的第一个频率值超出范围,将出现运算错误。(如果第一个频率值为0,运算将停止,不输出任何脉冲。)

  • 如果指定的第二个频率值超出范围或为0,脉冲输出将停止。

  • 如果目标值超出范围,脉冲输出数量可能与指定值不同。

  • FP0R:如果目标值之一不在移动方向,脉冲输出将停止。

  • FPSFP-X:如果目标值之一不在移动方向,计数将无限继续。

  • FPS: 执行圆弧插补控制指令F176_PulseOutput_Center将圆弧插补控制标志(sys_bIsCircularInterpolationActive)设置为TRUE。保持此标志的状态,直到达到目标值(即使执行条件不再为TRUE)。在此期间,无法执行其他脉冲输出指令。

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

  • FPSFP-X:如果定时中断或高速计数器中断程序运行,或同时使用PLC Link函数,应使用80kHz或更小的频率。

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

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

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

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

示例

全局变量

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

DUT

DUTF174_PulseOutput_DataTable_8_Values_DUT[FP库]中预定义,并且可以用作样本。

POU头

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

	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		dutDataTable4: F174_DUT:=ControlCode := 16#1200,
Frequency1 := 1000,
TargetValue1 := 1000,
Frequency2 := 2500,
TargetValue2 := 2000,
Frequency3 := 5000,
TargetValue3 := 5000,
Frequency4 := 1000,
TargetValue4 := 2000,
Termination := 0;
			(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 2=Frequency range 48Hz-100kHz
Digit 1: 0=Relative value control
Digit 0: 0=CW*)
		@'': @'';
	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 := 6 ;
        NETWORK_BODY
B(B_F,F174_PulseOutput_DataTable!,Instance,13,0,27,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutDataTable4,11,2,13,4,);
B(B_VARIN,,0,11,3,13,5,);
B(B_CONTACT,,X0_bMotorSwitch,5,1,7,3,R);
L(1,2,5,2);
L(7,2,13,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

IF DF(X0_bMotorSwitch) then
  F174_PulseOutput_DataTable(s_dutDataTable := dutDataTable4, 4);
END_IF;
相关主题

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