ProcessDB实时/时序数据库——Python检索测点信息

目录

前言

一、检索类型及检索条件介绍

二、构建条件检索信息


前言

ProcessDB实时/时序数据库支持Python语言开发,本文将针对Python操作ProcessDB检索测点信息进行介绍


一、检索类型及检索条件介绍

检索类型名称检索类型名称

FILTER_DB_NAME

数据库名称

FILTER_POINT_IO_TYPE

测点io类型

FILTER_TABLE_NAME

数据表名称

FILTER_POINT_ARCHIVED

测点是否保存历史数据

FILTER_POINT_NAME

测点名称

FILTER_POINT_UNIT

测点单位

FILTER_DB_ALIAS

数据库别名

FILTER_POINT_COMPRESS_TYPE

测点压缩类型

FILTER_TABLE_ALIAS

数据表别名

FILTER_POINT_COMPRESS_DEV_TYPE

测点压缩死区类型

FILTER_POINT_ALIAS

测点别名

FILTER_POINT_VALUE

测点值

FILTER_DB_DESC

数据库描述

FILTER_POINT_QULITY

测点质量

FILTER_TABLE_DESC

数据表描述

FILTER_POINT_ALARM_STATUS

测点报警状态

FILTER_POINT_DESC

测点描述

FILTER_POINT_ALARM_SWITCH

测点报警开关

FILTER_DB_CREATE_TIME

数据库创建时间

FILTER_POINT_ALARM_ACK_TYPE

测点报警方式

FILTER_DB_MODIFY_TIME

数据库修改时间

FILTER_POINT_ALARM_TYPE

测点报警类型

FILTER_TABLE_CREATE_TIME

数据表创建时间

FILTER_POINT_ALARM_LEVEL

测点报警级别

FILTER_TABLE_MODIFY_TIME

数据表修改时间

FILTER_POINT_ALARM_GROUP_ID

测点报警组id

FILTER_POINT_CREATE_TIME

测点创建时间

FILTER_DB_ID

数据库id

FILTER_POINT_MODIFY_TIME

测点修改时间

FILTER_TABLE_ID

数据表id

FILTER_POINT_TYPE

测点类型

FILTER_POINT_ID

测点id

FILTER_POINT_DATA_TYPE

测点数据类型

FILTER_POINT_IS_REFFER

测点是否引用

FILTER_POINT_REFFER_ID

测点引用id

FILTER_POINT_EXPRESS

测点表达式

FILTER_POINT_PERIOD

测点计算周期FILTER_POINT_CUR_VALUE_OCCUR_TIME当前值发生时间
FILTER_POINT_PRE_VALUE测点前值    FILTER_POINT_PRE_VALUE_QULITY测点前值质量
 FILTER_POINT_CUR_VALUE_TIME测点当前值时间   FILTER_POINT_TOP_SCALE量程高限
FILTER_POINT_PRE_VALUE_TIME测点前值时间    FILTER_POINT_TIME_UNIT时间单位
FILTER_POINT_BOTTOM_SCALE量程低限
检索条件名称检索条件名称
RELATION_EQUAL相等RELATION_GREAT_EQUAL大于等于
RELATION_NOT_EQUAL不相等RELATION_LESS_EQUAL小于等于
RELATION_GREAT大于RELATION_LIKE相似
RELATION_LESS        小于

二、构建条件检索信息

示例代码:

