桓楠百科网

编程知识、经典语录与百科知识分享平台

一个SCL编程实例之小车5位自动循环往返运行

功能要求:一个小车由电机驱动,在ABCDE五点之间自动循环往返运行,示意图如下图所示,小车初始位置在A点,当按下启动按钮,小车依次前进到BCDE点,并分别停留2s返回A点停止。

根据要求我们知道,输入需要6个点,分别是启动按钮,A点开关、B点开关、C点开关、D点开关、E点开关。输出2个点,电机的前进和后退。

也就是说当按下启动按钮小车,先运行到B点。停留2s,后返回A点,停留2s后再前进到C点,如此循环,当从E点返回到A点后,小车停止。

下面我们开始编程:

新建FB,并设置接口变量如下图所示:

FB程序如下:

代码如下:

IF #启动 OR (#A点 AND NOT #E点记忆) OR (#B点 AND #B点记忆) OR( #C点 AND #C点记忆) OR (#D点 AND #D点记忆)

THEN

#前进 := 1;

ELSIF

(#B点 AND NOT #B点记忆) OR (#C点 AND NOT #C点记忆) OR (#D点 AND NOT #D点记忆) OR #E点

THEN

#前进 := 0;

END_IF;

IF (#B点 AND NOT #B点记忆) OR (#C点 AND NOT #C点记忆) OR (#D点 AND NOT #D点记忆) OR #E点 THEN

#过程记忆 := 1;

ELSE

#过程记忆 := 0;

END_IF;

#timer.TON(IN := #过程记忆,

PT := T#2S,

Q => #timer_out);

IF #过程记忆 AND #timer_out THEN

#后退 := 1;

ELSIF #A点 THEN

#后退 := 0;

END_IF;

IF #B点 THEN

#B点记忆 := 1;

ELSIF #E点 THEN

#B点记忆 := 0;

END_IF;

IF #C点 THEN

#C点记忆 := 1;

ELSIF #E点 THEN

#C点记忆 := 0;

END_IF;

IF #D点 THEN

#D点记忆 := 1;

ELSIF #E点 THEN

#D点记忆 := 0;

END_IF;

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言