我正在使用freeOpcua來編寫一個簡單的客戶端示例。我首先在我的筆記本電腦上測試了它,運行它的服務器代碼,然後在raspberry pi3中運行linux中的客戶端代碼。所以我能夠連接到服務器。FreeOPCUA python客戶端示例
現在我有一臺運行B & R Server的PLC。我需要連接到此服務器並獲取屬性值,但每當我嘗試連接它時,都會顯示connection refused error
。服務器運行正常,因爲我在Windows上使用客戶端軟件進行了測試,但未在Linux中進行連接。我正在使用freeopcua客戶端示例連接到服務器。
是否需要啓用我試圖與之通信的端口?
有沒有人有這方面的經驗。請幫忙。謝謝。
編輯:
的IP地址192.168.1.21是,端口號是135,我做這樣的事情如下:
client = Client("opc.tcp://192.168.1.21:135/")
client.connect()
#This gives error of connection refused.
我打開client.connect(),並發現它具有以下功能:
connect_socket()
send_hello()
open_secure_channel()
create_session()
activate_session()
所以不是做client.connect()
我做client.connect_socket()
所以就ok了,並沒有給出任何錯誤的。然後我print(client.get_root_node())
它告訴我Node(TwoByteNodeId(i=84))
和print(client.get_server_node())
它顯示Node(FourByteNodeId(i=2253))
。這些價值是什麼。我能否認爲我可以通過執行client.connect_socket()
來連接到服務器。
當我試圖用client.get_endpoints()
得到端點它給了我下面的錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "opcua/client/client.py", line 299, in get_endpoints
return self.uaclient.get_endpoints(params)
File "opcua/client/ua_client.py", line 323, in get_endpoints
data = self._uasocket.send_request(request)
File "opcua/client/ua_client.py", line 76, in send_request
data = future.result(self.timeout)
File "/usr/local/lib/python2.7/dist-packages/concurrent/futures/_base.py",
line 431, in result
raise TimeoutError()
concurrent.futures._base.TimeoutError
此外,當我試圖做open_secure_channel()
或create_session()
或任何其他它給了我上面的錯誤。
是否還有更多的錯誤信息可用?你能顯示服務器返回的端點嗎? –
@KevinHerron請看編輯 –
那些獲得節點方法並不需要你連接,他們只是建立NodeIds。你有錯誤的IP /端口或服務器沒有運行或允許連接。拒絕連接是連接被拒絕。 –