使用 3964(R) 发送数据 (S7-1500) 为发送建立连接 3964(R) 程序发送 STX 控制字符以建立连接。 如果通信伙伴在 acknowledgment delay time 结束前以 DLE 字符进行响应,则程序将切换至发送模式。 如果通信伙伴以 NAK 或任何其它字符(DLE 或 STX 除外)进行应答,或 acknowledgment delay time 无响应结束,则程序将再次尝试建立连接。 尝试建立连接失败的次数达到组态的 次数后,程序将取消连接建立,并将 NAK 字符发送给通信伙伴。 通信模块会输出一条相应 的错误消息。 发送数据 如果成功建立了连接,则会将通信模块的输出缓冲区中所包含的用户数据连同所选择的传输 参数一起发送给通信伙伴(发送作业期间,用户数据中识别到的 DLE 将被发送两次)。 通 信伙伴会监视引入字符间的时间间隔。 两个字符的间隔时间不得超过字符延时时间。 在连 接建立后立即开始监视字符延时时间。 如果通信伙伴在激活的发送操作期间发送 NAK 字符,则程序将取消该块,并按上述步骤从 建立连接开始重复此块。 如果发送了其它字符,则程序将首先等待字符延时时间结束,然 后发送 NAK 字符以将通信伙伴设置为空闲状态。 然后,程序通过 STX 建立连接以重新开始 发送数据。 发送期间连接终止 一旦发送了缓冲区中的内容,程序将添加 DLE 和 ETX 字符以及块校验和 BCC(jinxian 3964R) 作为结束标识符,然后等待确认代码。如果通信伙伴在 acknowledgment delay time 内发送 DLE 字符,则说明已无错接收数据块。 如果通信伙伴以 NAK、任何其它字符(DLE 除外)或 损坏的字符码进行响应,或 acknowledgment delay time 无响应结束,则程序将通过 STX 建 立连接以重新开始发送数据。 尝试发送的次数达到组态的次数后,程序将停止该过程,并将 NAK 发送给通信伙伴。 通信 模块会输出一条相应的错误消息。 使用 3964(R) 接收数据 (S7-1500) 为接收建立连接 在空闲状态下,如果没有要处理的发送作业,则程序将等待通信伙伴建立连接。如果将 DLE 字符在帧中作为信息字符传输,则在连接建立和终止期间会发送该字符两次(DLE 副本),以区分于 DLE 控制字符。 接收器将恢复 DLE 副本。 优先级 在 3964(R) 程序中,必须为一个通信伙伴分配较高的优先级,为另一个伙伴分配较低的优先 级。 如果两个伙伴同时开始建立连接,则低优先级的伙伴将取消其发送作业。 块检查字符 (S7-1500) 块检查字符 使用 3964R 传输协议时,可通过发送附加的块检查字符(BCC = 块检查字符)来增强数据安 全性。 块检查字符是已发送或已接收块的偶纵向奇偶校验(所有数据字节的 EXOR 逻辑操作)。 其 计算开始于连接建立后的第一个用户数据字节(帧的第一个字节),在连接终止时的 DLE ETX 字符后结束。 说明 通过 DLE 副本,DLE 字符被包括在 BBC 计算中两次。
如果在通过 STX 建立连接期间没有可用的空闲接收缓冲区,则等待时间开始(等待时间 = acknowledgment delay time - 10 ms,但Zui多为 400 ms)。 如果此时间结束后没有可用的 空闲接收缓冲区,则会生成一条错误消息。此程序将发送 NAK 字符并返回空闲状态。 否则, 程序将发送 DLE 并按上述步骤接收数据。 应为两个通信伙伴设置相同的 acknowledgment delay time 值。 如果程序在空闲状态下接收了除 STX 或 NAK 以外的任何字符,则它将等待字符延时时间 (CDT) 结束,然后发送 NAK 字符。 通信模块会输出一条相应的错误消息。 接收数据 成功建立连接后,引入的接收字符将保存在接收缓冲区中。 如果接收到两个连续的 DLE 字 符,则只有其中一个保存在接收缓冲区中。 在建立连接以及每个接收字符后,程序会在字符延时时间期间等待下一个字符。 如果字符 延时时间结束后还没收到另一个字符,则将 NAK 发送给通信伙伴。 通信模块会输出一条相 应的错误消息。 然后将重试。 如果接收过程中发生传输错误(帧错误、奇偶校验错误等),程序将继续接收数据直到连接 终止,然后将 NAK 发送给通信伙伴。 然后将重试。 如果尝试传输的次数达到指定的次数后 仍无法在不出现错误的情况下接收块,或者通信伙伴没有在 4 秒的块等待时间内开始重试, 则程序将取消接收操作。 通信模块将报告第一个受损的传输和Zui终的取消。 为接收建立连接 如果 3964 程序检测到一个 DLE ETX 字符串,则它将终止接收操作并通过向通信伙伴发送 DLE 来确认已成功接收到块。 接收出错时,会将 NAK 发送给通信伙伴。 然后将重试。 3964R 程序在检测到 DLE ETX BCC 字符串后会终止接收操作。它将接收到的块检查字符 BCC 与内部计算的纵向奇偶校验加以比较。如果 BCC 正确并且没有发生其它接收错误,则 3964R 程序将发送 DLE 然后返回空闲状态。 通信模块通知控制系统有新接收数据。 如果 BCC 有故障或发生其它接收错误,则会将 NAK 发送给通信伙伴。 然后将重试。通过 Modbus RTU 通信 (S7-1500) 与 Modbus RTU 建立串行连接的程序 (S7-1500) 要求 • 已设置硬件并且存在到链路伙伴的电气连接。 • 已在 STEP 7 (TIA Portal) 中创建项目并且 CPU 已插入到硬件组态中。 步骤 - 硬件组态 1. 将 CM PtP 通信模块插入硬件组态中。 2. 选择自由端口/Modbus 协议。 注:对于 Modbus RTU,CPU 启动期间使用 Modbus_Comm_Load 指令设置大多数通信参数。 3. 根据报文长度,确定是否要激活“针对多短帧情况进行性能优化”(Performance optimized for many short frames) 参数。 步骤 - 编程 1. 创建数据结构,该结构包括要传送的数据。 2. 将 Modbus_Comm_Load 指令集成到循环序列以便进行通信模块的参数分配。 3. 在 PORT 输入处互连系统变量的 HWID。 4. 调用指令,直到在 DONE 输出处显示成功执行。之后不要再次调用该指令,除非您想更改通 信参数。 作为 Modbus 主站的操作: 1. 插入 MODBUS (RTU) 库的 Modbus_Master 指令: 2. 在 BUFFER 输入处互连包含要发送数据的数据结构。 3. 在 Modbus_Comm_Load 的 MB_DB 输入处互连 Modbus_Master 指令的背景数据块。 注:运行期间,REQ 输入处的每个上升沿将处理指定的作业一次。必须调用该块,直到 DONE 指示已将数据传送到模块。 发生错误时,如果设置 ERROR 一次并在 STATUS 中显示相应的信息,则表示没有传送数据。 作为 Modbus 从站的操作: 1. 插入 MODBUS (RTU) 库的 Modbus_Slave 指令。 2. 互连包含 Modbus 保持寄存器的数据结构。 3. 在 MB_ADDR 参数处输入 Modbus 从站地址。 4. 在 Modbus_Comm_Load 的 MB_DB 输入处互连 Modbus_Slave 指令的背景数据块。 注:运行期间 NDR 输出处的高电平表示新数据已接收并存储在指定的数据区。modbus 通信概述 (S7-1500) Modbus RTU 通信 Modbus RTU(远程终端设备)是用于网络中通信的标准协议,使用电气 RS232 或 RS422/485 连接在网络中的 Modbus 设备间进行串行数据传输。 Modbus RTU 使用主/从站网络,其中整个通信仅由一个主站设备触发,而从站只能响应主站 的请求。主站将请求发送到从站地址并且只有该从站地址响应该命令(例外情况:发送给从 站地址 0、未被从站确认的广播帧)。 使用的程序是明码、异步半双工的程序。数据传输无须握手。 系统环境中的位置 下列 Modbus 描述指的是相应通信模块的使用。 • CM PtP RS232 HF • CM PtP RS422/485 HF • CM PtP (ET 200SP) 耦合功能 借助相应的通信模块和相关指令,用户可在远程 Modbus 控制系统与 SIMATIC S7 之间建立 通信连接。 RTU 格式的 GOULD-MODBUS 协议用于传输。 功能代码 01、02、03、04、05、06、08、15 和 16 用于作为 Modbus 从站的通信模块与 主站系统之间的通信(请参见 功能代码 (页 2092))。 如果将 SIMATIC S7 通信模块作为 Modbus 主站,则功能代码 11 和 12 同样适用。 SIMATIC S7 用作 Modbus 从站 主站可主动传输数据,通信模块将用作从站。 无法进行从从站到从站的帧通信。 指令 Modbus_Slave 根据映射规范使数据在 SIMATIC 数据区可用,或者存储这些数据。SIMATIC S7 用作 Modbus 主站 作为主站,通信模块将初始化传输,随后输出请求帧,然后在组态的应答监视时间内,等待 来自从站的响应帧。如果从站没有响应,主站将根据组态在输出错误消息之前重复此请求。 帧结构 “主站-从站”和/或“从站-主站”数据交换以从站地址 开始,然后是功能代码。随后传输数 据。数据字段的结构取决于使用的功能代码。帧的Zui后传送的是 CRC 校验码。从站地址 从站地址范围可介于 1 到 247(字节)或 1 到 65535(字)。该地址用于对总线中所定义 的从站进行寻址。 广播消息 主站使用从站地址 0 对总线上的所有从站进行寻址。 广播消息仅允许与写功能代码 05、06、15 和 16 相结合。 从站不会对广播消息发出响应帧。 数据域 DATA 数据域 DATA 用于传送功能代码特定数据,例如: • 字节数、线圈起始地址、寄存器起始地址、线圈数量和寄存器数量等等 有关详细信息,请参见“功能代码 (页 2092)”。