*消息的开始
对于使用自由口的数据传输,可在多种不同的开始标准中进行选择。 开始标准可定义帧的开始时间。 一旦符合指示消息开始的标准,就将扫描数据流的消息结束标准。 在此选择与发送通信伙伴属性对应的设置。
有两种不同的方法可用于检测消息的开始:
以任意字符开始
任意字符均可用于定义消息的开始(默认设置)。
这意味着在通信开始时发送的**个字符,或检测到帧结束后的**个字符将被识别为消息的**个字符。
在特殊条件时开始
基于以下特定条件检测到消息的开始。
- 检测到换行符后
除非事先接收到中断,否则不会接受帧开始,也就是说,伙伴必须在发送帧之前先发送中断。
- 检测到空闲线路后
经组态的 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/