电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

devicenet分段协议

如果显式信息长度大于9字节,则必须在Devicenet哂纳感以分段方式传输。

Frag(分段位)指示是否为显式信息的一个分段。0——不分段。这个传输包含完整的显式信息,下字节包含的是服务区;1——分段。这个传输不包含完整的显式信息。下字节包含分段协议。

   XID(事务处理ID)——该区应用程序用以匹配响应和相关请求。

对于显式信息连接和I/O连接而言,触发 发送的逻辑是不同的。

l        显式信息连接检查要发送的每个信息长度。如果信息长度大于8字节,那么就使用分段协议。

l        I/O连接检查连接对象的Produced_connection_size的属性。如果Produced_connection_size的属性大于8字节,那么就使用分段协议。

下面定义了两类分段:

l        应答式:显式信息分段时执行。

l        无应答式:I/O信息分段时执行。

l        分段类型——表明是第一段,中间段的还是最后段的发送。值0——第一个分段。分段记数区必须包含值0或3F;值1——中间分段;值2——最后分段;值3——分段应答。

l        分段记数器——标志每个单独的分段,这样接受器就能够确定是否有分段被遗失。如果分段类型是第一个分段,那么这一区应有特定的含义。每经过一个相邻连续分段,分段记数器加一;当计数器值达到64(分段记数器=(分段计数器+1)模64)时,又从0开始。

分段协议在I/O信息内的位置与显式信息内的位置是不同的。对于I/O信息分段,分段协议信息被置于字节位移0处。

以分段系列方式发送的接受器根据本节定义来分析分段协议。该过程同时实用于I/O及显式信息分段转发。

l        如果第一次传输是此连接所期望的,那么分段类型必须等于第一个分段。如果段记数等于3F,那么就是系列中的唯一的传输,并且该连接完成下列工作:1——处理信息;2——复位,查找下一个新系列传输中的第一段,连接将存储该分段,同时保存分段记数。

l        如果第一次传输不是连接所期望的,那么连接将确认分段类型不是第一个分段,分段记数应比上次收到的值大1。如果这些检查中的某一个失败,则检测到错误。如果两个检测都通过,那么此分段被添加到先前接受的分段,同时分析分段类型,以确定是否还有更多的分段。    如果后面还有更多的分段,那么此连接将保存接收的分段记数。并等待下一个分段。如果这是系列中的最后一个传输,并且没有检测到错误,那么此连接完成下列工作:1——处理信息;2——复位,查找下一个新系列的开始。

        如果一个显式信息被分段转发,那么接收器必须在接收每一个分段之后产生并发送一个应答;

        如果检测到一个错误,那么将产生特定分段I/O或显式信息的错误恢复。

        如果丢失段的检测为下一系列第一个分段的接受所触发(段形式=第一段),任何与当前系列相关的处理将立即停止,存储在内存中的分段被取消,并立即开始一个新系列的处理。如果在一个显式信息进行分段时发生这一情况,那么如前所述,接收器应答下一系列的第一个发送,并丢弃前一系列。

无应答的分段转发

I/O信息的分段转发以一种无应答的方式执行。

无应答的分段转发由发送模块来的连续传送的分段组成。接收模块不对每个分段还回应答信息(不同于CAN提供的ACK)。连接不用等待任何从接收器发送过来的应答信息,只须简单地调用链路生产者的发送服务作为传送信息的必要手段。

当调用一个I/O连接的Send_Message服务时,它将检测Connection_size属性,确定是否以分段方式来发送信息。如果Connection_size属性大于8个字节,不管当前被发送的I/O段的长度有多大,在I/O信息内要安置分段协议。

如果应用要求发送一片长度大于Connection_size属性的数据,那么就会出现一个内部错误,并不会进行传输。如果正在接收的I/O连接对象检测到当前接收的分段记数不等于前一次的分段记数值加1,则可确定段丢失,那么就会执行下列错误步骤:

l        放弃这一系列中的随后所有的分段,应用程序被告知不接收I/O信息;

l        连接对象在放弃这一系列的剩余分段的同时,开始寻找一个新的分段系列传输。

                   有应答的分段转发

一个显式信息的分段转发以应答方式执行。有应答的分段包含从发送模块的分段的传输,以及随后由接收模块发出的应答传输。接受模块对每个分段的接收进行应答,并提供了一个流量控制等级。假设一个大的信息体可以通过显式信息连接进行传输,这种情况下,流量控制等级是必须的。

l        分段类型——值3表明是个分段应答;

l        分段记数——返回接收到的最后一个分段的记数值;

l        应答状态——指示分段信息的接收器是否遇到了错误。

值定义如下:应答状态位值——0没有检测带错误,分段传输可以继续;1数据太多。已经超过接收器在这个连接上能够接收的最大数据量。2——FF由Devicenet保留。

 

博主
xiaoxiaozhuzhu
xiaoxiaozhuzhu's Blog
xiaoxiaozhuzhu
点击跳转