
SF(Single Frame) 例1:02 27 29 00 00 00 00 00
SF第一字节的高4位为0,缺则低4位为数据长度,其余字节为服务数据内容,没用到的数据可以按00或AA填充。
02:
0:第一字节高扒辩4位默认为0,表示单帧数据.
2:数据长度,表示在02后面有两个数据长度为27 29
多帧发送方式:
FF(First Frame)多帧传输的第一帧
FC(Flow Control)多帧传输的流控制帧
CF(Consecutive Frame)多帧传输的连续帧
例2: FF 10 1E 59 04 00 01 00 27
FC 30 00 00 00 00 00 00 00
CF 21 00 0B FF FF FF FF FF
22 FF FF FF FF FF FF FF
23 FF FF FF FF FF FF FF
24 FF FF FF AA AA AA AA
FF(First Frame)多帧传输的第一帧,其第一字节的高4位为1,低四位+第二字节为数据长度,其余字节为服务数据内容
10 1E:
1:第一字节高四位默认为1
01E:数据长度位30最大为FFF=4095可知传输数据最大长度为4095
FC(Flow Control)多帧传输的流控制帧,其第一字节高四位为3,低四位为FS流控制状态第二字节为BS数据块大小,第三字节为STmin间隔最短时长
30:
3:第一字节高四位为3
0为FS流控制状态
FS:
FS=0:表示允许发送方继续发送连续帧
FS=1: 表示发送方需等待下一条流控制帧[1],该流控制帧称为等待流控制帧
FS=2: 表示报文长度超出接收方的网络层缓存大小,此流控制帧将迫使发送方中断多帧报文的发送,并且发送方网络层使用N_USData.con向应用层报告N_Result = N_Buffer_Overflow。FS = Overflow的流控制帧接收方只能在接收到第一帧后发送。
第二字节BS=00
BS=00: 表示允许发送方连续发送连续帧,而不需要等待接收方发出的流控制帧
BS>=01||BS<=FF: 表示允许发送方连续发送连续帧的数目,发送完成相应数目的连续帧后,发送方必须等待接收方发出的流控制帧
BS为当前接收数据的数据长度,通过控制数据长度来防止通道堵塞
第三字节STmin=00
STmin>=00||STmin<=7F: 两个连续帧之间的最小间隔时间,0~127ms
STmin>=80||STmin<=F0:Reserved保留
STmin>=F1||STmin<=F9: 两个连续帧之间的最小间隔时间,100~900us
STmin>=FA||STmin<=FF: Reserved保留
如果发送方收到一个FC,其STmin的值是Reserved,则发送方应默认STmin为7F(127ms)
STmin为两个CF之间的时间间隔,通过时间间隔控制接收数据的速率
多帧发送三种情况:
1. 不停止接收伏此棚:开始→FF→(接收方)FC→CF→结束
2. 指定数据长度接收:开始→FF→(接收方)FC→CF(部分数据) →(接收方)FC→CF(部分数据) →(接收方)FC→CF(部分数据) →….. (接收方)FC→CF(部分数据)→结束
3. 数据异常,不接收:开始→FF→(接收方)FC→结束
018DA10FA X 8 03 22 08 01 FF FF FF FF 686.920250 R018DAFA10 X 8 03 7F 22 31 FF FF FF FF 686.920890 R
018DA10FA X 8 03 22 01 08 FF FF FF FF 807.113590 R
018DAFA10 X 8 07 62 01 08 FF FF FF FF 807.114750 R
18DA10FA:10为目标地址,FA为源地址
10的回复中7F为否定响应,03表示字节仿春长度,22为读
62为22读的肯定响应,在原来的上边加40;07为字节长度
0108为DID
注悄大隐意在写程序的时候,高位在前,所以是启厅这样写
int如何分解为十六进制,请参考之前的文章
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)