CODESYS被誉为工控界的安卓,作为新兴的PLC 平台工具,个人感觉,CODESYS 似乎是在弱化梯形图,而大力推广ST CFC 等新兴语言,而作为PLC 大哥大级的西门子,似乎对ST不太重视。今天,就结合自己的使用经验,来分析下两者的不同。
俗话说,名不正言不顺,在IEC61131标准中,命名为结构化文本语言(Structed text),CODESYS也是如此命名的,顾名思义,这是一种实现结构化编程的语言,它可以在文本文档中编辑(PS:这是我自己的顾名思义)。而西门子的老大风范又一次霸气侧漏,命名为SCL(Structured Contorl Language),结构化控制语言,再一次显示了自己的强势和不屑一顾。西门子还有一种语言叫STL,类似汇编语言,它和ST语言是不同的,个人认为,这种8位CPU时代的产物,注定会淘汰的。
西门子向来是推它的梯形图和功能块图,特别是梯形图,西门子的梯形图确实强大。其实ST语言并不是一种新兴产物,很早就出现了,特别是美系的AB GE 施耐德等都很早就推出了ST,而且也在推广。而西门子虽然有,但却要在STEP 7 加个插件,你不问,他也不说。再一次显示了自己的不屑一顾,好在博途中不用加插件了,不过博途中S7-300好像还是不支持的。要知道,在施耐德的Somachine中,即使最烂的和 三菱2N 竞争的M218 系列都是支持ST 的。而且CODESYS 不用加任何插件,ST和梯形图是并列存在的。
这一点,西门子做的很好,它是可以在梯形图中插入ST 的,而在CODESYS 中是不行的,当初你建立子程序的时候,是什么就是什么不能混搭。看下图,这是博途的梯形图编辑界面,在程序段 2 中可以插入SCL。这点确实很好,这样就把梯形图和ST 做在一个界面,很直观。而CODESYS 中需要插入一个转移,类似功能块,反正是不能做在一个界面,就没什么意义了。
西门子博途SCL界面
如上图所示,程序段1是梯形图,但是程序段2可以插入SCL,这样两种编程语言就集中在了一个子程序中,这样很方便,也很直观。
博途编程界面
看上图,博途中,梯形图和SCL 做在一个界面,而在CODESYS 中是不行的。不过CODESYS中,ST的移植是很方便的,可以用记事本复制粘贴。
CODESYS ST编程界面
如上图,CODESYS中的界面,非常简单,什么也没有,就是一个空的记事本。它的变量命名也是采用文本形式,可以直接复制粘贴,而博途是表格形式。当然,CODESYS也可以转换成表格模式。
在这里,我们还发现一个不同,那就是博途的END_IF 后面要加分好,而CODESYS不用。
西门子是用梯形图的思维方式在做SCL,因为在梯形图时代,梯形图的各种元素比如常开,常闭,定时器等都是做成图标的,大家用的时候直接拖进来。同样,博途把 IF FOR WHILE 等SCL 的关键字也做成图标,放在了SCL 的编辑界面。。
博途SCL界面
看上图,最上面黄色荧光笔部分,是SCL 语言的关键字,博图直接做成了图标。再来看程序段2中黄色荧光笔部分,西门子又一次把他繁琐,脱裤子放屁的风格发挥的淋漓尽致,变量前面加符号 区分全局变量和局部变量,真是有病啊,貌似梯形图中也这样,我没用过STEP 7 不知道是不是这样,真不知道这样的意义是什么?反正我看着很乱。
再次强调一点,在CODESYS 中 END_IF后面是不用加分号 的,而博途中必须加,否则编译会报错,如图中红色圆圈部分,END_IF后面一定要加 ;,否则编译会报错。还有一个让我百思不得其解的地方就是,博途直接输入关键字会报错,必须点击上面的图标插入才行,不知何故。 |