首页 理论教育 自由口通信接收参数设置优化为:设定自由口通信接收参数

自由口通信接收参数设置优化为:设定自由口通信接收参数

时间:2023-07-01 理论教育 版权反馈
【摘要】:对于S7-1200PLC串口通信模块和通信板的自由口通信,必须组态接收的消息开始和结束条件以使其能正常接收数据。③消息定时器时间已到并终止消息。通过字符间超时识别消息结束接收的两个字符之间的时间间隔如果超过设置的“字符间间隙超时”,则认为消息结束,如图9-31所示。以固定消息长度检测消息结尾在接收到指定数量的字符后,视为消息结束。

自由口通信接收参数设置优化为:设定自由口通信接收参数

对于S7-1200PLC串口通信模块和通信板的自由口通信,必须组态接收的消息开始和结束条件以使其能正常接收数据。

1.消息开始

以CM1241 RS232通信模块为例,在“属性>常规”选项卡,选择“RS232接口>组态所接收的消息>消息开始”,组态消息开始条件,如图9-23所示。

978-7-111-58391-2-Chapter09-35.jpg

图9-23 组态消息开始

(1)以任意字符开始

任何字符都可作为消息接收的开始。

(2)以特殊条件开始

可任选其中的一种或几种的组合。选择组合条件时按照“换行识别>线路空闲>字符或序列”的先后次序来判断是否符合消息开始接收。检查组合条件时,如有一个没满足则将从第一个开始重新启动检查。

1)“通过换行识别消息开始”:指定在接收中断字符后开始消息接收。

2)“通过线路空闲识别消息开始”。

空闲线定义为传输线路上安静或空闲时间,默认是40位时间,最大值为65535,最大为8s。对没有特定起始字符或指定了消息间最小时间间隔的,可使用“通过线路空闲识别消息开始”作为消息开始条件。接收消息功能会忽略在空闲线时间到之前接收到任何字符,并按组态时间重新启动空闲线定时器,在空闲线时间到之后,将所有接收到的字符存入消息缓冲区,如图9-24所示。

①字符。

②重启线路空闲定时器。

978-7-111-58391-2-Chapter09-36.jpg

图9-24 空闲线检测消息开始

③检测到线路空闲,并启动消息接收操作。

3)“通过单个字符识别消息开始”:接收到单一组态字符后开始接收。默认值为2(十六进制),即STX(ASCII),用户可自定义该消息起始字符。

4)“通过字符序列识别消息开始”:满足其中任何一个启用的字符序列均作为消息开始。“要定义的字符序列数”默认值为1,最多可设置为4组。每组字符序列最多可包含5个字符,每个字符均可被选择是否检测该字符,如不选择表示任意字符均可,如选择则输入该字符对应的ASCII码值。

•可定义连续5个字符开始接收,序列前数据被丢弃;

•也可约束其中连续或不连续的某几个字符;

•定义多组字符序列是或关系,有一个满足就开始接收。

以下举例说明,以CM1241发送端定义发送缓冲区DB3.DBB0~DB4.DBB8为例,在监视表输入待发送的0102030A0B0C0D0E0F字符序列,如图9-25所示,并且通过自由口编程发送数据到CM1241接收端。

978-7-111-58391-2-Chapter09-37.jpg

图9-25 CM1241发送端输入发送数据

在CM1241接收端定义的字符序列数为1组。帧开始序列1的第一个字符为A,第2、3个字符无约束,第4个字符为D,第5个字符无约束,如图9-26所示。

以CM1241的DB4.DBB0-DB4.DBB4接收缓冲区为例,当检测到第一个字符是0A,第4个字符是0D,而不论第2、3、5个字符是何字符,即认为满足消息结束条件。接收到如图9-27所示的字符序列。

2.消息结束

以CM1241RS232通信模块为例,在“属性>常规”选项卡,选择“RS232接口>组态所接收的消息>消息结束”,组态消息结束条件,如图9-28所示。

978-7-111-58391-2-Chapter09-38.jpg

图9-26 CM1241接收端定义字符序列

978-7-111-58391-2-Chapter09-39.jpg

图9-27 S7-1200 PLC接收到字符序列

注意:

与多个消息开始条件的判断不同,多个结束条件中满足任何一个,消息接收结束。

(1)通过消息超时识别消息结束

时间从满足开始条件标准后开始计时,如果消息接收超出设置的消息超时时间,将识别到消息结束,如图9-29所示。消息超时时间默认为200ms,可设置值为0~65535ms。

①接收的字符。

②满足消息开始条件,消息定时器启动。

③消息定时器时间已到并终止消息。

(2)通过响应超时识别消息结束(www.xing528.com)

