123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python3
- import redis
- from asyncua import Client
- from datetime import datetime
- opc_server_url = "opc.tcp://192.168.10.133:49320"
- redis_ip = '127.0.0.1'
- def get_point_arr():
- for i in range(137):
- three_digit_numbers = [f"OPC.电液控.支架集.{num:03d}.立柱压力.前柱压力" for num in range(1, 138)]
- return three_digit_numbers
- def get_opc_data():
- ns = 2
- opc_point_arr = get_point_arr()
- # redis
- pool = redis.ConnectionPool(host=redis_ip, password='')
- redis_conn = redis.Redis(connection_pool=pool)
- with Client(url=opc_server_url) as client:
- i = 0
- result_arr = {}
- print(datetime.now().strftime('Start_time:%Y-%m-%d %H:%M:%S.%f'))
- for i in range(len(opc_point_arr)):
- try:
- node = f"ns={ns};s={opc_point_arr[i]}"
- tag = client.get_node(node)
- value = tag.read_value()
- # redis值
- redis_conn.set(str(opc_point_arr[i]), str(value))
- arr_key = node.split("=")
- result_arr[arr_key[2]] = value
- finally:
- continue
- return result_arr
- if __name__ == '__main__':
- print(get_opc_data())
|