发布于 2011-12-03 16:48:38
4楼
在PLCSIM里仿真没出现错误停机的情况,楼主最好把CPU诊断缓冲区内容贴出来
在FC里直接引用绝对地址DB块数据时是通过V区(调用FC的上一层程序的本地数据即L区)变量中转的,写输出是把数据先写入V区变量,块执行完后再由V区写入DB块,如果在FC里没有执行对OUT变量的写入,那么FC执行完也会把V区写入DB块,可这时V区没有被更新,可能就是一个不确定的值,DB块也就得到一个不确定的值,如果是有那个IN_OUT类型来定义,那么FC会把DB块数据读入V区,这样如果没有执行输出,那么将输出原来的值。使用M区变量和楼上提到的先打开数据块然后用DBD10这样的,参数传递的是实际地址,就不会经过V区了。
另外,在FC里使用复杂数据类型参数,实际上是通过指针传递的,你可以在DB块里使用自定义类型,这样也不会经过V区,如果需要传递大量数据,我觉得这是个好方法,不过在FC里引用自定义类型参数,会占用地址寄存器AR1和DB寄存器。