当我用参数作为IEC Timer作为实列的时候,发现几个很有意思的现象。
1,TON_TIME,TOF_TIME,IEC_TIMER的数据结构是完全一样的
2,既然数据结构完全一样,那么是不是可以混用呢?表面上看起来好像是的
我在FBD的INOUT接口定义一个名为Ton的参数,无论我定义为TON_Time还是TOF_Time的数据类型,无论我接入的实例是TON_Time还是TOF_Time,既不报错,实际功能也没有任何区别。那么第一个种要的问题来了,实际功能到底是TON还是TOF呢,测试结果跟你定义为什么类型没有半毛钱关系,因为FBD调用IEC Timer的时候要输入一个指令,起作用是那个指令,这个参数只有存储数据用途,功能取决于指令,参数的数据类型,输入的实参的数据类型通通不重要,这里要小小吐槽一下,用户容易混淆!
3,那么第二个种要的问题来了,难道真的参数和实参的数据类型都无所谓?
当然不是,否则西门子没有必要分几个类型!当使用SCL语言的时候就有关系了,SCL调用IEC Timer的时候,功能是取决于接口的数据类型的,至于接入的实参是什么类型,不重要。
4,总结一下,接口的数据类型,对于FBD不重要,功能取决于指令,接口只暂存数据。对于SCL是很重要的,至于接入的实参,那是真的无所谓,无论什么语言!