时间从发送结束时开始计时,如果在发送数据后的设定时间内没有接收到通信伙伴的响应,将识别到消息结束,如图9-30所示。“响应超时时间”默认为200ms,可设置值为0~65535ms。

978-7-111-58391-2-Chapter09-40.jpg

图9-28 组态消息结束

978-7-111-58391-2-Chapter09-41.jpg

图9-29 通过消息超时识别消息结束

978-7-111-58391-2-Chapter09-42.jpg

图9-30 通过响应超时识别消息结束

在图9-30中:

①发送的字符。

②接收的字符。

③必须在该时间之前成功接收到第一个字符。

注意:

“通过响应超时识别消息结束”不能作为单独的结束条件,否则会在编译时报错。

(3)通过字符间超时识别消息结束

接收的两个字符之间的时间间隔如果超过设置的“字符间间隙超时”,则认为消息结束,如图9-31所示。“字符间间隙超时”默认值为48位时间,可设置值0~2500位时间。如果“字符间间隙超时”所设置的位时间根据波特率换算后超过8s,S7-1200PLC也只能接受最多8s。

①接收的字符。

②重启字符间定时器。

③字符间定时器时间已到并终止消息。

978-7-111-58391-2-Chapter09-43.jpg

图9-31 通过字符间超时识别消息结束

(4)通过最大长度识别消息结束

如果超过消息的最大长度,将识别到消息结束。可设置1~1023个字符的值。使用“通过最大长度识别消息结束”可以防止消息缓冲区超负荷运行。如果将该结束条件与“通过字符间超时识别消息结束”结合使用,在出现超时的情况下,即使未达到最大长度也会认为该字符帧有效并进行接收。

(5)以固定消息长度检测消息结尾

在接收到指定数量的字符后,视为消息结束。固定长度的有效范围是1~4096。如果所接收字符的帧长度与组态的固定帧长度不匹配,则在达到组态的固定帧长度之后接收到的所有字符都将被丢弃,直至检测到新的开始标准。如果将该结束条件与“通过字符间超时识别消息结束”结合使用,在出现超时的情况下,未达到固定帧长度则会输出一条错误消息并丢弃该帧。

(6)从消息读取消息长度

“从消息读取长度”作为消息结束条件时,在消息本身指定消息长度,在接收到指定长度的消息后,视为消息结束。

以下举例说明,以CM1241发送端定义发送缓冲区DB3.DBB0~DB3.DBB9为例,在监视表输入待发送的01 02 04 0A 0B 0C 0D 05 06 07字符,如图9-32所示,并且通过自由口编程发送数据到CM1241接收端。

978-7-111-58391-2-Chapter09-44.jpg

图9-32 CM1241发送端输入发送数据

在CM1241接收端定义“消息长度域的偏移量”、“长度域大小”、“数据后面的长度域未计入该消息长度”的字节数,以接收端定义DB4.DBB0~DB3.DBB10接收缓冲区为例,第3个字节DB4.DBB2为消息长度4个字节,DB4.DBB3~DB4.DBB6为接收到的4个字节长度的数据,并且在消息长度后有两个字节DB4.DBB7~DB4.DBB8不计入长度,如图9-33所示。

978-7-111-58391-2-Chapter09-45.jpg

图9-33 从消息读取消息长度

“从消息读取长度”作为消息结束条件时,实际收到的数据长度=长度偏移前的字节数+长度字节大小+读取的实际数据长度+不计入字节长度的字节数。

(7)通过字符序列识别消息结束

如果指定的字符出现在消息中的正确位置,则识别消息结束。

以下举例说明,字符1和字符3分别具有特定值6A和7A时识别消息结束,如图9-34所示,激活字符1和字符3的复选框,并输入字符值。当接收到6A字符,后跟任意一个字符,再接收到7A字符,后跟任意两个字符,即满足结束条件。6A序列前面的字符不是结束字符序列的组成部分,字符位置2、4和5中接收的值不相关,但必须接收它们才能满足结束条件。

3.接收缓冲区

S7-1200 PLC通信模块和通信板缓冲区大小为1KB,即1024字节。接收缓冲区默认设置为“缓冲区内接收的帧为20帧”,“防止重写”和“在启动时清空接收缓冲区”,如图9-35所示。如果缓存区中的信息超过20帧,后面的信息被自动丢弃,且不报错。如果发送一帧数据大于1024字节,缓冲区接收到数据达1024字节时,即使未满足结束条件,数据仍会由缓存区送给CPU,但会报错16#80E0。

978-7-111-58391-2-Chapter09-46.jpg

图9-34 通过字符序列识别消息结束

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