quote:以下是引用Zane在2012-12-04 22:49:53的发言:
再举个例子,IEC定时器的时间类型,PID功能的积分微分项的时间设定都是TIME,单位是毫秒,这个设定值我们经常需要通过运算来获取,那么我们运算的数据类型是什么?DINT。另外,在操作面板的数据类型中有TIME吗?那大家又是如何处理的呢?
正是因为如此,我在使用AB的时候,坚决地放弃了这个让AB经常得以诟病西门子的所谓软件上的亮点,坚持了西门子定义变量及其类型的做法,从而杜绝了数据类型不匹配导致非法运算的可能性。
支持ZANE的做法!
我认为最彻底的杜绝数据类型不匹配的方法就是:尽量杜绝使用STL SCL编程,都尽量用LAD甚至CFC来编程!这样就令那些不合规的接口定义现原形了。哈哈哈
我们的工程师在编程方式有两种人,一种是习惯于用STL语句表主导编程,另一种则是用LAD和CFC做主导。
讨论中凡是认为数据类型区分不重要的,我看平常都应该是习惯于用STL编程,所以感觉不到这个问题的严重性。
而我本人,对此深有体会深恶痛绝的主要原因就是在CFC编程的时候,不说吃苍蝇了。是恨死了。
当你用CFC做程序的时候,没办法动辄想抄近路用STL做。毕竟CFC是高等语言,STL只是基础语言。
我遇到过ZANE说的给定时器TIME类型送数的问题,在CFC中直接给困住了。然后请教了@凌波微步 大侠,他教我的招数就是专门做个FC,里面其实就是一句MOVE,将DINT 转换为了TIME。
无奈啊!