发布于 2009-08-24 15:55:03
0楼
这个问题可以用你的“贴图”来解释:
你自已可以看到贴图,而别人不能,这是一个除了你自已在贴图那台电脑上才能碰到的“巧合”,除了你之外没有人能碰到这种巧合。
实质是,你认为(就象你定义DINT)图贴到网上了,但实际贴了一个路径(可称为快捷方式),而图本体并没有贴到网上。编译,就象你写贴时的审查,通过了。别人浏览时,IE按贴图时的路径到本地电脑上找图,当然是找不到了。
所以,定义是一种约束,虽然你可能并不一定按定义来用。你定义成DINT,并不表示这个单元存的就是一个DINT;同样,你定义一个REAL,并不表示这个单元就是一个REAL的数。S7200不帮你自动转换类型的,这点要特别注意,否则出点莫名其妙的问题,都不知道是什么原因!
编译器是假定你是按定义来使用变量的,所以你用DINT当成REAL作运算当然不行。但是变量中存的数,并不会随着你的定义而变化,所以你取消定义,或改成REAL的定义,编译通过。其实前后的程序并没有不一样。
所以:
1、定义只是一种约束。不是约束PLC的,而是约束你编程的。
2、变量中的数据类型,不会根据定义自动转换。
3、这个不是BUG。这是一个特色。