指令命令 V24_STAT/SET的任务 通过 V24_STAT 指令命令可确定每个 RS232C 伴随信号的状态。 V24_SET 可用于控制 DTR 和 RTS输出信号。模块接通时,输出信号状态为 OFF(未激活)。 用户可以在模块的属性对话框中组态 DTR/DSR 和 RTS/CTS控制信号的使用方式,或者在用户 程序中通过指令来控制这些信号。 使用 RS232C 伴随信号 RS232C伴随信号可在以下情况下使用: • 可以在组态自动使用所有 RS232C 伴随信号后使用 • 可以在组态数据流控制 (RTS/CTS)后使用 • 可以通过指令 V24_STAT 和 V24_SET 使用 说明 组态自动使用 RS232C 伴随信号后,无法通过V24_SET 指令实现 RTS/CTS 数据流控制以 及 RTS 和 DTR 控制! 组态 RTS/CTS 数据流量控制后,无法通过V24_SET 实现 RTS 控制! 另一方面,始终可以通过 V24_STAT 指令读取所有 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 伴随信号后,无法通过 V24_SET 指令实现 RTS/CTS数据流控制以 及 RTS 和 DTR 控制! 必须在模块的属性对话框中设置“清除 RTS 时间”,以便使通信伙伴在 RTS 之前完整接收到消息帧的Zui后的字符,并且发送作业也会取消。 必须设置“数据输出等待时间”,以便通信伙伴在该时间结束前可以做好接收准备。
软件握手/硬件握手(S7-300, S7-400) 简介 用于控制两个通信伙伴之间数据流的握手协议。 使用握手程序可以防止两个设备以不同的传输率操作时在传输期间产生数据丢失。 握手程序 握手有两种基本类型: • 软件握手(例如 XON/XOFF) • 硬件握手(例如RTS/CTS) 在通信模块上按照以下方式执行数据流控制: • 一旦模块通过组态切换到使用流控制的工作模式,模块便会发送 XON字符或将 RTS 线路 设置为 ON。 • 如果在接收缓冲区溢出(接收缓冲区的大小:4096 字节)之前达到已组态的消息帧数或 者50 个字符, 模块会发送 XOFF 字符或将 RTS 线路设置为 OFF。 如果通信伙伴不管是否出现上述情况仍然继续发送数据,接收缓冲区将溢出,并生成错误消息。 Zui后一个消 息帧中接收到的数据将被丢弃。 • 一旦 S7-CPU获取一个消息帧且接收缓冲区已做好接收准备,模块就会发送 XON 字符或将 RTS 线路设置为 ON。 • 如果模块接收到 XOFF字符或 CTS 控制信号设置为 OFF,模块将中断传输。 如果在组态 的时间过后既没有接收到 XON 字符,CTS 也没有设置为ON,则传输将被中止,并在模 块的错误消息区中输入相应的错误消息 (0708H)。 说明 在组态 RTS/CTS数据流控制后,必须完整发送插头连接的接口信号。 组态 RTS/CTS 数据 流量控制后,无法通过 V24_SET 实现 RTS 控制!使用 3964(R) 的数据传输 (S7-300, S7-400) 使用 3964(R) 程序进行数据传输 (S7-300,S7-400) 有关协议与通信模块的分配关系,请参见: 组件和接口概述 (页 2106)控制字符 (S7-300,S7-400) 简介 RK 512 计算机连接提供很gaoji别的数据完整性。 数据传输期间,3964(R) 程序将控制字符添加到信息数据(数据链路层)。 这些控制字符使得通信伙伴可以检查数据是否已全部无 错到达。 3964(R) 程序的控制字符3964(R) 程序将分析以下控制代码: • STX(Start of Text,文本开始);要传输的字符串的起点 •DLE(Data Link Escape,数据链路转义);数据连接转义 • ETX(End ofText,文本结束);要传输的字符串的终点• BCC(Block Check Character,块校验字符)(jinxian3964(R)) • NAK(Negative Acknowledge,否定确认) 说明 如果 DLE作为信息字符串传输,则要发送两次,以便在发送线路(DLE 副本)上建立和 释放连接期间,将它与控制代码 DLE 区分开来。接收器将恢复 DLE 副本。 优先级 使用 3964(R) 程序时,必须为一个通信伙伴指定较高的优先级,为另一个伙伴指定较低的优先级。 如果两个伙伴开始建立连接,则优先级较低的伙伴将延迟其发送请求。 块校验和 (S7-300, S7-400) 块校验和 使用3964(R) 传输协议时,通过额外发送块校验和字符 (BCC)增强数据完整性。块检验和是已发送或已接收块的纵向偶校验(对所有数据字节执行 EXOR 操作)。 从建立连接后的第一个用户数据字节(消息帧的第一个字节)开始其计算,在释放连接时的 DLE ETX 代码之后结束。 说明 如果出现 DLE副本,则在计算 BCC 时将 DLE 代码计算两次。 使用 3964(R) 发送数据 (S7-300, S7-400)发送时的数据传输过程 下图说明了使用 3964(R) 程序发送数据时的传输顺序。建立发送连接 要建立连接,3964(R)程序将发送控制代码 STX。如果通信伙伴在确认延时时间结束前以 DLE 代码进行响应,则程序将切换至发送模式。 如果通信伙伴以 NAK或任何其它控制代码(DLE 或 STX 除外)进行应答,或在确认延时时 间到期之前无响应,则程序将重复建立连接。尝试建立连接失败的次数达到定义的次数后,程序将中止连接建立,并将 NAK 代码发送给通信伙伴。 通信模块会在错误消息区中输入相应的错误编号。 发送数据 如果成功建立了连接,则使用选择的传输参数将通信处理器输出缓冲区中包含的用户数据发 送给通信伙伴。伙伴将监视引入字符的间隔时间。 两个字符的间隔时间不得超过字符延时 时间。 如果通信伙伴在激活的发送操作期间发送 NAK控制代码,则程序将中止块的传输,并按上 述步骤从建立连接开始重试。 如果发送了其它代码,程序将等待字符延时时间结束,然 后发送NAK 代码以将通信伙伴的模式更改为空闲模式。 程序将通过 STX 建立连接以重 新开始发送数据。 释放发送连接一旦发送了缓冲区中的内容,程序将添加代码 DLE、ETX 和块校验和 BCC(仅使用 3964R) 作为结束标识符,并等待确认代码。如果通信伙伴在确认延时时间内发送 DLE 代码,则说 明数据块已无错接收。 如果通信伙伴以 NAK、任何其它代码(DLE除外)或损坏的代码进 行响应,或在确认延时时间结束之前无响应,则程序将通过 STX 建立连接以重新开始发送 数据。尝试发送数据块的次数达到定义的次数后,程序将停止尝试,并将 NAK 发送给通信伙伴。通 信模块将在错误消息区中报告该错误。建立接收连接在空闲模式下,如果没有要处理的发送作业,程序将等待通信伙伴建立连接。 如果通过 STX 建立连接期间没有可用的空接收缓冲区,则将开始400 ms 的等待时间。 如 果此时间后仍没有空接收缓冲区,则系统程序将在模块的错误消息区中报告错误,程序 将发送 NAK并返回空闲模式。 否则,程序将发送 DLE 并按上述步骤接收数据。 如果空闲程序接收了 STX 或 NAK以外的任何控制代码,它将等待字符延时时间结束,发送代码 NAK。 通信模块将在模块的错误消息区中报告该错误。 接收数据成功建立连接后,到达的接收字符将存储在接收缓冲区中。 如果接收到两个连续的 DLE 代 码,则只有其中一个存储在接收缓冲区中。每接收一个字符,程序都要等到字符延时时间结束后再接收下一个字符。 如果字符延时时 间结束后还没收到另一个字符,则将 NAK发送给通信伙伴。 通信模块将在模块的错误消息 区中报告该错误。 3964(R)程序不启动重复。如果接收过程中发生传输错误(丢失字符、帧出错、奇偶校验出错等),程序将继续接收直 到连接关闭为止。 随后将 NAK发送给通信伙伴。 重复以上步骤。 如果尝试传输的次数 达到静态参数设置中定义的次数后仍无法接收块,或者通信伙伴没有在 4秒的块等待时间内 开始重复,则程序将中止接收操作。 通信模块将在模块的错误消息区中报告第一个传输错 误和Zui后一个中止。 释放接收连接如果 3964 程序检测到一个 DLE ETX 字符串,它将结束接收操作并通过向通信伙伴发送 DLE信号来确认已成功接收到块。如果在接收到的数据中发现错误,程序将向通信伙伴输出 NAK 信号。 重复以上步骤。 如果 3964R程序识别出字符串 DLE ETX BCC,它将停止接收并将接收到的块校验字符与内部 计算的纵向奇偶校验进行比较。 如果 BCC正确并且没有发生其它接收错误,则 CP 将向通信 伙伴发送 DLE 代码。 如果 BCC 正确并且没有发生其它接收错误,则 3964R程序将发送 DLE 返回空闲模式。 如果 BCC 故障或发生其它接收错误,则将 NAK 发送给通信伙伴。 重复以上步骤。