发布于 2011-07-23 16:43:57
12楼
谢谢各位大侠的参与。。。
再请教下阿鸣大侠:
确实FC105输入管脚IN的数据类型是INT。
IW20和PIW20在都不自己定义数据类型的情况下,它们都是WORD啊,符号表里面默认的都是WORD。
我看了好几个现场编好的项目程序里面,在用PIW(比如PIW256)的时候,也没在符号表里面刻意的将数据类型从WORD改成INT啊。
按大侠说的,我试了一遍,在符号表里面,定义了PIW20的数据类型为INT,但是我硬件组态里面没有加AI卡件,没有组态IW20这个地址,我下到仿真控制器里面,控制器还是SF红报错。
也就是使用PIW寻址的时候,必须硬件组态里面定义这个PIW地址,将PIW这个地址赋给实际的卡件通道,才能进行仿真。而如果我用IW的时候,在硬件组态里面只添加个电源和CPU,我在OB1里面就可以编程仿真了,只不过里面用到的变量地址都是过程映像区的,如果要用到PIW,我就必须在硬件组态里面添加卡件,组态这个地址!这样理解对不?
其实,刚开始我有这个疑惑,我是看到说西门子可以先硬件组态,再编程;也可以先编程再硬件组态,都不会报错。因为我用ABB的时候,都是先硬件组态,把通道这些都定义好,再编程。
好像在论坛帖子里也说这个问题:在现场用真正的CPU的时候,S7-300/400的I/O地址必须对应硬件通道,空地址是无法访问的,否则会地址访问出错。
这时候如果OB122先前没有被下载,CPU会停机。