我正在尝试模拟从纯数字 PLC 输出的 PWM 信号。那么是否可以在每个周期中定义数字输出引脚的 ON 和 OFF 时间?
提前致谢。
大多数带有晶体管输出的plc都有一个可以使用的脉冲发生器。例如,在施耐德 PLC 上,您可以使用 PTO(脉冲串输出)。例如,如果您使用信号来移动电机,您可以定义与脉冲频率相等的速度,然后在代码中您可以定义移动速度
VAR
MC_MoveVelocity_PTO_0: MC_MoveVelocity_PTO;
Powerd: MC_Power_PTO;
mcPositive: MC_DIRECTION;
END_VAR
//enable pulse train output
Powerd(Axis:=PTO_0,Enable:=TRUE,DriveReady:=TRUE);
//command
MC_MoveVelocity_PTO_0(Axis:=PTO_0,Execute:=%IX1.1,ContinuousUpdate:=TRUE,Velocity:=100,Acceleration:=1000,Deceleration:=1000,Direction:=mcPositive);
此代码应在每个周期运行,因此您无需在每个周期更新 ON 和 OFF 时间。如果你真的想的话,你可以调整它在每个循环中运行的速度。
或者,如果您想获得真正的基础,您可以使用计时器来打开和关闭您的输出。
VAR
PWM_Timer: BLINK;
DigitalOutput: BOOL;
offTime: TIME := t#10ms;
onTime: TIME:=t#10ms;
END_VAR
PWM_Timer(ENABLE:=TRUE , TIMELOW:=offTime , TIMEHIGH:=onTime , OUT=>DigitalOutput );
我使用的计时器指定了您可以调整的 ON 和 OFF 时间。但是您不需要在每个周期打开和关闭输出。PLC 会为您解决这些问题。
如果您想在每个周期打开/关闭输出以查看它会做什么,您可以执行类似的操作
IF DigitalOutput THEN
DigitalOutput:=FALSE;
ELSE
DigitalOutput:=TRUE;
END_IF;
所以当plc
它通过它的扫描时,它会看到输出关闭,所以它会打开它。在下一个循环中,它会看到它处于打开状态,因此它将关闭它。
希望这可以帮助。