2018年2月6日

PLC编程再思考(5) – 高级语言编程




PLC的编程语言中,梯形图最常用,同时也会结合STLSCL等语言使用。
梯形图LAD语言,由于其简单、直观、方便逻辑表达,使用最为广泛,但也有一定的限制。
比如在AVI和防错系统中,需要在PLC中存储车辆的实时队列,通常以数组的形式保存在数据块中。当车辆移动时,我们可以使用SCL语言,通过FOR循环对数组进行移动操作,非常方便。此时用LAD会让人抓狂。
此外,由于SCL语言是纯文本格式,因此我们可以非常方便地利用SVN工具进行版本控制。
因此,在AVIANDONEPSIT高度参与的系统中,会在PLC中交叉使用LADSCL语言。
我们可以针对不同的语言分别编写FC,然后在程序段中进行调用。
但有时我们希望用同一个FC完成所有相关的逻辑,这时我们可以适当地将LAD转换成SCL格式,以方便理解和调试。
本文举几个常见例子予以说明。

1.     直接赋值
LAD格式:





SCL格式:



需要说明的是,SCL只能通过变量的符号名进行运算。

2.     上升沿处理
LAD格式:






SCL格式:






我们可以看出,上升沿的处理原理是:通过两个地址,分别存储信号在上一个扫描周期值、当前扫描周期值;当上一次值为0且当前值为1时,则定义为上升沿触发。
SCL表达略显繁琐,但是也很好理解。

3.      串并联逻辑判断
LAD格式:







SCL格式:









我们可以看出,当有多个条件需要进行组合逻辑判断时,用LAD表达非常简洁直观,SCL需要将串、并联转换成AND/OR条件,而电路的闭/合也要转换成1/0值,因此不够直观。但是对于写惯了VB等高级语言的工程师,SCL格式上手还是相当简单的。



没有评论: