フライス盤でOPCサーバーを実行していて、現在そのマシンで利用できるツールの名前にアクセスしたいと思っています。
私が探している変数の名前が
Sinumerik/Tool/Catalogue/toolIdent[1]
Sinumerik/Tool/Catalogue/toolIdent[2]
等々。 uaexpertなどのビューアで対応する値を確認できます。
アクセスできる間
Sinumerik/Tool/Catalogue/toolIdent
次のようなコマンドを使用して、ルートから順に下に歩く
children=Position.get_children()
for child in children:
Position=child
これは子ではないため、このアプローチはtoolIdent[1]
では機能しません。
配列のこれらの値にアクセスするにはどうすればよいですか?
EDIT:1つの追加の注釈:ツールの名前は、変数としてではなく、ノードの値として保存されます。関数get_array_dimensionsを見つけましたが、これは変数に対してのみ機能するようです。
EDIT2:探しているアレイのUAExpertビューのスクリーンショットを添付しました。配列の最初の3つの値は3D_BLUM、12、および98です。
EDIT3:UAExpertで、「カスタムノードの追加」コマンドを使用して文字列ノードを選択することにより、toolIdent[2]
の内容を確認できますNodeIdのパラメーターとして "/ Tool/Catalogue/toolIdent [2]"を提供します。私はpython(できればopcuaライブラリ、)を使用して同じことを行う方法を見つけようとしています。Pythonでこの目標を達成するための報奨金を提供しています。
私が読んだことによると、これは配列ではなく、命名規則のようです。私はそれをハッキングすることから始めます:
for x in range(10):
if x == 0:
availTools = [toolIdent]
else:
availTools.append(toolIdent[x])
これで、実際の配列(availTools)に使用可能なツールがあり、好きな方法でアクセスできます。