EtherCAT-高级语言接口

来源:互联网 发布:2016淘宝客推广微信群 编辑:程序博客网 时间:2024/06/04 18:25

    TWinCAT软件目前只支持Windows系列的操作系统,包括实时(如Windows CE)与非实时(如Windows NT、Windows2000、WindowsXP等)操作系统。本文只是讨论在非实时操作系统下的高级语言接口,因为对于目前大多数应用来说更具有代表性。

    其实,TWinCAT支持的高级语言接口是非常广泛的,但正是因为此,使得使用者初步使用时不知道选哪一种比较适合自己的应用,如果一一去试的话,显然多花时间和精力,而且平添了少许苦恼!本人就经历了这一过程,所以想把自己的心得供大家参考,如能正好帮助你的工作,不胜欣慰!!!

    首先,来讲讲ADS通讯方式,这下面主要最常用的就是ADS-OCX与ADS-DLL两种模式了。ADS-OCX显示使用了ActiveX COM技术,它支持同步、异步、循环三种通信模式,其中同步和异步这就不多说了;循环是什么?其实,说白了就是事件触发方式的应用而已,其中的一种用法是下面的IO变量数据如果变化就会产生事件,这种方法本人看来有些垃圾,为啥?如果你有1000个变量,如果同时变化,你想象一下,Windows会发生什么样的事情,简直是太恐怖了,我试过一次,当场就当机!!!再说说ADS-OCX的其他缺点:不支持自定义类型的变量(如结构体)、不支持负整型变量(这个当时晕死偶了,注:偶用的是Delphi,其它不清)。ADS-OCX说到这儿,该轮到ADS-DLL了,此接口没有上面提到OCX的缺点,但只支持同步方式;另外,其可以按变量地址或变量名称的方式来存取变量,这里特别要提醒的是,使用变量名称来存取变量的好处是容易记,而地址则是不易记的;所以真不知道为啥还会有存在地址存取变量的方式^@^。

    使用过程中,大家不要被动态库接口所迷惑,ADS通讯的时间可不象大家想象中那样会很快,经过测试,每条ADS读或写的通讯时间居然需要2ms,真是不可思议!!!但确实如此,如果是100条读/写语句,则会是200ms;但幸运的是如果是对一个数组(大小没太大关系)读/写一次,也只需要2ms,所以可以变通把变量集合起来一起读。

    另外,一种解决方法就是使用饶过ADS而直接对底层IO进行操作的TWinCAT R3IO接口,经过测试它的读/写语句大概一次只需100多us(微秒)。但它当然也有缺点,就是所有输入变量均在一个Image中,输出变量均在另一个Image中,这样对使用就存在很大的不灵活性,哎,有得就有失呀。但如果将ADS DLL(灵活性高)与R3IO(耗时少)两个结合起来使用,说不定会是一个合适的应用方案呢,呵呵。

   以上就是某家的一些心得,望可帮助大家!!!

原创粉丝点击