公司动态
当前位置:首页 > 公司动态 > 点对点使用自由口接收数据
使用自由口接收数据

*消息的开始

对于使用自由口的数据传输,可在多种不同的开始标准中进行选择。 开始标准可定义帧的开始时间。 一旦符合指示消息开始的标准,就将扫描数据流的消息结束标准。 在此选择与发送通信伙伴属性对应的设置。

有两种不同的方法可用于检测消息的开始:

以任意字符开始

任意字符均可用于定义消息的开始(默认设置)。

这意味着在通信开始时发送的**个字符,或检测到帧结束后的**个字符将被识别为消息的**个字符。

在特殊条件时开始

基于以下特定条件检测到消息的开始。

- 检测到换行符后

除非事先接收到中断,否则不会接受帧开始,也就是说,伙伴必须在发送帧之前先发送中断。

- 检测到空闲线路后

经组态的 idle line 持续时间结束后才会接受帧开始。 此程序需要两个帧之间的较小间隔。

- 接收到起始字符后

在识别到经组态的 start character 后检测到帧开始。

- 在检测到一个或多个 start sequence 后

在识别到长度达到五个字符的已组态字符串时检测到帧开始。 较多可组态 4 个 start sequence。 较长为 5 个字符的开始序列也可包含“don't care characters”。

示例:

列表: 组态开始条件

开始条件

* 1 个字符

* 2 个字符

* 3 个字符

* 4 个字符

* 5 个字符

1

0x68

xx

xx

0x68

xx

2

0x10

0xaa

xx

xx

xx

3

0xdc

0xaa

xx

xx

xx

4

0xe5

xx

xx

xx

xx

:

 

 

 

 

 


已收到如下消息: 68 10 aa 68 bb 10 aa 16

开始标准的评估从接收到**个字符 0x68 开始。
* 2 个和* 3 个字符无约束。
当接收到* 4 个字符(*二个 0x68)时,满足**个开始条件,将开始下一个消息评估。

*消息结束

使用自由口协议进行数据传输时,可从多种不同的结束标准中进行选择。 结束标准可用于定义完整接收帧的位置。

可组态的结束标准有:

按“消息**时”(message timeout) 来识别消息结束

按“响应**时”(response timeout) 来识别消息结束

character delay time 结束后(默认设置)

在接收到固定帧长度后

接收到较大字符数后

读取消息中的消息长度

接收到结束序列后

消息**时

接收数据时,在用于传输帧的已组态时间结束后检测到帧结束。 时间测量从满足开始标准后开始。

响应**时

响应时间用来监视通信伙伴的响应行为。 如果在发送作业完成后没有识别到有效的帧开始,则通过相应的消息确认发送作业。

需额外组态实际结束标准。

字符延时时间结束

接收数据时,在**出后续字符间的已组态较长时间(字符延迟时间)时检测到帧结束。 该值以位时间为单位。

在这种情况下,必须设置字符延时时间以使其可在两个相邻帧之间结束。 不过,该时间应该足够长,以便通信伙伴在一个帧内执行传输暂停时,不会错误地识别该帧已结束。

固定帧长度

接收数据时,在达到已组态帧的长度后识别帧结束。

如果字符延时时间(如果已激活)在达到固定帧长度之前结束,则会输出一条错误消息并丢弃该帧。

如果所接收字符的帧长度与组态的固定帧长度不匹配,则请注意以下情况:

在达到组态的固定帧长度之后接收到的所有字符都将被丢弃,直至检测到新的开始标准。

如果在达到固定帧长度之前满足另一个(已激活的)结束标准,则会输出一条错误消息并丢弃该帧。

较大字符数

接收数据时,达到所声明的字符数之后识别为帧结束。

此设置可与 "Character delay time" 设置结合使用。 如果出现了另一个结束条件,则还认为所接收的帧无错误,而无论是否已达到较大字符数。

如果所接收字符的帧长度与所组态的较大帧长度不匹配,则请注意以下情况:

在达到组态的较大字符数后接收到的所有字符都将被丢弃,直至检测到新的开始标准(例如 "Idle Line")。

如果在达到组态的较大字符数之前满足不同(已激活)的结束标准,则此“帧组成部分”会被评估为有效帧,而伙伴会等待新的开始标准。 在满足新开始标准之前接收到的所有字符都将被丢弃。


提示

如果未激活更多结束标准,则固定帧长度和较大字符数将以相同的方式响应。



消息中的消息长度

接收数据时,如果已接收帧的长度达到已发送的帧长度,则将检测到帧结束。

以下参数可定义用于评估消息长度的字符:

消息中长度字段的偏移量

在消息中,该值可用于定义将用于确定消息长度的字符的位置。

可根据缓冲区的大小在 0 到 4095 个字符之间对值进行设置。

长度字段的大小

该值可用于自将用于确定消息长度的**个评估位置起*字符的数量。

可设置 1、2 和 4 个字符的值。

未在长度规范中计数的字符数

添加到帧且未对帧长度计数的字符数。 该值可用于定义不应包括在消息长度评估中的帧结束时的字节数。

可设置 0 到 255 个字符的值。

示例:

“消息中的消息长度”(Message length in the message) 的参数分配

消息中长度字段的偏移量:

* 3 个字节(必须将“2”组态为偏移量)

“长度字段的大小”(Size of length field):

1 个字节

“长度规范中未计字符数”(Number of characters not counted in length specification):

3 个字节

消息

未在长度规范中计数的字符数

起始字符

地址

字段长度

 

 

校验和

结束符

字节 1

字节 2

字节 3

字节 ...

字节 X

字节 X+1

字节 X+2

字节 X+3

结束序列

接收数据时,在接收到组态的 end sequence(较多 5 个字符)后识别帧结束。 较长为 5 个字符的结束序列也可包含“don't care characters”。 CPU 可应用所接收的数据,包括 end sequence。

如果您正在使用 end sequence,则传输为非代码透明的,并且必须排除用户数据中所存在的结束代码。


提示

帧结束序列

如果只有一个结束符,则该条目必须在* 5 行执行。

如果有两个结束符,则这些条目必须在* 4 行和* 5 行执行(无间隙)。

使用其它字符时也是如此。


shtxjd.cn.b2b168.com/m/