# coding:utf8
import ProcessDBDriver as processdbDriver
import numpy as np
from array import array

    #  数据结构

	#  pointId 数据点ID 
 
	#  tableId 数据表ID 
 
	#  pointName; //数据点名称 
 
	#   refferObjectId;//引用其他数据点ID 
 
	#  pointType; // 数据点类型 0是采样点 / 1是统计点 / 2是计算点 
 
    #  priority; // 数据点优先级 
    
    #  dataType; // 数据点存储值类型 例如FLOAT32 
	
	#  pointDesc; // 数据点描述 
	
	#  archived; // 是否保存历史数据 
  
	#  ioType; // IO类型 0为输入 1为输出 2为中间变量 3为网关 
 
    #  spaceCompress; //空间维度 1是差值压缩,2是数据块压缩,3是两者全选 
    
    #  timeUnit; //分辨率 0是秒 1是毫秒 2是微秒 
    
	#  unit; // 单位	 
 
	#  initValue; // 数据点初始值 
 
	#  bottomScale; // 量程低限 
 
	#  topScale; // 量程高限 
 
	#  alarmLow; // 告警低限 
 
	#  alarmHigh; // 告警高限 
 
	#  deviation; // 量程数值,默认0.05 
 
	#  forceSaveInterval; // 强制存历史数据时间 
	
	#  format; // 小数精度 例如数据类型为int,则没有小数精度 
	
	#  devType; // 按量程百分比是0 ,按量程物理值是1 
 
	#  compress; // 时间维度 0是deadband死区压缩, 1是linuar线性压缩, 2是None无压缩 
 
	#  timeoutInterval; // 超时时间 
    
	#  creatorId; // 数据点创建人ID 
 
    #  createTime; // 数据点创建时间 
    
	#  period; // 计算周期 计算点专属属性 
 
    #   alarmSwitch;  //是否告警 0:不告警  1: 告警 
 
    #   alarmAckType;    //告警类型 0:  手动  1:自动 
 
    #   alarmType;       // 1:死区报警 2:超时报警 3:ON报警 4:OFF报警 5:变化报警 
 
    #   alarmLevel;    //告警级别 none是0  一级是1 二级是2 三级是3 四级是4 
 
    #   alarmHH;        //告警高高限 
 
    #   alarmLL;        //告警低低限 
 
    #   alarmGroupId;   //告警分组id 
 
    #  tableFullName;  //数据点所属的数据库加数据表的名称(例如PUBLIC.SYS)
    
    #  statinfo;  //点位操作统计,具体结构如下
        
    #  curVal;  //当前标签值,具体结构如下

    # statinfo{
    # nuReadRTTimes //读取实时数据次数
    # nuWriteRTTimes //写入实时数据次数
    # nuForceWriteRTTimes //强制写入实时数据次数
    # nuCompressedTimes //压缩数据次数
    # nuReadHistoryTimes //读取历史数据次数
    # nuReadHistoryCount //读取历史数据数量
    # nuWriteHistoryTimes //写入历史数据次数
    # nuWriteHistoryRecordCount //写入历史数据数量
    # }

    # curVal{
    # nSecond //当前值秒数
    # nMilliSecond //当前值毫秒数
    # nQuality //当前值质量
    # nTagType  //当前值数据类型
    # nValue  //当前值
    # }

# 连接
connectName = '127.0.0.1'
port = 8303
processdbDriver.connect(connectName, port)
# 登录
userName = 'root'
password = 'root'
wErrCode = processdbDriver.login(userName, password)

# 登录成功
if wErrCode != 0:
    print('login failed. errorCode: ', wErrCode)
else:

    print('login!sucess!')

# class FilterItem(object):
# nItemID 筛选数据类型:库名,表名,点名等
# nRelation 筛选数据规则: 相等,相似等
# szValue   具体值:“PDB_PROC_CPU_USAGE”

# 添加筛选条件
filterItem01 = processdbDriver.FilterItem(
    processdbDriver.FilterType.FILTER_POINT_NAME.value, 
    processdbDriver.RrlationType.RELATION_LIKE.value,
    "CPU")

filterItem02 = processdbDriver.FilterItem(
    processdbDriver.FilterType.FILTER_POINT_NAME.value,
    processdbDriver.RrlationType.RELATION_LIKE.value,
    "PDB")

# 加入筛选条件集合
filterList = set()
filterList.add(filterItem01)
filterList.add(filterItem02)

# 设置页数页码
PageSize=10
PageNum=0
# 发起数据请求
count, errCode, resultSet = processdbDriver.query_point_by_filter(
    PageSize, PageNum, filterList)




# 遍历读取数据
if errCode == 0:
    if count != 0 and count != 'null':
        for i in range(count):
            pointData = processdbDriver.query_points(
                i, resultSet)
            print('query_point_by_filter succeed.')
            print('  点ID:',
                  pointData.pointId)  
            print('  点名:',
                  pointData.pointName)  
            print('  所属表全名:',
                  pointData.tableFullName)  
            print('  当前值发生时间:',
                  pointData.curValueOccurtimeStamp)  
            print('  数据类型:',
                  pointData.getDataType())  
            print('  读取次数:',
                  pointData.statInfo.nuReadHistoryCount)  
            print('  当前值:',
                  pointData.curVale.nValue)  
    else:
        print('no  data.')
else:
    print('query_point_by_filter failed, errorCode: ', errCode)

运行结果:

login!sucess!
query_point_by_filter succeed.
  点ID: 1001000001
  点名: PDB_OS_CPU_USAGE
  所属表全名: PUBLIC.SYS
  当前值发生时间: 1699515939
  数据类型: float32
  读取次数: 0
  当前值: 41.407318115234375
query_point_by_filter succeed.
  点ID: 1001000007
  点名: PDB_PROC_CPU_USAGE
  所属表全名: PUBLIC.SYS
  当前值发生时间: 1699515939
  数据类型: float32
  读取次数: 0
  当前值: 1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值