F173_PulseOutput_PWM

带有通道指定的脉冲输出指令(PWM输出)

此指令根据指定的DUT传送脉宽调制输出信号。当指定通道的控制标志为FALSE且执行条件为TRUE时,从该通道输出脉冲。

参数

输入

s_dutDataTable (F173_PulseOutput_PWM_DUT)

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

n_iPulseOutputChannel*(十进制常量)

脉冲输出通道:

FP-XH C30 T/P: 0~3

FP-XH C60 T/P: 0~5

FPS: 0,2

FP-X、FP-XH继电器:0.1

FP-X、FP-XH 16k晶体管:0~2

FP0R、FP0H、FP-X、FP-XH 32晶体管:0~3

FP-XH 32k晶体管:0~5

标注

使用以下预定义DUT:F173_PulseOutput_PWM_DUT

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

  • 近似频率

  • 占空比(对于脉冲持续时间和周期)

    矩形波形的脉冲持续时间和周期之间的比例。对于脉冲持续时间为1ms且脉冲周期为4ms的脉冲序列,占空比为0,2525%

通用编程信息

  • 视负载电压和负载电流而定,占空比(特别是当其接近最小或最大值时)可能会与指定的占空比不同。

  • 可对各扫描更改占空比。

  • 在指令执行期间,无法更改频率常量K。如果更改,将对频率无效,但对占空比的分辨率有影响。

  • 当正在执行指令时,如果占空比更改为允许范围以外的值,占空比将被调节到最大值。当开始执行指令时,将显示运算错误。

  • 当正在执行指令时,如果频率更改为允许范围以外的值,分辨率将被调节为100。当开始执行指令时,将不显示运算错误。

  • 当正在执行指令时,如果占空更改为100%或更高,频率将以指定分辨率被调节到最大值。当开始执行指令时,将不显示运算错误。

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

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

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

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

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

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

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

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

示例

全局变量

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

DUT

DUTF173_PulseOutput_PWM_DUTFP Library中预定义。

POU头

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

	VAR_EXTERNAL
		X6_bEnablePWM: BOOL:=FALSE;
	END_VAR
	VAR 
		dutPWMControl: F173_PulseOutput_PWM_DUT:=iFrequencyValue := 1;
			(*iFrequencyValue := 1: f=2.0 Hz, T=502.5 ms; 
*)
		iPulseWidthModulationDuty: INT:=500;
			(*500 = 50% duty*)
		@'': @'';
	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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X6_bEnablePWM,5,2,7,4,);
B(B_F,E_MOVE!,Instance,16,1,22,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,14,3,16,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,22,3,24,5,);
L(7,3,16,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,F173_PulseOutput_PWM!,Instance,16,0,29,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,14,2,16,4,);
B(B_VARIN,,2,14,3,16,5,);
B(B_CONTACT,,X6_bEnablePWM,5,1,7,3,);
L(7,2,16,2);
L(1,2,5,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

IF (X6_bEnablePWM) then
    dutPWMControl.iPulseWidthModulationDuty:=iPulseWidthModulationDuty;
END_IF;
IF (X6_bEnablePWM) then
    F173_PulseOutput_PWM(s_dutDataTable := dutPWMControl, 
       n_iPulseOutputChannel := 2);
END_IF;

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