在浏覽一些德國的技術學校時,很多學校都提供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中有改善。