原创 devicenet分段协议

2008-6-30 19:54 2427 7 8 分类: MCU/ 嵌入式

如果显式信息长度大于9字节,则必须在Devicenet哂纳感以分段方式传输。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


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——第一个分段。分段记数区必须包含值03F;值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——FFDevicenet保留。


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1524712 2010-11-30 11:46

博主总结的挺好! 如果那些图片能够展示出来就好了~ 弱弱的给博主提一点建议,若显示信息长度大于8字节则必须使用DeviceNet的分段传输协议, 希望能够与博主进行交流~ 376488134@qq.com
相关推荐阅读
用户147756 2008-09-22 23:34
谁知道Dvicenet 协议中模拟量(A0)的访问流程
     弄明白大概的Devicenet协议,I/O与显式信息的流程。显式信息就是获得对象的属性,I/O就是传送数据的。我的程序就是采集模拟量的。A0就是模拟量的代称,我就不明白程序为什么不去访问模拟...
用户147756 2008-08-01 21:35
EEROM
     今天终于把一个51的程序完成了,都郁闷了一个月了。终于有点眉目了。不过等到最后发现EEROM读取数据不对头,弄了一下午郁闷得哟啊死。不甘心,晚上去回家找原因,结果仔细查看STC89C52RD...
用户147756 2008-06-30 19:55
devicenet连接对象
连接对象分类定义——分类ID号:5连接类将分配和管理与I/O及显式信息连接有关的内部资源。有连接类生成的特定的实例称连接实例或连接对象。重要说明:存在 通过显式信息连接的连接类外部可视接口。一个特定模...
用户147756 2008-06-12 19:52
一些芯片的的封装图
...
用户147756 2008-06-12 19:49
这个电源图的理论是怎样的呢?
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...
EE直播间
更多
我要评论
1
7
关闭 站长推荐上一条 /3 下一条