上海卓曙自动化设备有限公司
2019/5/10 10:45:47CPU 支持下列基于字符的串行协议的点对点通信 (PtP):
PtP 可提供大的自由度和灵活性,但需要在用户程序中包含大量的实现。
PtP 可用于实现多种可能性:
这种类型的 PtP 通信属于串行通信,它使用标准 UART 来支持多种波特率和奇偶校验选项。RS232 和 RS422/485 通信模块 (CM 1241) 以及 RS485 通信板 (CB 1241) 提供了用于执行 PtP 通信的电气接口
通过 PROFIBUS 或 PROFINET 的 PtP
V4.1 版的 S7-1200 CPU 与 STEP 7 V13 SP1 一起使用可以扩展 PtP 的功能,使用户能够使用 PROFINET 或 PROFIBUS 分布式 I/O 机架与各种设备(RFID 阅读器、GPS 设备和其它设备)通信。
出于这个原因,S7-1200 支持两组 PtP 指令:
用于 S7-1200 的 V4.1版本时,可以对所有类型的点对点通信使用点对点指令:串行通信、基于 PROFINET 的串行通信和基于 PROFIBUS 的串行通信。STEP 7 提供早期点对点指令的目的仅是为了支持现有程序。无论对于 V4.1 CPU 或 V4.0 还是更早版本的 CPU,早期指令仍然有效。无须对之前程序的指令进行转换。
组态通信端口
您可以使用以下各种方法组态通信接口:
窗口中的“属性”(Properties) 选项卡显示所选 CM 或 CB 的参数。 选择“端口组态”(Port configuration) 以编辑以下参数:
对于 CM 1241 RS232 和 CB RS485(除仅 CM 1241 RS232 支持的流控制外),无论是组态 RS232 或 RS485 通信模块还是 RS485
通信板,端口组态参数都是相同的。 但是,参数值可以不同。对于 CM 1241 RS422/485,您还具有下列所示的额外端口组态选项。 CM 1241 RS422/485 模块的 422 模式还支持软件流控制。
选择“端口组态”(Port configuration) 以编辑以下RS422/485 参数:
1、“工作模式”(Operating mode):
– 全双工 (RS422) 四线制模式(点对点连接)
– 全双工 (RS422) 四线制模式(多点主站)
– 全双工 (RS422) 四线制模式(多点从站)
– 半双工 (RS485) 两线制模式
2、“接收线路初始状态”(Receive line initial state):
– 无
– 正向偏置(信号 R(A) 0V、信号 R(B) 5V)
STEP 7 用户程序还可通过 Port_Config 指令组态端口或更改现有组态。 指令主题提供更多关于工作模式和初始线路状态以及其它参数的详细信息。
参数 | 定义 |
波特率 | 波特率的默认值为 9.6 Kbps。 有效选项有: 300 波特、600 波特、1.2 Kb、2.4 Kb、4.8 Kb、9.6 Kb、19.2 Kb、38.4 Kb、57.6 Kb、76.8 Kb 和 115.2 Kb。 |
奇偶校验 | 奇偶校验的默认值是无奇偶校验。 有效选项有: |
无奇偶校验、偶校验、奇校验、传号(奇偶校验位始终设为 | |
1)和空号(奇偶校验位始终设为 0)。 | |
每个字符的数据位数 | 字符中的数据位数。 有效选择为 7 或 8。 |
停止位的数目 | 停止位的数目可以是1或 2。 默认值是 1。 |
流控制 | 对于 RS232 通信模块,可以选择硬件或软件流控制 。 |
如果选择硬件流控制,则可以选择是 RTS 信号始终激活还是切换 RTS。 | |
如果选择软件流控制,则可以定义 XON 和 XOFF 字符。 | |
RS485 通信接口不支持流控制。 CM 1241 RS422/485 模块的 422 | |
模式支持软件流控制。 | |
等待时间 | 等待时间是指 CM 或 CB 在断言 RTS 后等待接收 CTS 的时间,或者在接收 XOFF 后等待接收 XON 的时间,具体取决于流控制类型。 如果在通信接口收到预期的 CTS 或 XON 之前超过了等待时间,CM 或 CB 将中止传送操作并向用户程序返回错误。 等待时间,以毫秒表示。 范围是 0 到 65535 毫秒。 |
工作模式 | 选择工作模式 RS422 或 RS485 以及网络组态。 |
接收线路初始状态 | 选择偏置选项。 有效值为无、正向偏置和反向偏置。 反向偏置用于检测电缆断线。 |
管理流控制
流控制是指为了不丢失数据而用来平衡数据发送和接收的一种机制。 流控制可确保传送设备发送的信息量不会超出接收设备所能处理的信息量。 流控制可以通过硬件或软件来实现。 RS232 CM 支持硬件及软件流控制。 RS485 CM 和 CB 不支持流控制。 CM 1241 RS422/485 模块的 422 模式支持软件流控制。 可在组态端口 时或使用 PORT_CFG 指令流控制类型。
硬件流控制通过请求发送 (RTS, Request To Send) 和允许发送 (CTS, Clear To Send) 通信信号来实现。 对于 RS232 CM,RTS 信号从引脚 7 输出,而 CTS 信号通过引脚 8 接收。
RS232 CM 是 DTE(Data Terminal Equipment,数据终端设备)设备,其将 RTS 断言为输出并将 CTS 作为输入来监视。
硬件流控制: RTS 切换
如果为 RS232 CM 启用 RTS 切换的硬件流控制,则模块会将 RTS 信号设置为激活状态以发送数据。 它还会监视 CTS 信号以确定接收设备是否能接收数据。 CTS 信号激活后,只要 CTS 信号保持激活状态,模块便可发送数据。 如果 CTS 信号变为非激活状态,则传送必须停止。
CTS 信号变为激活状态时,传送会继续执行。 如果 CTS 信号在组态的等待时间内未激活,则模块会中止传送并向用户程序返回错误。 在端口组态中等待时间。
对于需要“传送已激活”信号的设备,适合使用 RTS 切换流控制。 例如,无线调制解调器使用 RTS 作为“键”信号来激励无线发送器。 RTS 切换流控制对于标准电话调制解调器不起作用。 对电话调制解调器使用“RTS 始终激活”选项。
硬件流控制: RTS 始终激活
在“RTS 始终激活”模式下,CM 1241 默认情况下将 RTS 设置为激活状态。 设备(如电话调制解调器等)监视来自 CM 的 RTS 信号,并将该信号用作允许发送信号。 调制解调器仅在 RTS 处于激活状态时才向 CM 传送数据,即,电话调制解调器在见到激活的 CTS 信号后发送数据。如果 RTS 处于非激活状态,电话调制解调器不向 CM 传送数据。
要使调制解调器随时都能向 CM 发送数据,请组态“RTS 始终激活”硬件流控制。 CM 因此会将 RTS 信号设置为始终激活。 即使模块无法接受字符,CM 也不会将 RTS 设置为非激活状态。 传送设备必须确保不会使 CM 的接收缓冲区超负荷运行。
利用数据终端就绪 (DTR) 和数据设备就绪 (DSR) 信号
对于这两种硬件流控制类型的任何一种,CM 都会将 DTR 设置为激活状态。 只有当 DSR信号变为激活状态时,模块才会进行传送。 仅在发送操作开始时评估 DSR 的状态。 如果 DSR 在传送操作开始后变为非激活状态,将不能暂停传送操作。
软件流控制
软件流控制使用消息中的特殊字符来实现流控制。 将组态表示 XON 和 XOFF的十六进制字符。
XOFF 指示传送必须停止。 XON 指示传送可以继续。 XOFF 和 XON不得是相同的字符。传送设备从接收设备收到 XOFF 字符时,将停止传送。 传送设备收到 XON字符时,传送又继续进行。 如果 CM 在通过端口组态的等待时间内没有收到 XON 字符,它将中止传送并向用户程序返回错误。
软件流控制需要全双工通信,因为在传送过程中接收伙伴必须能够将 XOFF 发送到传送伙伴。 软件流控制只能用于仅包含 ASCII 字符的消息。 二进制协议无法使用软件流控制。
在 CPU 可进行 PtP 通信前,必须组态传送(或发送)消息和接收消息的参数。 这些参数决定了在向目标设备传送消息或从目标设备接收消息时的通信工作方式。
在 CPU 的设备组态中,通过设置所选接口的“传送消息组态”(Transmit message configuration) 属性,来组态通信接口传送数据的方式。
还可以使用 Send_Config指令,从用户程序动态组态或更改传送消息参数。在用户程序中通过 Send_Config 指令设置的参数值会覆盖“传送消息组态”(Transmit message configuration) 属性。 请注意,发生掉电时,CPU 不会保留通过 Send_Config 指令设置的参数。
在 CPU 的设备组态中,可以组态通信接口接收数据以及识别消息开始和结束的方式。 在所选接口的“接收消息组态”(Receive message configuration) 属性中设置这些参数。
还可以在用户程序中使用 Receive_Config 指令,
在用户程序中通过 Receive_Config 指令设置的参数值会覆盖“接收消息组态”(Receive message configuration) 属性。 请注意,发生掉电或转为 STOP 状态时,CPU 不会保留通过 RCV_CFG 指令设置的参数。
消息开始条件
用户可以决定通信接口识别消息开始的方式。 在满足所组态的结束条件之前,开始字符以及组成消息的字符会一直进入接收缓冲区。
可以多个开始条件。 如果多个开始条件,则只有在满足所有开始条件后才认为消息开始。 例如,如果用户组态了线路空闲时间和特定开始字符,CM 或 CB 将首先查找要满足的线路空闲时间要求,然后 CM 将查找的开始字符。 如果收到其它某个字符而不是的开始字符,CM 或 CB 将通过再次查找线路空闲时间来重新启动消息开始条件搜索。
参数 | 定义 |
以任意字符开始 | “任意字符”条件,成功接收任何字符都将表示消息开始。 该字符是消息中的个字符。 |
线路中断 | “线路中断”条件在接收中断字符后开始消息接收操作。 |
线路空闲 | “线路空闲”条件在接收线路空闲或平静了位时间后开始消息接收操作。 一旦出现该条件,即启动消息接收。 ① 字符 ② 重启线路空闲定时器 ③ 检测到线路空闲并启动消息接收操作 |
参数 | 定义 |
特殊条件: | 通过特殊字符指示消息开始。 然后,该字符便成为消息中的个字符。 |
通过单个字符识别消息 | 在该特定字符前接收到的任何字符都将被丢弃。 默认字符是 STX。 |
开始 | |
特殊条件: | 通过多四个组态序列中的一个特殊字符序列来指示消息开始。 |
通过字符序列识别消息 | 可以为每个序列多 5 个字符。 |
开始 (Recognize | 对于每个字符位置,可以一个特定的十六进制字符,或者在序列匹配时 |
message start with a | 忽略该字符(通配符字符)。 |
character sequence) | 字符序列中后一个特定字符终止该开始条件序列。 |
程序根据组态的开始条件对进入序列进行评估,直到满足开始条件为止。 | |
只要满足了开始序列,就会开始评估结束条件。 | |
多可组态四个特定字符序列。 | |
如果几个不同的字符序列都指示消息开始,则使用多序列开始条件。 | |
如果与其中一个字符序列相匹配,消息就会开始。 |
检查开始条件的顺序是:
示例组态: 消息在两个字符序列出现一个时开始
请注意以下消息开始条件组态:
对于该组态,只要出现其中一个序列,即会满足开始条件:
消息结束条件
用户还可以组态通信接口识别消息结束的方式。 可以组态多个消息结束条件。 如果出现组态条件中的任何一个,消息就会结束。
例如,可以采用消息超时 300 ms、字符间超时 40 个位的时间以及大长度 50个字节作为消息结束的结束条件。 如果接收消息的时间超过 300ms、任意两个字符间的间隔超过 40 个位的时间或接收到 50 个字节,消息即会结束。
示例组态: 通过字符序列结束消息
请注意以下消息结束条件组态:
在这种情况下,当接收到两个连续的 0x6A 字符(后跟任意两个字符)时,即满足结束条件。 0x6A 0x6A 序列前面的字符不是结束字符序列的组成部分。 终止结束字符序列时需要在 0x6A 0x6A 序列后面加两个字符。 字符位置 4 和 5 中接收的值不相关,但必须接收它们才能满足结束条件。
说明 如果想用字符序列来指示消息的结束,应将该序列放置在后一个字符位置。在上面的示例中,如果想用 0x6A 0x6A 结束不带任何尾随字符的消息,应在字符位置4和5中组态 0x6A。
在消息中消息长度
选择在消息中包括消息长度这一特殊条件时,必须提供三个用于定义消息长度相关信息的 参数。
实际消息结构会因所用的协议而变化。 三个参数如下所示:
结束字符可不连续。 “长度 m”值可用于大小不包含在长度字段中的校验和字段的长度。