使用 ASCII 驱动程序的数据传输 (S7-300, S7-400) 使用 ASCII 驱动程序的数据传输 (S7-300, S7-400) 有关协议与通信模块的分配关系,请参见: 组件和接口概述 (页 2106) 简介 ASCII 驱动程序通过通信处理器和通信伙伴之间的点对点连接控制数据传输。 该驱动程序包 含物理层(第 1 层)。 在 S7 用户将完整的发送消息帧传输给通信处理器的过程中,消息帧的结构保持开放。 对于 接收方向,必须组态消息的结束标准。发送消息帧的结构与接收消息帧的结构可能会不同。 ASCII 驱动程序允许发送和接收任何结构的数据(包括所有可打印的 ASCII 字符以及从 00 到 FFH [带有 8 个数据位字符帧] 的所有其它字符或从 00 到 7FH [带有 7 个数据位字符帧]的所 有其它字符)。 使用 ASCII 驱动程序发送数据 (S7-300, S7-400) 发送数据 对于发送,在长度参数中指定调用各发送指令时要传输的用户数据字节数。 有关详细信息, 请参见“指令概述 (页 2107)”部分。 如果接收数据时您使用结束标准“字符延时时间”,则 ASCII 驱动程序将在发送时在两个消 息帧之间暂停。 可以随时调用发送指令,但仅当自发送上一个消息帧起经过的时间比组态 的字符延时时间还长时,ASCII 驱动程序才开始输出。 说明 在组态 XON/XOFF 流控制后,用户数据不得包含组态的 XON 或 XOFF 字符。默认设置为 DC1 = 11H(对于 XON)和 DC3 = 13H(对于 XOFF)。使用 3964R 的传输完整性 通过使用 3964R 程序增强的数据完整性: • 使用 3964R 时的汉明间距为 3。这可测量数据传输的完整性。 • 3964(R) 程序可确保传输线路上的高传输完整性。 可通过设置和释放指定的消息帧,并 使用块校验字符 (BCC, block check character) 来实现此高传输完整性。 可以使用两种不同的程序进行数据传输,在使用或不使用块校验字符的情况下: • 不带有块校验字符的数据传输: 3964 • 带有块校验字符的数据传输: 3964(R) 在本手册中,当说明和注释提及两个数据传输程序时则使用指定的 3964R。 使用 RK512 时的传输完整性 使用 RK512 时具有非常高的数据安全性: • 使用 RK512 和 3964R 时的汉明间距是 4。汉明间距可以测量数据传输的完整性。 • 使用 RK512 计算机连接可确保传输线路上的高传输完整性(因为 RK512 使用 3964R 程 序进行数据传输)。 • 确保在通信伙伴中进行进一步处理(因为 RK512 解释程序检查消息帧头中的附加长度规 范,并在将数据存储在通信伙伴的目标数据区中后生成一个消息帧,确认数据传输成功 还是失败)。 • RK512 计算机连接可单独保证正确使用 3964R 程序、分析/添加长度规范以及生成响应报 文。 不需要任何用户处理! 用户需要做的仅是判断Zui终确认消息的正负。 Modbus/USS 的传输完整性 使用 Modbus/USS 驱动程序时的数据安全性。 • Modbus/USS 的汉明间距是 4。汉明间距可以测量数据传输的完整性。 • 使用 Modbus/USS 可确保传输线路上的高传输完整性(Modbus 使用 CRC16 块校验,USS 使用 XOR 块校验)。 • 确保在通信伙伴中进行进一步处理,因为 Modbus 和 USS 均评估消息帧头中的附加长度 信息,并生成与数据传输成功/未成功相关的(时间监视的)确认消息帧。
如果您使用“结束符”标准,则有三个选项: • 到(包括)结束符时停止发送 在将要发送的数据中必须包括结束符。 发送的数据到结束符为止并包含该字符,即使指 令中指定的数据长度更长。 • 按指令中组态的长度发送数据 按指令中组态的长度发送数据。 Zui后一个字符必须是结束符。 • 按指令中组态的长度发送数据,并自动附加一个或多个结束符 按指令中组态的长度发送数据。 自动附加结束符,即,不得将结束符包含在要发送的数 据中。 超出指令中指定字符数的 1 或 2 个字符将发送给伙伴,具体取决于结束符的个 数。 如果您使用“固定消息帧长度”结束标准,则在发送方向上传输的数据量与该指令的长度参 数指定的一样。 接收方向上传输的(即,向接收 DB 中传输的)数据量在接收端使用模块属 性对话框中的“固定消息帧长度”参数指定。 两个参数设置必须相同,以确保正确进行数 据通信。 发送时将在两个消息帧之间暂停(暂停时间等于字符延时时间 [CDT, Character Delay Time]),以使伙伴可以同步(识别消息帧开始)。 如果使用其它同步方法,则可在模块的属性对话框中取消激活发送暂停。使用 ASCII 驱动程序接收数据 (S7-300, S7-400) 可选的结束标准 使用 ASCII 驱动程序进行数据传输时,可以在三种不同的结束标准中进行选择。 结束标准定 义何时接收完整的消息帧。 可能的结束标准如下: • 字符延时时间结束后 消息帧没有固定长度,也没有定义的结束符;消息的结束由线路上的暂停(字符延时时 间结束后)定义。 • 接收到结束符时 消息帧的结束由一个或两个定义的结束符标记。 • 接收到固定数目的字符时 接收消息帧的长度始终相同。代码透明度 程序的代码透明度取决于已组态的结束标准的选择和流控制: • 包含一个或两个结束符 – 非代码透明 • 当结束标准为字符延时时间或固定消息帧长度时 – 代码透明 • 当使用流控制 XON/XOFF 时,无法进行代码透明操作。 代码透明是指用户数据中可以包含任意字符组合,而无需识别结束标准。 结束标准“字符延时时间结束后” 接收数据时,字符延时时间结束时识别为消息帧结束。 从 CPU 中接受所接收的数据。 在这种情况下,必须设置字符延时时间,以使其可在两个连续的消息帧之间可靠结束。 但 是该字符延时时间应该足够长,这样,无论连接中的伙伴何时在消息帧内采取发送暂停,都 不会错误地识别消息帧结束。 下图说明了使用结束标准“字符延时时间结束后”的接收操作。结束标准和结束符 接收数据时,如果遇到组态的结束符,将识别为消息帧结束。从 CPU 中接受所接收到的数据 (包括结束符)。 如果在接收消息帧时字符延时时间结束,那么接收操作将终止。 将发出一条错误消息并丢 弃消息帧碎片。 如果使用结束符,则传输是非代码透明的,并且必须确保结束代码未出现在用户数据中。如果接收消息帧中的Zui后一个字符不是结束符,请注意以下情况。 • 结束符在消息帧中的其它位置: 所有字符(包括结束符)都被输入到接收 DB 中。 结束符后的字符 – 如果消息帧结束时字符延时时间 (CDT, Character Delay Time) 结束,则这些字符将被 丢弃。 – 如果在字符延时时间结束前收到新的消息帧,则这些字符将与下一个消息帧合并。 • 结束符不包括在消息帧中: 消息帧将出现以下情况: – 如果消息帧结束时字符延时时间 (CDT, Character Delay Time) 结束,则该消息帧将被 丢弃。 – 如果在字符延时时间结束前收到新的消息帧,则该消息帧将与下一个消息帧合并。 下图说明了使用结束标准“结束符”的接收操作。结束标准“固定消息帧长度” 接收数据时,如果达到组态的字符数目,则识别为消息帧结束。从 CPU 中接受所接收的数据。 如果在达到组态的字符数目之前字符延时时间结束,则接收操作将终止。 将发出一条错误 消息并丢弃消息帧碎片。如果接收字符的消息帧长度与组态的固定消息帧长度不匹配,请注意以下情况: • 接收字符的消息帧长度大于组态的固定消息帧长度: 在达到组态的固定消息帧长度之后接收的所有字符将出现以下情况 – 如果消息帧结束时字符延时时间 (CDT, Character Delay Time) 结束,则这些字符将被 丢弃。 – 如果在字符延时时间结束前收到新的消息帧,则这些字符将与下一个消息帧合并。 • 接收字符的消息帧长度小于组态的固定消息帧长度: 消息帧将出现以下情况: – 如果消息帧结束时字符延时时间 (CDT, Character Delay Time) 结束,则该消息帧将被 丢弃。 – 如果在字符延时时间结束前收到新的消息帧,则该消息帧将与下一个消息帧合并。 下图说明了使用结束标准“固定消息帧长度”的接收操作。模块的接收缓冲区 模块的接收缓冲区Zui多可达 4096 字节,具体取决于通信模块。 在组态期间,用户可指定: • CP 和 CPU 31xC-2 PtP 启动时是否删除接收缓冲区以及是否避免覆盖接收缓冲区中的数据。 也可以为缓冲的接 收消息帧数指定值范围(1 至 250)。 • ET 200S 1SI 启动时是否应删除接收缓冲区中的数据以及是否应避免覆盖接收缓冲区中的数据。 此外, 还可以激活或阻止对接收到的消息帧的缓冲。模块的接收缓冲区是环形缓冲区: • 如果有多个消息帧输入到模块的接收缓冲区,则以下原则适用: 始终将Zui早的消息帧从 模块发送到 CPU。 • 如果只想传送Zui新的消息帧,则必须: – CP 和 CPU 31xC-2 PtP 将缓冲的消息帧数设置为“1”并禁用覆盖保护。 – ET 200S 1SI 阻止动态消息帧并禁用覆盖保护。 说明 如果从用户程序中连续读取接收数据的过程被中断片刻,您可能会发现当再次请求接 收数据时,CPU 在接收到Zui新的消息帧之前先从模块收到旧消息帧。 在此中断期间,旧消息帧可能在模块和 CPU 的传输途中,也可能已被指令接收。 RS485 模式(CP 34x、44x、CPU 31xC-2 PtP + ET 200S 1SI) (S7-300, S7-400) RS485 模式 在 RS485 模式(半双工、两线制模式)下运行 ASCII 驱动程序时,必须在用户程序中采取措 施以确保任何时候都只有一个用户在发送数据。 如果两个用户同时发送数据,消息帧将被 破坏。 RS 485 模块在半双工模式下的切换时间 发送和接收之间的Zui大切换时间为 1 ms。 RS232 模式(CP 34x、44x、CPU 31xC-2 PtP + ET 200S 1SI) (S7-300, S7-400) RS232C 伴随信号 具有 RS232C 接口的模块上提供以下 RS232C 伴随信号: DCD (输入) 数据载体检测 DTR (输出) 数据终端准备就绪; 模块已做好运行准备 DSR (输入) 数据集就绪; 通信伙伴已做好运行准备。