|
@@ -2,19 +2,17 @@
|
|
|
import redis
|
|
|
import asyncio
|
|
|
import tracemalloc
|
|
|
-import aioredis
|
|
|
|
|
|
from asyncua import Client
|
|
|
from datetime import datetime
|
|
|
|
|
|
-opc_server_url = "opc.tcp://192.168.10.133:49320" # OPC UA服务器的URL
|
|
|
+opc_server_url = "opc.tcp://10.71.208.71:8098/TM.LongWallMind.OPCUAServer4.x" # OPC UA服务器的URL
|
|
|
redis_ip = '127.0.0.1'
|
|
|
tracemalloc.start()
|
|
|
|
|
|
-point_arr = [f"OPC.电液控.支架集.{num:03d}.立柱压力.前柱压力" for num in range(1, 138)]
|
|
|
+point_arr = [f"OPC.电液控.支架集.{num:03d}.立柱压力.后柱压力" for num in range(1, 138)]
|
|
|
|
|
|
|
|
|
-# 连接opcua
|
|
|
async def connect_and_read_opcua_data():
|
|
|
ns = 2
|
|
|
result_arr = {}
|
|
@@ -22,13 +20,15 @@ async def connect_and_read_opcua_data():
|
|
|
async with Client(url=opc_server_url, timeout=1) as client:
|
|
|
await client.connect()
|
|
|
|
|
|
- node = await client.nodes.root.get_children() # 获取所有子节点
|
|
|
- data_arr = [node.display_name.Text for node in node]
|
|
|
+ # node = await client.nodes.root.get_children() # 获取所有子节点
|
|
|
+ # data_arr = [node.display_name.Text for node in node]
|
|
|
|
|
|
- for data in data_arr:
|
|
|
- node = f"ns={ns};s={data}"
|
|
|
- tag = client.get_node(node)
|
|
|
+ for i in range(len(point_arr)):
|
|
|
+ data = point_arr[i]
|
|
|
+ node = f"ns=2;s={data}"
|
|
|
+ tag = await client.get_node(node)
|
|
|
value = await tag.read_value()
|
|
|
+ result_arr[data] = value
|
|
|
|
|
|
# 异步存储到 Redis 中,需要使用异步的 Redis 客户端库
|
|
|
# aioredis 或者其他异步库
|
|
@@ -40,8 +40,8 @@ async def connect_and_read_opcua_data():
|
|
|
# arr_key = node.split("=")
|
|
|
# result_arr[arr_key[2]] = value
|
|
|
|
|
|
- result_arr[data] = value
|
|
|
-
|
|
|
+ # result_arr[data] = value
|
|
|
+ # return node
|
|
|
return result_arr
|
|
|
except TimeoutError:
|
|
|
msg = "连接超时,请检查网络、服务器状态和连接参数。"
|