发布于 2012-12-04 22:49:53
82楼
再举个例子,IEC定时器的时间类型,PID功能的积分微分项的时间设定都是TIME,单位是毫秒,这个设定值我们经常需要通过运算来获取,那么我们运算的数据类型是什么?DINT。另外,在操作面板的数据类型中有TIME吗?那大家又是如何处理的呢?
你能把一个DINT或DWORD类型的数据,直接引导SFB4的设定值上吗?还不是要用语句表直接送的。
IEC61131定义的时候,并不那么完善,他只是简单粗暴地定义了数据的类型,并规定了只有同类数据才可以作为同一个指令的操作数,完全忽视了数据类型之间的准换关系,这给实际的编程带来了很多的不便,这也是为什么大家会觉得内置数据转换适配的指令要好用的原因,但这是有代价的,CPU的性能需要大幅提高,以及数据类型的错误导致的非法运算的诊断与排查异常的困难。
正是因为如此,我在使用AB的时候,坚决地放弃了这个让AB经常得以诟病西门子的所谓软件上的亮点,坚持了西门子定义变量及其类型的做法,从而杜绝了数据类型不匹配导致非法运算的可能性。
Zane
注册自动化系统工程师
Always save before download