1. ST语言编程参考及示例

1.23. PWM和方波信号发生器的实现方法

PWM

PROGRAM MAIN
VAR
ass: FB_CTRL_PWM_OUT;
stParams1: ST_CTRL_PWM_OUT_PARAMS;
pp: BOOL;
nn: BOOL;
fPwmInput1: INT:=50;
END_VAR

stParams1.tTaskCycleTime:=t#10ms;(*这个值应该与task configuration中的值一致*)
stParams1.tPWMPeriod:=T#1000ms;(*这个值为脉冲的周期*)

ass(
fPwmInput:=fPwmInput1 ,(*这个值的范围是-100.0 到 100.0 *)
eMode:=eCTRL_MODE_ACTIVE ,(*当然是输入这个值了*)
stParams:=stParams1 ,
bPwmOutBitPos=>pp ,(*fPwmInput1这个值的范围是0 到 100.0 那么这个变量有输出*)
bPwmOutBitNeg=>nn ,(*fPwmInput1这个值的范围是-100.0 到 0 那么这个变量有输出*)
eState=> ,
eErrorId=> ,
bError=> );


方波

PROGRAM MAIN
VAR
period: INT:=1;(*设定周期=task的倍数,task的周期在task configuration中设定*)
Output AT %Q*: BOOL;(*数字量输出*)
task_times: INT;(*实际task的倍数,每个task加一*)
END_VAR

task_times:=task_times+1;
IF task_times=period THEN
Output:=NOT output;
task_times:=0;
END_IF