[CodeSys] codesys和西门子STEP7的区别与联系

[复制链接]
查看38863 | 回复0 | 2024-3-15 09:57:07 | 显示全部楼层 |阅读模式


在浏览一些德国的技术学校时,很多学校都提供codesys和step 7的学习,在工作过程中也经常使用到这两个软件,以下来谈谈这两个软件的使用感受:


1)codeys是德国3s-software公司的软PLC软件,符合PLCOPEN的IEC 61131-3标准;而step 7,只能讲是近似这个标准,因为很多概念和使用还是不一样的。个人觉得codesys更像JAVA,干净,有严格的规则,当然自由度是有限制的;而step 7更像是C++,自由度更高,但某些概念会引起混乱,而且使用时也是充满陷阱和要注意的地方。

2)FC的定义。codesys中定义的FC就是单纯的FC,不允许有输出OUT参数;而step 7的FC是兼顾了无参数的程序的功能,相当与codesys中的子PRG,而且带参数的FC可以带很多的输出OUT参数。在开始学习时最令人困惑的是,西门子提供的入门程序中,FC中竟然可以使用计时器!这个在plcopen中,FC是不可以带有保留数据的块的。

3)SCL的定义。codesys中的块,可以直接使用ST(structure text,和SCL一样)建立;而step 7中,还要先建立source file,但所有的块的定义及编写都可以在一个source file中全部定义,但顺序有严格的要求,稍不留神就出错了。

4)顺序功能图的使用。在codesys中为SFC,在step 7就叫GRAPH,step 7中增加了permanent instructions和interlock,supervision等概念。特别是permanent instructions,有时是需要增加一些附加逻辑的,在codeys中就很难实现。

5)EN/ENO。在codesys V2.3及标准中,是不定义EN/ENO的,那这样就很麻烦。比如MOVE指令,通常都要使用。当然在新出的V3.4版终于支持了。

6)指针。codesys支持指针,但说得很少。相反step 7的指针功能强大,但概念细分而且微妙。

7)复杂数据类型。codesys的这点做得挺好,挺规范。而step 7又多了个UDT,最令我困惑的是UDT在块的参数设置时的使用。我在FB的IN/OUT参数中设置了一个UDT参数,然后外面建立了一个DB,类型也为UDT。但用此DB链接FB的此UDT参数时,显示出错。按照论坛的方法,先建立一个shared DB,然后再在里面建立UDT的变量。这种用法真是无语了。

8)指令的多态性。step 7仍然保留了不同数据按不同的指令,没有多态的概念,这点在1200中有改善。

(内容来源网络,版权归原作者)

免责声明:如涉及版权,请联系删除!任何人和机构不承担相关的法律责任。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则