本文以西门子S7-1500 PLC为例,简单讲述各种自动程序设计方法,其他品牌或型号的PLC也可用使用类似的设计。这里暂不讨论手动、报警、诊断等程序如何设计。
下面总结一下常用自动程序设计方法:
一:SCL CASE(结构化控制语言 也称ST,CASE指令)
越来越多的小型PLC都支持SCL语言,SCL是一种类似于PASCAL的高级编程语言,常用的FOR、IF、WHILE、CASE等程控语句组合起来能编写出很强大的算法和逻辑,用此写法的人也越来越多。用SCL设计自动程序主要就是结合CASE 和IF语句,将Step作为程序号,如果存在比较长的分支或并行动作时需要有借助多个Step程序步,这里不做深究,书写规则大体如下:
SCL CASE
二:LAD 起保停
所有的PLC都适合用LAD起保停的写法,也存在很多变种,最常规变种是当前步的输出用置为SET,不需要起保停,在紧接的下一步中用RESET复位,在老一代PLC中是很流行写法,随着PLC的升级换代,此写法逐渐减少,书写规则大体如下:
LAD 启保停
三:LAD 移位
所有的PLC也都适合用LAD 移位指令(通常为左移位)的写法,在老一代PLC也较常见,因自动流程按移位的方法设计好后不容易增加动作,设计较长的动作流程时也很不方便,与LAD启保停相比可扩展性差,不够直观。常见的书写规则大体如下:
LAD SHL
四:GRAPH(顺序功能流程图语言 也称SFC)
中高端PLC才能支持GRAPH,许多小型PLC有他的缩减版:步进指令,但步进指令功能有限,且很不直观。GRAPH就是为方便实现流程设计而产生。步、转换和动作是顺序功能图的三种主要元件,加上灵活的使用其分支、并行和跳转可实现复杂的流程,程序可以做到非常直观,也很容易增改,执行效率高,用久了GRAPH后对其他写法都不习惯,唯一的缺点就时PLC性能要求高,也占用很大的工作存储器。大体形式如下:
五:LAD 比较
结合“SLC CASE”和“LAD 启保停”的写法,在没有先例参考的情况下,创造出“LAD比较”写法,直到后来看到有工控朋友用到过类似的写法,才知道此写法并非本人首创。形式如下图所示。
“LAD 比较”和“SCL CASE”有些类似,不过原理上还是有很大差别,“SCL CASE”执行效率更高。在“SCL CASE”中,只有CASE符合条件的才运行,不符合的就跳过,而”LAD比较”是所有程序都会执行,不能有双线圈,除非LAD中使用正真的跳转指令(SWITCH LABLE 结合 JMP),但操作起来更加艰难,而“SCL CASE”就没有这么多限制。但”LAD比较”比“SCL CASE”稍许直观,通用性更强。