非循环数据
对于那些与 TeSys™ island 使用非循环通讯的功能块,功能块必须要有包含非循环数据的硬件模块参考号。此参考号通常作为“HW_IO”called“i_hwSubmHWID”类型的输入在功能块接口处提供。当在 Siemens TIA Portal 中创建设备(例如,通过导入 AML 文件)时,系统会自动为所有设备、模块和子模块创建带有各硬件标识符值的系统常量。这些常量可直接用于确定 avatar 或设备的非循环数据访问参数。这些常量的名称通常使用以下模式创建:<设备名称>~<模块名称>~<子模块名称>(例如,“mytesysisland~AvPump02~Acyclic”)。
对于对 TeSys™ island 设备的资产管理数据的访问,这些常量也被表示为 TeSys™ island 中的模块。PROFINET IO 和 PROFIBUS DP 的设备模块都放在编号从 101 开始的插槽中。
-
对于 PROFIBUS DP,模块内不存在子模块。因此,所有循环和非循环数据都属于模块本身,而不属于各个子模块。这意味着,对于涉及循环通讯和非循环通讯的 PROFIBUS DP 功能块而言,可以直接从输入开始地址中获得硬件标识符,而无需对其他硬件标识符进行参数设置。但是,对于仅使用非循环通讯的功能块(主要是设备资产管理功能块)而言,则必须将模块的硬件标识符提供给功能块接口(接口变量“i_hwModuleHWID”)。
-
功能块无法检测到在功能块接口处提供的硬件标识符所引用的模块与功能块所针对的 avatar 或设备的类型之间是否匹配。因此,您要负责确保适当的功能块使用正确的硬件标识符。忽略这样做可能会导致 TeSys™ island 行为异常。
必须使用功能块输入“i_xExecute”上的上升沿触发非循环数据的读取或写入。但是,只有在功能块(“i_xEnable”)被已启用、未发生被检测的错误并且输入变量“i_xAcyclicBusy”为“假”的情况下,非循环读取或写入才开始。变量“i_xAcyclicBusy”可用于通过非循环通讯(从 TIA Portal 的 TeSys™ island 库或使用函数 RDREC 或 WRREC 的 PLC 程序的任何其他部分)将功能块的多个实例互锁,以避免由于Siemens PLC 的非循环通讯的有限资源而导致被检测的错误。每个涉及非循环通讯的功能块还提供输出“q_xAcyclicBusy”,当功能块正在执行非循环读取或写入请求时,该输出将被设置为“真”,并且可用于与其他功能块互锁。
如果在非循环通讯期间检测到错误,则功能块会在输出“q_xError”上以上升沿指示该事件,并在数据块 ConstTeSysIsland 的“q_dwErrorID”中输出相应的检测到的错误代码。所有基于通讯结果的输出都将重置为其默认值(与对所有其他检测到的错误的反应相同 — 另请参阅循环数据;有关 ConstTeSysIsland 的值的详细信息,请参阅数据块 ConstTeSysIsland)。除了检测到的错误标识符外,某些情况下功能块还在变量“q_dwAcyclicStatus”中提供了非循环通讯的状态代码。下表提供了使用中的非循环状态代码的概述。
非循环状态代码
非循环状态代码 |
描述 |
---|---|
Cdw_StsNoMsg |
无可用状态详细信息(另请参阅数据块 ConstTeSysIsland) |
全部其他 |
针对 TIA Portal 的所用系统功能的状态/错误代码
有关针对 TIA 的检测到的错误代码的进一步信息,请参见 Siemens TIA Portal 信息系统和第三方文档。 |
如果功能块成功完成非循环通讯,则“q_xAcyclicBusy”返回假、“q_dwErrorID”显示适当的状态代码(请参阅数据块 ConstTeSysIsland),而从阀岛非循环读取的数据将被复制到输出变量中。数据将一直存在于输出中,直到新的非循环请求完成时被覆盖、功能块被禁用或检测到错误并且输出数据被默认值覆盖。