发布于 2010-01-22 14:52:25
6楼
首先查软件帮助,中文帮助里对V100.6(NETR的TBL表第一个字节的第7位)的解释是"现用(功能入队)".呵呵,有点太不专业了(明显不是学自动化的翻译的),查英文S7200手册,应该是当前功能正在执行队列中的意思(呵呵,问人的,本人英语也不好),第7位为1时代表当前NETR/W操作正在执行队列中,为0时代表不在执行队列中.我的理解是NETR应该是有一个队列,NETW应该有一个队列.每一个队列最多有8条NETR/W指令.当队列中超过8条NETR/W指令时,就会出现红框.
为什么在程序监控中V100.6总是为1呢?我想应该是扫描周期比较快,其实后面的NETR已经执行了.只要NETR一进入队列,V100.6总为1.NETR一执行完,出队列后V100.6才为0.
而TBL表第一个字节的第8位指示NETR/W指令是否完成,为0的时代表NETR/W操作还没有完成,为1的时候代表NETR/W操作已经完成.
多数网络读写的不正常现象,除了硬件设备和软件设置的问题外,与在用户程序中调用网络读写指令的方式有关。包括看起来通信正常,但经过一段时间(可能是几天)后也会出现故障的现象。
使用用NetR/NetW时,应当注意:
避免简单地定时激活NetR/NetW:由于串行通信的特点(如上所述),无法得知何时真正结束。如果定时进行网络读写通信,必须判断此次通信是否正常结束
同时有效的NetR/NetW指令不能超过8个,否则通信请求队列会超出操作系统的管理能力.
使用SM0.0调用网络读写指令,虽然能长期工作,但不能超过8个指令,而且会出现监控时指令块变为红色的现象,最好还是加上必要的读写状态判断条件。