我有一个在铣床上运行的 OPC 服务器,并且想要访问机器中当前可用的工具的名称。
我知道我正在寻找的变量的名称是
Sinumerik/Tool/Catalogue/toolIdent[1]
Sinumerik/Tool/Catalogue/toolIdent[2]
Run Code Online (Sandbox Code Playgroud)
等等。我可以在 uaexpert 等查看器中看到相应的值。
虽然我可以访问
Sinumerik/Tool/Catalogue/toolIdent
Run Code Online (Sandbox Code Playgroud)
通过依次从根向下走,使用诸如
children=Position.get_children()
for child in children:
Position=child
Run Code Online (Sandbox Code Playgroud)
这种方法不起作用,toolIdent[1]因为这不是一个孩子。
如何访问数组的这些值?
编辑:另外一个备注:工具的名称存储为节点的值,而不是变量。我遇到过 get_array_dimensions 函数,但这似乎只适用于变量。
EDIT2:我附上了我正在寻找的阵列的UAEExpert视图的屏幕截图。数组的前三个值是 3D_BLUM、12 和 98。

EDIT3:在UAEExpert中,我可以toolIdent[2]通过使用“添加自定义节点”命令,选择一个字符串节点并提供“/Tool/Catalogue/toolIdent[2]”作为NodeId的参数来查看内容。我试图找出如何使用 python(最好是 opcua 库,并且我正在为在 Python 中实现这个目标提供赏金。
从您的屏幕截图看来,这些“数组元素”中的每一个实际上都有自己的 Node 和 NodeId。
您应该能够读取这些 NodeId 中的每一个:
ns=2;s=/Tool/Catalogue/toolIdent[0]ns=2;s=/Tool/Catalogue/toolIdent[1]ns=2;s=/Tool/Catalogue/toolIdent[2]