0

我正在尝试模拟从纯数字 PLC 输出的 PWM 信号。那么是否可以在每个周期中定义数字输出引脚的 ON 和 OFF 时间?

提前致谢。

4

1 回答 1

1

大多数带有晶体管输出的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它通过它的扫描时,它会看到输出关闭,所以它会打开它。在下一个循环中,它会看到它处于打开状态,因此它将关闭它。

希望这可以帮助。

于 2017-03-09T16:18:02.827 回答