我正在使用Logix 5000 Controllers Data Access文档和一个开源Java库来调用CIP服务以读取控制器标签。我已经按照第2章中概述的步骤查找所有符号和模板详细信息,但是我没有尝试读取整个结构(该文档中详细说明了一些限制),而是采用了查找结构的所有原子成员的方法,因此我可以逐个阅读。例如,我可以使用已记录的Read Tag服务读取UDT的原始/原子成员,如“ myUdt.myDint”,“ myUDT.myBool”等。
到目前为止,除一种情况外,此方法效果很好。我定义了一个UDT(testUDT),它具有几个外部访问权限为“读/写”的成员和1个成员(myReal),其外部访问为“无”。
问题:当我遍历符号实例并按照AB手册中所述使用Template Read服务时,我的确看到了我的UDT的所有模板成员,包括myReal(外部访问为None)。因此,如果我随后尝试读取此成员(与其他UDT成员一样使用读取标记服务和适当的段),则会收到失败状态0x04路径段错误。显然,有了外部访问权限,我应该无法读取该成员,但是我不知道如何验证哪些模板成员将外部访问权限设置为读取,读取/写入或不读取。
问题:我可以使用任何CIP服务来确定模板成员的外部访问设置吗?还是在这种情况下应该使用其他任何机制?对我来说,除了在这种情况下,读取结构的单个原子成员没有问题,并且在设置符号实例和模板成员的设置步骤中看到的数据中,testUDT.myReal元数据看不到任何不同来自其他所有具有读/写外部访问权限的成员。
谢谢您的帮助!