是否可以通过结构化文本改变PLC的数字输出引脚的ON时间?

时间:2017-03-09 15:17:14

标签: plc structured-text

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

提前致谢。

1 个答案:

答案 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经过扫描时,它会看到输出已关闭,因此会将其打开。在下一个周期,它会看到它已经打开,因此它将关闭它。

希望这有帮助。