quote:以下是引用火麒麟在2011-04-26 16:28:41的发言:
我也是通讯的使用者,对于底层的概念一知半解。
我想从应用的角度请教一下凡大侠:到目前位置,对于PLC的S7的连接资源和任务资源,我理解的还不是太清楚。
技术资源库有这样一个问题:参见条目号:18363371
通过一个CP343-1的S7通讯,背板总线上最多可用16个任务资源。任务资源分配到组态的S7连接并且通过通讯功能块的背景数据块所体现 (I-DBs) 。由于最大的任务资源数为16, 那么最多16个背景DB被使用。如果使用超过了16个背景DB,通讯功能块会显示一个错误 ("STATUS = 1 (dec)").
举例:
如果使用的CP343-1支持最大的16 个S7连接, 那么一个PUT或一个GET任务可以在16个组态的S7连接中执行, 或者一个PUT和一个GET任务可以同时在8个组态的S7连接中执行。在这两种情况下,通过背板总线可以使用16个任务资源。
下面的条目ID提供了IE CPs相关可用S7连接数量的信息:
S7-300 IE CPs: 条目 ID 16767769
S7-400 IE CPs: 条目 ID 15368142
补救措施:
减少背景DB的个数或者使用一个背景DB用于多个通讯任务, 即通讯功能块的参数在程序运行时进行修改。
根据以上资料:是否是一个连接资源只能进行一个通讯任务?如果一个PUT和GET任务同时执行,这对连接资源是如何影响的?如果连接的不是CPU,比如连接的是一个OPC SERVER,那么连接资源和通讯任务是怎么定义的呢?
关于文中所说的减少背景DB的个数,意思应该不是仅仅是让你用多重背景调用吧?程序中倒是完全可以通过更改ID和R_ID的值来进行更多的通讯任务,但是这样通讯的实时性不是大打折扣了么?
很多东西,用倒是都用了,但具体的很多概念还是一塌糊涂,所以趁此机会,像各位大侠前辈请教。
这个问题是个好问题,先说个简单说下:
S7的连接资源和任务资源一起表征PLC的通信资源,这里是CP343-1。
那么到底什么是通信资源呢?通信资源根据计算机通信,是entity,即实体。那又抽象了,简单的说操作系统维护通信所分配的缓冲区和代码。缓冲区很好理解,实际上倒不是FB的数据DB,而是CP卡内部的数据缓冲区,用于缓冲CPU的数据DB。而代码呢?则来自于背景DB,(这样好理解)由S7操作entity控制。CP343-1仅给您预留了S7操作的16个背景DB,也就是entity控制最大的数目,就是这么多任务。背景DB控制数据DB的发送和接收(意会)。
这样,一个CP343-1实际上最多可以和16个伙伴进行S7通讯,但是如果和其中的一个伙伴用了4次PUT,那么只能和最多12个伙伴进行通讯,且仅是发送或接收。如果对所有伙伴都发送和接收,那么最多链接8个伙伴。换句话说,如果金和一个伙伴用了16次BSEND,那么就再也不能和其它伙伴通信了。总结:看到的S7链接信息不是关键的,关键的是任务资源!任务资源决定连接资源!
根据前面,我们在往深说:
实际上通信资源在CP卡中,CP处理S7的数据的封装和解包,处理,这也是CP卡要占用S7链接的原因。
那么为什么CPU还要占用S7连接资源呢?
我的描述清楚吗?有疑问请问,同时给您和大家一个问题。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。