三菱GX Works2支持多种编程语言,其中有梯形图,SFC,结构化梯形图,ST语言。每种编程语言有不同的优点与缺点。
梯形图是最常用的PLC编程语言,以继电器符号相类似的编程语言,其中入门简单,逻辑思维强,符合电路控制逻辑等优点,缺点是在编写四则运算,功能复杂的程序比较吃力。
![c3c26126c9b75ee609b80b83f6e8c27c.png](https://i-blog.csdnimg.cn/blog_migrate/7c70db463ee35d75c5334f9fb2f49b2b.jpeg)
SFC在顺序流程控制方面比较有优势,以流程图的编程方式,其逻辑思维控制强,动作流程清楚等优点,SFC的缺点与梯形图相同,也包含调试不方便等缺点。
![b8e7ca56ae8f7335e1b69bf170a52bb6.png](https://i-blog.csdnimg.cn/blog_migrate/d9a3eb995da15c98ea9039a5e052ee57.jpeg)
结构化梯形图,以功能块的形式出现,控制思维为功率流方式,将所需要的功能做成功能块,在主程序调用,程序结构简单明了,调试检查方便。
![901279b46d6435d81ce7c6964d1230a1.png](https://i-blog.csdnimg.cn/blog_migrate/86ccb6c02e474935d5284d52e1594988.jpeg)
ST语言是以文本进行记叙的编程语言,可以以高级语言方式进行编程。
ST语言介绍
在条件判断,四则运算,处理复杂功能等优点,但入门难,逻辑控制弱等缺点,导致ST语言在PLC编程应用较少。
![ef0d3938d7a8af78c67869c9e26c110f.png](https://i-blog.csdnimg.cn/blog_migrate/7c3a2a95e5b920916c591f5ad847ea11.jpeg)
ST语言在条件判断及四则运算有很大的优势,控制语句条件判断非常强大,在梯形图中,某些关系使用触点或比较指令很难进行判断,使用ST语言可简单判断完成,编写完成之后,可作为梯形图编写方式借鉴。
梯形图在编写四则运行往往需要编写多行指令,关联性不强,程序分析困难,使用复杂的运算公式更是困难,这也是很高精密控制系统不使用PLC的原因,因为PLC多数使用梯形图编写。
使用ST语言可以直接使用+-/*等数运算符号,对于复杂公式计算可几行程序编写完成,计算方式直观,使PLC可以应用于复杂计算的项目中。
![8337a3ddfe6e5500db9946b9d787e948.png](https://i-blog.csdnimg.cn/blog_migrate/d733c047d2ff21edccd1875196443ebb.jpeg)
ST语言可以将一些重复使用的代码,直接封装为函数,并可以定义函数的返回类型。在程序中需要使用时,我们可以直接调用函数,省去重复编写,简化我们编程工作。
![a27fb22e13a927dfe3637aae9d7ac12e.png](https://i-blog.csdnimg.cn/blog_migrate/e4ade83018b0340c2e2059b3edc75b84.jpeg)
函数一般使用在一次运算中,很少需要连续调用函数,如果连续执行调用使用,可以使用FB块功能,定义输入接口与输出接口,使用内部变量,在不同程序调用FB块,功能块互不影响,可方便的执行连续执行FB块的程序
ST语言除了以上功能,还有其它作用需要我们去探索.
ST的运算符,赋值方式,程序注释
注:ST程序文必须是半角符,英文数字输入,如果使用全角或汉字编译将会报错!
![23eb07a04575b906ba736f3fadf1ed4f.png](https://i-blog.csdnimg.cn/blog_migrate/0a59fde9b2ab88447a0b5c3fc386904a.jpeg)
一:代入语句
我们首先先了解ST语言的赋值方法,也叫代入语句
代入语句 “ := ” (冒号+等于号),在ST语言的赋值方法
![87a6e6c36d5665c80ec91a230ae940fe.png](https://i-blog.csdnimg.cn/blog_migrate/15ae9af2ce71f30599bb4ce53e9b1a44.jpeg)
上图左边代码的意思是将X0的状态赋值给Y0,右边代码的意思是将K5传送级D0。可参考下列梯形图,进行对比
![2f7c5eedc3adbd669b5b7a3d452cc5f0.png](https://i-blog.csdnimg.cn/blog_migrate/f386764063e0f9ab6acebae638a8da71.jpeg)
ST语言常用的赋值方式,将右边的值赋值给左边,右边可以是数值,寄存器,定时器,或者进行四则运算后再赋值都是可以的。
![531819a2918c20c52bcb67047853bce5.png](https://i-blog.csdnimg.cn/blog_migrate/69b7b0e1f1421fdfc822fd904030c8ec.jpeg)
注意:但要求左右二边最结果的类型必须一致,如上图赋值符号的右边最终运行结果还是为16位,左边D0也是16位,类型符合,下图所示就是一个错误的示范
![b2a09e46260636f9ef738af35d7f9b94.png](https://i-blog.csdnimg.cn/blog_migrate/aaa398d10f3bf9f8f9579d1685fc6b6a.jpeg)
赋值符号右边为位类型,左边为字类型,赋值二边类型不一致,编译不会通过,所在使用赋值符号时,注意二边最终结果必须一致!
二:分组符号 ; ( )
在ST语言需要对程序文进行分组可以使用分号”;”或使用括号“()”,
1)分号应用
分号是作为某一段或一组程序文的结束,代表这一段程序与下一段程序无关。
![aac36414759857570d9dae0aa30c5a32.png](https://i-blog.csdnimg.cn/blog_migrate/c314b630ee032ed032c3377b4a9c2716.jpeg)
在上图编写了一行代码,有三组程序,分别给D0,D2,D4进行赋值,使用分号进行分组。也可以使用下图方法进行分组。看起来是不同的编写方法,实质上是一样的,因为编译器是按分组符号定义,不是按行定义。
![728e721d793470334362132f61027c23.png](https://i-blog.csdnimg.cn/blog_migrate/db5cbac3ac178ed6a419a3f93721eb3e.jpeg)
有时候因为没有使用分组符号,那么有时看起来是二行程序,也可能是一组程序。如下图所示
![f285087f8f1c47874d9083144d7f2d17.png](https://i-blog.csdnimg.cn/blog_migrate/cc762657a5f63ecb66c0a86b04722575.jpeg)
在上图中,因为第一行代码没有使用分组号,编译器默认认为与下行程序相连接。
2)括号应用
在编写某些运算时我们希望一些运算优先处理时,可以使用括号进行处理,如:在下图中默认会先执行D102乘以D104然后将相乘的积加上D100,最后将和赋值给D0。
![b3f1a88c4014eaa273251b36c47c13e2.png](https://i-blog.csdnimg.cn/blog_migrate/8393ded075d8efee92cc2b1f8187bec9.jpeg)
如果希望先执行D100加D102,然后再乘以D104,则可以使用括号,优先处理括号内运算,参考下图所示
![a72b10255bb5acb9f38d97624368c4f6.png](https://i-blog.csdnimg.cn/blog_migrate/954663db09081fe4124d45b47076827f.jpeg)
三:程序注释
在保证程序可读性良好,注释是少不了,ST语言的注释方法可以参考下图所示
![4d7b9521c1d149536ea5a9d82e098618.png](https://i-blog.csdnimg.cn/blog_migrate/517613ea227bb638e332fac79392b3ec.jpeg)
ST语言的注释方式就是使用 (* 注释文 *) 格式,默认会显示绿色,可以在程序尾部增加注释,也可以在程序上行增加,或程序下行增加,在程序文中间也是可以,具体参考下图
![44dfde8a7bdf1f0eec9c344674a1f927.png](https://i-blog.csdnimg.cn/blog_migrate/f133119c46458ef8f451721baf2ae29d.jpeg)
可以对程序分类或分段定义,如下图所示
![54a2775bed310434b26ee87833a55abe.png](https://i-blog.csdnimg.cn/blog_migrate/56a5bc1cabd1350be2eebc09f7b2fc24.jpeg)
本文为技成培训网原创,未经授权不得转载