请记住双字边界当传送更改的数据,且数据区域包含双字格式的值时,请确保双字值实际上是要采集的数据 区域中的Zui多 256 个双字值之一。由于仅在特定字中发生了更改,如果分布于两个连续的数据双字上,则可能仅传送双字值中的一个字(高位或低位字)。在这种情况下,字缺失可能导致接收伙伴发生数据错误(适 用于 ST7cc,不适用于 S7 CPU)。可以通过两种方式触发数据区域发送: • 通过更改检查 位更改后会立即传送数据(“SendOnChange”= TRUE)。 •通过用户程序 “TriggerInput”输入的沿变化为 0 → 1 时,可以触发传送。对于时间驱动的传送,可以使用 FC 触发器触发。无论传送始终包含所有数据还是仅包含已更改的数据双字,也均可使用“SendAll”指定。 对于具有 X 通信功能的 S7-300CPU,数据帧的Zui大长度为 76 字节。使用由至少 22 个数据帧 (段)的序列组成的串行传送过程传送 1024字节的用户数据。除了Zui后一个数据帧外,其 余的每个数据帧均包含一个段,该段由输入数据区域中 48 个字节的用户数据组成。为保证“SendAll”参数激活时或常规请求或单个请求期间的数据一致性,数据将以连续的段传送。在传送过程中,状态由“SendAllBusy”指示。接收时,在“DataStatus”输出中指示状态。 说明TriggerInput ‑ SendAllBusy 如果在“SendAllBusy” = TRUE时触发“TriggerInput”,则当触发传送时,会导致出现 “DataLoss”错误消息(帧标头中的状态)。只有设置“SendAllBusy” = FALSE 时,才会在“TriggerInput”触发沿变化 0 → 1。如果传送中断,则指示“SendAllError”。还会在诊断缓冲区中输入事件 ID 为 B14DTD7_Diagnostics的条目。如果传送不完整,接收方的数据状态也是“无效”,这会在接收方的 DataStatus 参数中指示。还向诊断缓冲区中写入了事件 ID 为 B13BTD7_Diagnostics 的条目。 说明 伙伴的可用性如果伙伴的状态从“可用”变为“不可用”,则立即停止所有数据的传送。所有对象数据都 将从 TIM 缓冲区中删除。这会导致数据丢失。一旦伙伴可用,自动常规请求将确保伙伴的数据成为Zui新数据,以便下一次传送。 说明 Dat256D_S 和 Dat256D_R需要使用 UDT“TransmitBlock”。 使用典型值时,将 UDT 从全局库复制到 CPU 的“PLC 数据类型”(PLCdata types) 目录中。典 型值会从 CPU 块目录而非全局库中,自动引用 UDT。 说明 使用标准访问的 DB该块具有“ANY”类型的参数。禁用 DB 属性中的“优化块访问”(Optimized block access) 属性。
说明: 触发器输入“TriggerInput”输入的沿变化为 0 → 1 时,可以在所需时间触发数据帧的传送。 示例:带时间戳的时间驱动模拟值传送,用于在控制中心提供模拟值归档。 FC Trigger块可用于通过“TriggerInput”以时间驱动方式触发传送。“TriggerInput”实际上只是间接触发传送。“TriggerInput”沿变化为 0 → 1 时,数据帧将与其当前值放到一起,并传送到本地 TIM 中。TIM 负责实际传送给伙伴。对于专线或无线网络,可以直接进行传送。对于拨号连接,数据帧可 以先保存在 TIM上,并在稍后的时间发送。例如,原因可以是数据帧已标记为 “有条件自发”,参见参数“Conditional”。选择合适的触发点,使缓冲区溢出(间隔太长)不覆盖 TIM 上的数据。如果不需要此参数,保留不处理即可。应将“SendOnChange”参数设置 为 TRUE,以便在每次更改时自动传送数据。对于触发,还可选择“SendOnChange”与“TriggerInput”的组合。这意味着,当检测到更改时,或者“TriggerInput”输入的边沿每次从 0 变为 1 时,都会触发 传送。如果既不使用“SendOnChange”也不使用“TriggerInput”来触发数据传送,则只有对该数据对象有单个请求或在一般请求的框架内时,才会传送数据。未先对过程数据进行预处理的情况下,不要传送任何“SendOnChange”参数设 置为 = TRUE的模拟值。与此相关的更多详细信息,请参见模拟值典型程序块 Ana04W_S,参数“ThresholdValue”。说明: 数据输入区ANY 指针对要采集的数据所在的数据区域进行寻址。此数据区域必须在数据 块中,并且其长度可以在 1 到 256个数据双字范围内变化。有关可能的双字 格式的信息,请参见上文中的“功能”部分。 如果参数分配不正确(空指针、长度 >256、数据区域不是 DB),则会在诊 断缓冲区中输入错误消息(事件 ID B114,[Info2/3] = 11)。CPU 不切换为STOP 模式。在更正错误之前,不再对该数据块进行处理。 数据一致性 如果要传送的数据段Zui多包含 48个字节,则可保证传送期间数据的一致性。请记住双字边界 当传送更改的数据,且数据区域包含双字格式的值时,请确保双字值实际上是要采集的数据区域中的Zui多 256 个双字值之一。 由于仅在特定字中发生了更改,如果分布于两个连续的数据双字上,则可能仅传送双字值中的一个字(高位或低位字)。在这种情况下,字缺失可能导致接收伙伴发生数据错误(适 用于 ST7cc,不适用于 S7 CPU)。Dat256D_R 将接收的数据存储在“DataOutput”所定义的数据区域中,而不处理。利用 用户程序评估接收的数据。对于具有 X 通信功能的 S7-300 CPU,数据帧的Zui大长度为 76 字节(至少 48 字节)。使用 由至少 22个数据帧(段)的序列组成的串行传送过程传送 1024 字节的用户数据。除了Zui后一个数据帧外,其余的每个数据帧均包含一个段,该段由输出数据区域中 48 个字节的用户数据组成。每次接收检测到的数据段时,都会通过“NewData”输出参数的相应状态(位 1 到 22)指示。如果在数据段中检测到更改,则在一个 CPU 循环内,“NewData”中状态位 0 也将设置为TRUE。这样便可以识别出输出数据区域中发生更改的段。 说明当接收到一个包含多个数据段(数据帧)的序列时,“NewData”参数中的状态位 1 到 22 将 逐个设置为TRUE,并且在收到Zui后一个段之前,始终设置为 TRUE。 如果数据段(数据帧)不包含在接收到的序列中 (SendAll =FALSE),则只在一个 CPU 循环 内,状态保持设置为 TRUE。 为了确保在“SendAll” = TRUE时或者在常规请求或单个请求期间数据的一致性,数据区域将 逐个段连续进行更新。在接收过程中,由“DataStatus”输出字节指示状态(“SequenceState”状态)。如果接收序列成功完成,则数据输出区将是Zui新的输出区,且输出数据一致。这由 “DataStatus”(“DataValid” = TRUE状态)指示。 说明 如果发送方的“SendAll”参数设置为 FALSE,则无法保证数据段或限制段的一致性。以下原因可能会使序列的接收中断: • 活动序列期间与伙伴通信失败,则中断接收序列(事件 IDB13BTD7_Diagnostics)。 •超出监视时间。在为“MonitoringTime”参数所设置的时间内,并不能接收到所有段(事件 IDB13CTD7_Diagnostics)。 • 发生其它接收错误(事件 ID B13DTD7_Diagnostics),例如: –在激活且无错的序列期间注册新的接收序列。 – 在激活的序列期间接收到一个自发段(数据帧)。 说明 Dat256D_S 和Dat256D_R 需要使用 UDT“TransmitBlock”。 使用典型值时,将 UDT 从全局库复制到 CPU 的“PLC数据类型”(PLC data types) 目录中。典 型值会从 CPU 块目录而非全局库中,自动引用 UDT。 说明 使用标准访问的DB 该块具有“ANY”类型的参数。禁用 DB 属性中的“优化块访问”(Optimized block access)属性。单个请求发送到伙伴对象。 如果伙伴可用,可向伙伴对象发送单个请求。如果返回一条回复,则将此信息转发到“DataOutput”中所指定的数据区域。 传送序列有优先级: • Zui低优先级:TriggerInput例如,单个请求或常规请求可以中断通过发送方上的“TriggerInput”所触发的 已激活的传送。 • 中等优先级:单个请求例如,单个请求或常规请求可以中断通过发送方上的“TriggerInput”所触发的 已激活的传送。已中断或者已重启的请求会使激活序列重新启动,并且不会出现错误消息。 • Zui高优先级:常规请求 常规请求可以中断自身或单个请求。已中断或者已重启的请求会使激活序列重新启动,并且不会出现错误消息。 由单个请求或常规请求所中断的请求会使激活序列重新启动,并且不会出现错误消息。如果序列成功完成,“DataStatus”输出字节的“DataValid”状态保持 设置为 TRUE。响应单个请求所花费的时间由“MonitoringTime”参数来评估。 请注意:只有当接收序列完全成功时,才能保证跨段数据输出区域的一致性。如果输入的值高于0,且超出响应序列的时间,将通过“DataStatus”输出字节(状态位“SequenceState”)指示错误。还向诊断缓冲区写入条目 (事件 IDB13CTD7_Diagnostics)。