今天跟大家分享的是三菱结构化文本ST编程的条件语句和定时器的综合应用示例。
什么是条件语句?
在我前面的文章和西门子SCL专栏中都有明确的介绍,这里不做过多的介绍,简要就如下图所示:

那么定时器在三菱ST编程中怎么用?
指令格式:

BOOL_EN:定时器使能信号
BOOL_TCoil:定时器线圈(定时器编号)
TValue:定时时间设定
比如下面示例中会用到的:
OUT_T( ( B点 AND NOT B点记忆)OR (C点 AND NOT C点记忆)OR (D点 AND NOT D点记忆) OR E点, TC3 , K20 );
这条指令就是当(( B点 AND NOT B点记忆)OR (C点 AND NOT C点记忆)OR (D点 AND NOT D点记忆) OR E点)条件满足,则启动定时器T3,定时2s。
定时器的输出就是TS3。就如下面的用法:

下面就看看今天这个示例:

功能要求:一个小车在A、B、C、D、E五点间自动往返运动,流程示意图就上图所示,当按下启动按钮,小车前进到B点,当到达B点后,停止2s后,自动后退到A点,再前进到C点,停2s,再退回A点。如此循环。
编程说明:
1、首先考虑是小车的前进条件,第一次启动时通过按启动按钮,小车前进,第二次之后就是当A点的行程开关动作,小车前进。当第二次到达B点后,小车依然要前进,同理当第二次到达C点和D点,都是要前进。
其次考虑小车的停止条件:当第一次到达B点、C点、D点、E点,小车都是要停止的。因此,我们编写第一段条件语句:
IF 启动 OR A点 THEN 前进:=1;
ELSIF 前进 AND (B点 AND B点记忆) THEN 前进:=1;
ELSIF 前进 AND (C点 AND C点记忆) THEN 前进:=1;
ELSIF 前进 AND (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;
注:在上面程序中,用局部标签来记录过程值,来用于判断。本例定义的标签如下图所示:

2、我们来编写后退程序:
首先就是当第一次到达B点、C点、D点、E点要停止2s,这时我们就用定时器指令来完成:
OUT_T( ( B点 AND NOT B点记忆)OR (C点 AND NOT C点记忆)OR (D点 AND NOT D点记忆) OR E点, TC3 , K20 );
其次就是后退程序,当定时时间到,则小车后退,后退的停止条件就是到达A点。程序如下:
IF TS3 THEN 后退:=1;
ELSIF A点 THEN 后退:=0;
END_IF;
3、过程记忆程序的编写。
对小车经过的点进行记忆,当到达E点后,则对记忆值进行清零。
IF B点 AND TS3 THEN B点记忆:=1;
ELSIF E点 THEN B点记忆:=0;
END_IF;
IF C点 AND TS3 THEN C点记忆:=1;
ELSIF E点 THEN C点记忆:=0;
END_IF;
IF D点 AND TS3 THEN D点记忆:=1;
ELSIF E点 THEN D点记忆:=0;
END_IF;
到此,一个完整的程序就编写完了。完整程序如下图所示:

仿真示例图:
小车前进:

第二次到达B点,小车依然前进:

第一次到达C点,小车停止:

定时时间到,小车自动后退:
