我正在尝试模拟仅数字PLC输出的PWM信号。那么可以在每个周期中定义数字输出引脚的ON和OFF时间吗?
提前致谢。
答案 0 :(得分:1)
大多数带晶体管输出的plc都有一个可以使用的脉冲发生器。例如,在Schneider 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
经过扫描时,它会看到输出已关闭,因此会将其打开。在下一个周期,它会看到它已经打开,因此它将关闭它。
希望这有帮助。