接收线路的初始状态 (S7-300, S7-400) X27 (RS422/485) 接口 下表介绍了 X27(RS422/485) 接口子模块的参数。 使用 3964(R) 和 RK512 程序及打印机时, RS 485 模式不可用。 表格1-127 X27 (RS422/485) 接口模块 参数 说明 取值范围 默认值 接收线路的初始 状态 无:此设置只对具备总线能力的特 定驱动程序有意义。 无 信号 R(A) 5V,信号 R(B) 0V(断路检测)(2) 信号 R(A)5V,信号 R(B) 0V(断路 检测): 通过该设置,可在“全双 工 (RS 422) 四线制模式”下进行断 路检测。 信号R(A) 5V,信号 R(B) 0V(断路检测)(1) 信号 R(A) 0V,信号 R(B) 5V:该初 始状态对应于“半双工 (RS485) 两 线制模式”下的空闲状态(无激活 的发送器)。 无法通过该设置进行 断路检测。 信号 R(A) 0V,信号 R(B) 5V(1) 仅对于“全双工 (RS422) 四线制模式” (2) 仅在“全双工 (RS422) 四线制模式”和“半双工 (RS485)双线制模式”下,默认设置为信号 R (A) 0V,信号 R (B) 5V使用主站/从站拓扑结构时,用户程序中必须有一个相应的消息帧。示例: 主站向所有从站 发送一个带有地址信息的消息帧。所有从站均进行监听并将该地址与自身的地址相比较。如果地址相同,则被寻址的从站发送自己的应答信号。 所有从站的发送端必须能够切换到低阻抗。 多点连接中的 RS422 模式 在 RS422模式中使用主站/从站拓扑结构时: • 主站的发送端与所有从站的接收端互相连接。 • 从站的发送端与主站的接收端互相连接。 •只有主站的接收端和一个从站的接收端具有默认设置。 所有其它的从站功能均没有默认 设置。多点连接中的 RS485 模式 RS485操作中的一个拓扑结构: • 电缆对互相连接,用作所有节点的发送/接收线。 • 只有一个节点的接收端具有默认设置。所有其它的模块功能均没有默认设置。在模块属性对话框的“接口”部分,要针对不同的拓扑进行必要设置。 说明 当您在 RS422 多点或RS485 模式下运行 ASCII 驱动程序时,必须在用户程序中采取措施以 确保任一时间只有一个节点发送数据。如果两个用户发送数据,消息帧将被破坏。 接收缓冲区 (S7-300, S7-400) 模块的接收缓冲区下表介绍了模块接收缓冲区的参数。 表格 模块的接收缓冲区 - 程序 3964(R)/RK512/ASCII 驱动程序。
Modbus 通信(S7-300, S7-400) modbus 通信概述 (S7-300, S7-400) 系统环境中的位置 以下 Modbus说明阐述了 CP 341 (S7 300) 和 CP 441-2 (S7 400) 通信处理器上可重新加载 驱动程序的用法,以及Modbus/USS 模型中 ET 200S 1SI 模块的使用。 耦合功能 通过适当配备的通信模块和相关指令,用户可以在远程Modbus 控制系统(如 Modicon PLC 或 Honeywell TDC3000)与 SIMATIC S7之间建立通信连接。 RTU 格式的 GOULD-MODBUS 协议用于传输。如果将 SIMATIC S7 通信模块用作 Modbus主站,则函数代码 07、11 和 12 也可使用。 Modbus 协议 modbus协议是一种基于主站/从站和客户机/服务器体系结构的通信协议。 使用的程序是明码、异步半双工的程序。 数据传输无须握手。 SIMATICS7 用作 Modbus 从站 主站可主动发起传输,而 CP/S7 CPU 用作从站。 无法进行从从站到从站的帧通信。 SIMATICS7 用作 Modbus 主站 作为主站,通信模块将初始化传输,随后输出请求消息帧,在组态的应答监视时间内,等待来自从站的响应消息帧。 消息帧结构 “主站-从站”和/或“从站-主站”数据交换以从站地址 开始,是函数代码。 传输数 据。数据域的结构取决于使用的函数代码。 消息帧的Zui后传送的是 CRC 校验码。通信模块接通时,输出信号状态为 OFF(未激活)。用户可以在模块的属性对话框中或者通过用户程序中的指令组态 DTR/DSR 和 RTS/CTS 控制信 号的使用。 使用 RS232C伴随信号 RS232C 伴随信号可在以下情况下使用: • 在组态自动使用所有 RS232C 伴随信号后使用。 • 通过相应指令使用。有关详细信息,请参见“指令概述 (页 2107)”部分。 说明 组态自动使用 RS232C伴随信号后,将不能通过相应指令控制 RTS 和 DTR(请参见“指 令概述 (页 2107)”部分)!另一方面,始终可以通过相应指令读取所有 RS232C 伴随信号。 以下各节说明了控制和评估 RS232C 伴随信号的基本过程。伴随信号的自动使用 可按以下方式实现在通信模块上自动使用 RS232C 伴随信号: • 只要通信模块通过组态切换到自动使用RS232C 伴随信号的工作模式,模块便会将 RTS 线 路设置为 OFF,将 DTR 线路设置为 ON(通信模块做好使用准备)。 •这将阻止在 DTR 线路设置成 ON 之前收发消息帧。 只要 DTR 仍设置为 OFF,便不能通过 RS232C接口接收任何数据。如果执行发送作业,作业将被中止,并伴有相应的错误消息。 • 执行发送作业时,RTS 将设置为 ON并且参数化的数据输出等待时间将开始计时。 当数 据输出时间结束并且 CTS = ON 时,将通过 RS232C 接口发送数据。 •如果 CTS 线路在数据输出时间内未设置为 ON 以便可以发送数据,或者 CTS 在传输过程 中更改为OFF,发送作业会被中止,并生成错误消息。 • 一旦数据发送完毕且超过组态的清除 RTS 时间,RTS 线路将立即设置为 OFF。CP 不会等 待 CTS 更改为 OFF。• 一旦 DSR 线路设置为 ON,即可通过 RS232C 接口接收数据。如果通信模块的接收缓冲 区预警将要溢出,则通信模块将不会响应。 • 如果 DSR 从 ON 转变成OFF,激活的发送作业和数据接收都将取消,并产生错误消息。消 息“DSR = OFF(自动使用 V24信号)”将输入到通信模块的诊断缓冲区中。 说明 组态自动使用 RS232C 伴随信号后,将不能通过相应指令控制 RTS 和 DTR!有关详细信 息,请参见“指令概述 (页 2107)”部分。 说明 在模块的属性对话框中设置“清除 RTS时间”,以便使通信伙伴在 RTS 之前完整接收到 消息帧的Zui后的字符,并且发送作业也会取消。 “数据输出等待时间”也必须设置,这样通信伙伴才能在超时之前做好接收准备。Modbus 主站 (S7-300, S7-400) CP 341 (S7-300,S7-400) 通过 P_SND_RK (CP 341) 从 CPU 到通信模块的数据传输 (S7-300, S7-400) 激活通过指令 P_SND_RK 在输入 REQ 处的边沿信号来激活 MODBUS 函数代码的执行。 为 SEND 在 SF参数处输入“S”。 在 LADDR 处输入逻辑模块地址。 必须为扩展数据块输入“X”,作为伙伴 CPU 的区域类型。 不必为伙伴CPU (R_...) 的其他参数 指定值。 这样就确保了将执行函数代码所需要的参数传送到驱动程序。 数据源 当激活 P_SND_RK时,通过参数 DB_NO 和 DBB_NO 指定的源数据区传送到通信模块,长度 为 LEN。 长度指示 长度 LEN取决于所使用的函数代码。如果传送的数据数量与上面列出的各个函数代码的数据数量不同,则不会执行作业, P_SND_RK 通过输出ERROR 处的边沿来拒绝该作业。 SEND 源 DB 执行函数代码所需要的参数必须作为用户数据,输入到源数据区中。 “函数代码(页 2184)”部分的相应函数代码说明中详细描述了各个 P_SND_RK 源 DB。 生成消息帧到从站的请求消息帧是根据传送的 P_SND_RK 源数据生成的,并由通信模块发送。 驱动程序检查在 P_SND_RK处指定的长度 LEN 是否与此函数代码的长度相符。 如果不是,则不会执行作业,在 P_SND_RK 的输出 ERROR上生成一个边沿信号作为结束。 当使用上面列出的函数代码之外的其他函数代码时,也不会执行激活的作业,而是通过 P_SND_RK 上的ERROR 来结束该作业。 请求消息帧中的“字节计数器”和“CRC 校验”元素是由通信模块生成的;不需要 P_SND_RK 源 DB中的条目。 写入函数的作业完成 对于写入函数代码,在接收到响应消息帧且无错误后,激活的 P_SND_RK 完成。 这通过P_SND_RK 的输出 DONE 上的边沿信号传送到 SIMATIC 用户程序。如果在消息帧通信过程中检测到错误,或者从站发送了错误代码响应消息帧,则通过输出 ERROR 的边沿信号报告这一情况。读取函数的作业完成 对于读取函数,在接收到响应消息帧且无错误,并且将接收的数据完全传送到 CPU 之后,激 活的 P_SND_RK完成。 这通过 P_SND_RK 的输出 DONE 上的边沿信号传送到 SIMATIC 用户程序。 此时,接收的数据已经在 CPU中可用。如果在消息帧通信过程中检测到错误,或者从站发送了错误代码响应消息帧,则通过输出 ERROR 的边沿信号报告这一情况。在这种情况下,不会传送任何接收数据到 CPU。 作业完成时的 STATUS 条目 对于这些实例,在作业完成时通过 P_SND_RK上的 ERROR 进行指示,在状态参数中输 入附加的错误代码。 可以通过此错误代码确定错误的确切原因 通过 P_RCV_RK(CP 341) 从通信模块到 CPU 的数据传输 (S7-300, S7-400) 先决条件 所有读取函数代码都需要P_RCV_RK。 数据目标地址 当指令 P_RCV_RK 准备好接收数据时,它接受从通信模块接收到的数据,将数据输入到 在参数DB_N0 和 DBB_N0 中指定的数据目标地址。 如何显示数据接收 通过输出 NDR 上的边沿信号来通知用户在 CPU中接收到数据。 此处,接收的数据块长度显示在参数 LEN 中。 整个 modbus 作业的完成情况通过指令 P_SND_RK 的输出DONE 指示。 如何处理错误 在发生接收或发送错误时,不会传送任何数据到 CPU。 在这种情况下,将结束指令 P_SND_RK并且输出 ERROR 上将出现沿信号。 P_RCV_RK 目标 DB 通过读取函数代码接收到的用户数据输入到 P_RCV_RK目标地址区域。 有关每个 P_RCV_RK 目标 DB 的详细说明,请参见“函数代码 (页 2184)”部分。输入数据的长度显示在 P_RCV_RK 的参数 LEN 中。