Freeopcua-Server 支持历史记录 ( https://python-opcua.readthedocs.io/en/latest/server.html )。
您必须启用每个节点的历史记录(即每个要历史记录的变量):
historize_node_data_change(node, period=datetime.timedelta(7), count=0)
开始对提供的节点进行历史记录
参数:
node:可以被历史化的节点或节点列表(变量/属性)
period:存储历史的时间增量;旧数据将从存储中删除
count:要存储在历史记录中的更改数
例如,如果要提供温度历史记录,则必须使用“server.historize_node_data_change(Temp, period=datetime.timedelta(7), count=0)”(在服务器启动后):
[Python]:
from opcua import Server
from random import randint
import datetime
import time
server = Server()
server.set_endpoint("opc.tcp://192.168.178.20:443")
addspace = server.register_namespace("OPCUA_BurkhardsTemperatureSensor")
node = server.get_objects_node()
Param = node.add_object(addspace, "Thermometer_1")
Temp = Param.add_variable(addspace, "Temperature", 0)
Temp.set_writable()
Time = Param.add_variable(addspace, "Time", 0)
Time.set_writable()
SerialNr = Param.add_variable(addspace, "SerialNr.", "2323784628346")
server.start()
server.historize_node_data_change(Temp, period=datetime.timedelta(7), count=0)
while True:
Temperature = randint (10,50)
TIME = datetime.datetime.now()
print (Temperature,TIME)
Temp.set_value(Temperature)
Time.set_value(TIME)
time.sleep (2)