前面文章中跟大家聊了很多西门子SCL编程语言的使用,今天通过一个示例来看看三菱ST语言的使用,其实无论是ST还是SCL本质是相同的。只是在指令的使用的有所区别。
示例的功能要求:通过一个按钮控制三组灯
用一个按钮控制三组灯,每按一次按钮亮一组灯。当三组灯全亮之后,每按一次按钮,灭一组灯。长按按钮三组灯全灭。
功能实现很简单,就是利用按钮的上升沿来进行加1计数,也就是INC指令。
那么问题来了:INC指令用ST语言怎么写呢?同时怎么使用上升沿指令呢?
这就是不同于SCL的地方,也是个人感觉非常适合初学编程人使用的地方了。在三菱中可以完美使用LAD中的指令。
你可以在编程界面中输入INC后按ctrl+F1,会自动出现指令格式,对应填入标签即可,如下图所示:

在本例中,是使用按钮的上升沿作为INC的使能端,那么就直接在“?BOOL_EN?”输入指令LDP(上升沿指令)同样按ctrl+F1。如下图所示:

自动添加的英文;要手动删除。否则编译会出错。
对于本例中,按钮的上升沿是不需要使能条件,也就是说使能条件常为1即可,也就是说“?BOOL_EN?”输入1。
那么针对本例完成的INC指令如下图所示:

也就是说每按一次按钮,都会对K1M0进行加1。
利用对应M位进行控制即可实现前面的功能要求。
下面是本例的完整程序:

仿真如下所示:
计数值为1:

计数值为2:

计数值为3:

计数值为4:

计数值为5:

计数值为6或长按按钮则复位:

本例的源码如下:





