2017-04-18 243 views

回答

0

你想要完成什麼?結構是相當重要的問題,因爲你可以擺脫它。 Onces它的安裝運行的服務器並檢查它witth他的命令行

opcua-client 

這個GUI可能會幫助很多見的服務器的結構。

opcua服務器存在於節點組合之外。他們中的一些標準節點,你會在你運行 編程時許多這些基本的節點可以接收使用最基本的OPC服務器看到:

server.nodes#.<some node use your IDE> 

對於你需要找到他們所有自定義節點,你可以通過打電話給孩子來做到這一點。例如:

# To get the root node ALL other nodes are a child fro; this one eventually 
root = server.get_root_node() 
# To get a child: 
root.get_child("0:Objects") #Objects is one of those basic nodes 
# You can get a child from a path 
# Once again first study the tree with the opcua-client gui 
# This gui is installed automatically and under the commane opcua-client 
root.get_child(["0:Objects", "0:Server"]) 

# The above will get the child of Objects called Server 
# directly starting at the root node 

現在你可以自己創建子節點。你去你想要添加孩子的節點通常:

# The Objects node 
# Later you'll probably want to put that all in 1 line 
objects = server.nodes.objects 
id, name, type = 2, "testName", None 
test = objects.add_object(id, name, type) 
# This will add a object named testName to the objects node 
# To acces this node again we can use it's id 
server.get_node(test.nodeid) 
# I know this will return test again. 
# However the ua methods "parent' parameter is this nodeid so can come in very handy 

創建ua方法可能也將成爲您的服務器的一項重要任務。

@uamethod 
def methode(parent, input): 
    print(input) # You can do all things here offcourse 

server.nodes.objects.add_method(0, "myMethod", methode, ua.VariantType.ByteString, None) 

這將方法添加到對象節點

0是你想給它的ID。我不能真正解釋你應該選擇什麼號碼...我通常只是選擇2 ...

「mymethod」將是它的瀏覽名稱,它允許您使用節點

的get_child和call_method方法找到它

方法不合適您的方法

ua.VariantType。需要解析inputargs的數據

無同上,但outputargs ...這我functiond沒有

希望這有助於你一點理解,你可以用做最基礎知識freeopcua庫

相關問題