在西门子PLC的编程软件中,GRAPH是对付步进控制的利器,STEP7和TIA博图都支撑GRAPH语言的程序。但是,对于TIA博图,只有S7-1500、300、400这些高端的PLC才允许使用,对于S7-1200,是不支持的。实际上,可以利用S7-1200支持的SCL语言方便地实现简单的GRAPH功能。
GRAPH最基本的功能就是按步控制,根据步数和外部条件实现每一步的跳转及本步的动作。下面将用IF...THEN和CASE语句分别实现这些基本的功能,供大家参考:
在S7-1200里创建一个FB1块,带有一个初始化输入参数。
1、初始化
OB1里调用的情况:
![b04ba0ecf8510de23c2609dea2dcf487.png](https://i-blog.csdnimg.cn/blog_migrate/1521738d6ed8295f0d2261315c8bcc33.jpeg)
FB1的接口参数,其中S是静态变量,是步数控制的关键变量:
![1147c44ee9fae9f7f4368e3e36aed45c.png](https://i-blog.csdnimg.cn/blog_migrate/dd914eea4d5cf90ce1f4399c01028194.jpeg)
初始化命令,强制将该不仅控制归零:
![d606751f4c61510c6bbaac32650e1fd0.png](https://i-blog.csdnimg.cn/blog_migrate/3ec8cda293a00a23f24bd2b7013a9ed1.jpeg)
2、用IF...THEN实现的方法
![53e953636b9eb235a85be926b8cf8046.png](https://i-blog.csdnimg.cn/blog_migrate/8be21ee8b0a4f968944c2e59e6184361.jpeg)
3、用CASE语句实现的方法
![26689a2209a363756ca5a21671bf193f.png](https://i-blog.csdnimg.cn/blog_migrate/2a4ecaeca16171eea92a1b496d3f63cd.jpeg)
以上只是实现了简单的功能和框架,需注意:
1、S每步的值,完全可以自己定义和控制。
2、如果程序较长,IF...THEN结构可以拆开为不同的IF...THEN结构,放在不同的程序段中。
3、位的控制,要遵循GRAPH的习惯。
4、在动作指令里可以进行复杂的计算,启动定时器等功能。
2019年11月9日
说明:
1、本文是实践经验,非严格论文,与相关产品和理论可能不完全相符。
2、原创不易,欢迎转发,让更多朋友看到(引用请注明出处!)
3、如果您时间和流量充裕,点击一下广告,也是一种莫大的支持!谢谢!