循环数据
访问循环数据的所有功能块都使用两个接口变量来确定循环数据访问参数:
-
用于循环输入数据的 i_hwStartAddress
-
用于循环输出数据的 iq_hwQWAddress
接口变量“i_hwStartAddress”(数据类型“变体”)被功能块用于检索与 avatar 关联的循环输入数据的总量。为了让功能块实现此功能,必须使用 avatar 的输入范围(对于 PROFINET IO 是 avatar 的输入子模块,对于 PROFIBUS DP 是 avatar 模块)的开始地址进行参数设置。通常方法是在这个范围的开头的地址创建 PLC 标签。只要标签位于范围的开头,则 PLC 标签的数据大小就无关紧要(例如,在下面的示例中,BOOL“AvPump02_StartAddress”指向泵 avatar 的地址“%I4.0”)。
对于输出数据方向,功能块使用输入/输出变量“iq_hwQWAddress”(在某些情况下也使用“iq_hwQBAddress”,因为 avatar 只有一个字节的输出数据)。与输入数据相反,此变量引用阀岛的完整输出数据(在大多数情况下为一个 Word),并作为输入/输出变量连接至功能块 - 在某些情况下,多个功能块可访问不同区域中相同 avatar 的输出数据(例如,与 Avatar 诊断功能块结合在一起的 Avatar 控制功能块),因此将更改写入输出之前需要读取当前状态。通常,访问avatar 的输出区域时也应该使用 PLC 标签对整个输出区域予以配置(在上例中,引用地址“%QW5”的 Word 类型的“AvConveyorOneDir03_OutAddress”)。
一旦输入变量“i_xEnable”在程序中被设置为“真”,涉及循环通讯的各功能块将执行和更新循环数据。这意味着在通过循环通讯控制 avatar 的功能块接口处的任何输入变量(例如,上例中的“i_xRunFwd”)都将被写入 avatar 的输出数据区域。同时,avatar 输入数据区域的任何相关状态信息都将被功能块读取并复制到输出接口(例如,“q_xRunFwd”)。
功能块的状态输出“q_xActive”是“i_xEnable”的对等信息。如果已启用功能块的执行,而且未发生被检测的错误,则“q_xActive”为“真”。如果在功能块执行过程中出现了检测到的错误,则此情况将由“q_xError”上的上升沿发出信号。循环输入数据的检索和功能块的执行将停止。另外,“q_dwErrorID”使用来自数据块 ConstTeSysIsland 的错误代码值之一来提供有关检测到哪种错误的详细信息(请参阅数据块 ConstTeSysIsland)。同时,功能块的所有输出,即与 TeSys island 进行循环或非循环通讯的结果都将重置为其各自的默认值。这意味着:
-
位字段(WORD、DWORD 等)类型的所有数字(INT、UINT 等)结果都设置为 0
。 -
所有字符串类型的结果均设置为空字符串。
-
所有布尔类型的结果都设置为 FALSE。
-
所有日期和时间类型的结果(此库中为 DTL)都将重置为该类型的最小值 (DTL#1970-01-01-00:00:00.0)。
-
所有分组归入用户定义的类型 (UDT) 或结构的结果都将重置为类型定义中指定的默认值。这些通常也遵循上述规则。
![]() |
---|
意外的设备操作
未按说明操作可能导致人身伤亡或设备损坏等严重后果。
|
只有在“i_xEnable”上检测到新的上升沿且导致功能块进入被检测的错误状态的条件被清除之后,功能块才能退出检测到的错误状态。