可编程计算组件面向的客户要求比较高,但其主要目的是提供给软件制造企业在为客户提供解决方案时可通过动态编程的方式来耦合其业务逻辑。 有些应用系统中有部分业务数据需要通过现场实时数据进行相应的算法产生,这时编程计算组件可帮助您的应用系统和业务解耦,可编程计算组件适合:电力行业(SIS系统,实时系统) 、气象行业、航空行业、集团企业的数据集中化的应用解决方案等。

Apace计算服务支持单点、多点计算,包括对多个Apace数据库中的数据点进行综合计算。计算法则采用的是全编码式数据计算扩展接口,算法可以使用C#、VB.NET或Jscript三种语言进行编写。支持动态编译,每秒可对上万个数据点实时同步计算,每个计算法则的计算结果,可写入一个或多个数据点中。

支持引用自定义的程序集,让计算服务能处理更为复杂的计算法则成为可能,目前几乎已经可以完成任何所需的计算。

计算法则脚本编辑规范

以C#语言为例

1:,计算脚本代码必须写入GetAlgorithmValue()函数体内,函数体外禁止加入其它的函数,如需要使用自定义函数建议写入到“公用函数体”内,如下:

//必须的函数体GetAlgorithmValue,返回双精度结果

public Double GetAlgorithmValue() { McbData calcpoint= this.CurrentPoint; double calcvalue= calcpoint.PointValue; calcvalue += 1; return calcvalue ; }

2:建议在编译通过后将上部分代码改为:

public Double GetAlgorithmValue() { try { McbData calcpoint= this.CurrentPoint; double calcvalue= calcpoint.PointValue; calcvalue += 1; return calcvalue ; } catch { //屏蔽异常 并返回double.NaN 标示此次计算结果失效。 Return double.NaN; } }

计算法则常用方法介绍

●      this.CurrentPoint

描述:得到当前计算写入目标点信息;

返回类型:McbData

PointName

获取或设数据点标签名称格式:[ServiceName].[DirName].[PointName],总长度为20个字节其中包含’.’字符。

PointValue

获取或设置一个值,表示点标签的数据值,类型为双精度。

PointTime

获取或设置一个值,表示点标签时间戳,类型为整形。

Time

获取一个值,表示点标签时间戳,类型为DataTime。

BindingName

获取绑定格式点名,也可理解为短点名:[PointName]。

State

获取点标签状态,枚举类型 PointValueState。

PointState

获取或设置一个值,表示点标签值状态,类型为Byte。

PointDescribe

获取或设置点标签描述文本,总长度不能超过20个字节。

PointUnit

获取或设置点标签单位文本,总长度不能超过8个字节。

Position

获取或设置点标签在数据流中的位置。

ServiceDirName

获取点标签名称所对应的服务目录名:[ServiceName].[DirName]

实例代码:

McbData calcpoint=  this.CurrentPoint;

double calcvalue= calcpoint.PointValue;

●      this.CurrentPointInfo

描述:得到当前计算写入目标点基本信息;

返回类型:PcmData

PointName

获取或设数据点标签名称格式:[ServiceName].[DirName].[PointName],总长度为20个字节其中包含’.’字符。

HighAlarm

获取或设置一个值,表示点标签的发生高报的界限值。

BosomAlarm

获取或设置一个值,表示点标签的发生中报的界限值。

LowAlarm

获取或设置一个值,表示点标签的发生低报的界限值。

AllowMaxValue

获取或设置一个值,表示点标签的有效值上限,当与AllowMinValue相等时界限值将不起作用

AllowMinValue

获取或设置一个值,表示点标签的有效值下限,当与AllowMaxValue相等时界限值将不起作用

OperationType

获取或设置点标签的业务类型,长度20个字节,如:锅炉专业点或气机专业点。

OperationCode

获取或设置点标签的业务代码, 长度20个字节。

DataShape

获取或设置一个值,表示点标签的数据形态,0: 动态 1:静态 2:自适应

StaticValue

获取或设置一个值,表示点标签静态时的值。

Precision

获取或设置一个值,表示点标签最大允许的精度值,255表示不做控制

HisStartTiem

获取或设置一个值,表示存放标签点历史数据的开始时间。

BindingName

获取绑定格式点名,也可理解为短点名:[PointName]。

PointDescribe

获取或设置点标签描述文本,总长度不能超过20个字节。

PointUnit

获取或设置点标签单位文本,总长度不能超过8个字节。

Position

获取或设置点标签在数据流中的位置。

实例代码:

PcmData pointinfo = this.CurrentPointInfo; string code = pointinfo.OperationCode;

●      GetPoint(点名称)

描述:得到指定点信息;

返回类型:McbData

实例代码:

McbData point = GetPoint(“DDM.Apace.test123”); DataTime pointTime = point.Time;

●      Apace.Client.NetClientManage.GetNetClient().GetPointValue(点名称)

描述:得到指定点信息;

返回类型:McbData

实例代码:

McbData point = Apace.Client.NetClientManage.GetNetClient().GetPointValue(“DDM.Apace.test123”); int pointTime = point.PointTime;

说明:

计算脚本可以使用Apace.Client程序集的所有方法,可以实现Apace客户端几乎所有的功能 ,详细方法调用请参见《Apace开发手册C#》版本;

2.5.7 计算法则实例

●     计算标签值自增

//必须的函数体GetAlgorithmValue,返回双精度结果 public Double GetAlgorithmValue() { McbData calcpoint= this.CurrentPoint; double calcvalue= calcpoint.PointValue; calcvalue += 1; return calcvalue ; }

●    计算标签随机值

//必须的函数体GetAlgorithmValue 值双精度 public Double GetAlgorithmValue() { Random random= new Random(); int value= random.Next(1, 10000); return (Double)value; }

●    计算两标签点累加值

//必须的函数体GetAlgorithmValue 值双精度 public Double GetAlgorithmValue() { McbData point1 = GetPoint(“DDM.Apace.test123”); McbData point2 = GetPoint(“DDM.Apace.test125”); If(point1!=null && point2!=null) { Double value= point1.PointValue + point2.PointValue; return value; } return Double.NaN; }

●    多点循环累加值

//必须的函数体GetAlgorithmValue 值双精度 public Double GetAlgorithmValue() { String[] points= new string[]{“DDM.Apace.test123”, ”DDM.Apace.test124”, ”DDM.Apace.test125”, ”DDM.Apace.test126”, ”DDM.Apace.test127”, ”DDM.Apace.test128”}; McbData[] pointvalues = Apace.Client.NetClientManage.GetNetClient().GetPointValueCollect(points); Double value=0; Foreach(McbData only in pointvalues) { value += only.PointValue; } return value; }

●    根据计算点名查找匹配点累加值

//必须的函数体GetAlgorithmValue 值双精度 public Double GetAlgorithmValue() { McbData calcpoint= this.CurrentPoint; String currentPointName= calcpoint.PointName; PointRule rule = BaseConfig.GetPointRule(PointName); McbData[] pointvalues = Apace.Client.NetClientManage.GetNetClient().FindPointName(rule.ServiceName, rule.DirName, currentPointName); Double value=0; Foreach(McbData only in pointvalues) { value += only.PointValue; } return value; }

可编程计算组件-Apace实时数据库产品相关推荐

  1. 趋势分析-Apace实时数据库产品

    趋势分析是对历史数据查看形式的一种衍生,趋势分析工具通过趋势图形方式为用户提供更加直观的历史数据显示效果,并能根据自身需求添加任意数据点进行对比分析. 趋势工具还加入了动态实时更新于最新的实时数据保持 ...

  2. .Net(c#) 客户端访问-Apace实时数据库

    Apace作为新一代实时数据库产品完全支持.Net Framework,并且有非常高效的访问性能,Apace实时数据产品系列中提供了支持.Net Framework SDK开发包,通过SDK,开发人员 ...

  3. Apace实时数据库“云计算”

    Apace实时数据库是一款功能全面.性能稳定.国内领先.分布式事务型.仿真直观的实时数据库产品 详见:http://www.apace.com.cn 官方网站

  4. 编程计算1+2+3+4+...+n的值超过500的和的第一个值

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p91 习题3 12.编程计算1+2+3+4+-+n的值超过500的第一个和值为多少:n的值为多少. # ...

  5. .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...

  6. php单词出现频率,PHP编程计算文件或数组中单词出现频率的方法

    本文实例讲述了PHP编程计算文件或数组中单词出现频率的方法.分享给大家供大家参考,具体如下: 如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词 ...

  7. [转]C#算法 一对小兔子一年后长成大兔子;一对大兔子每半年生一对小兔子。大兔子的繁殖期为4年,兔子的寿命是6年。假定第一年年初投放了一对小兔子,试编程计算,第n年末总共会有多少对兔子...

    /// <summary>/// 一对小兔子一年后长成大兔子:一对大兔子每半年生一对小兔子.大兔子的繁殖期为4年,兔子的寿命是6年./// 假定第一年年初投放了一对小兔子,试编程计算,第n ...

  8. java 根据经纬度计算多边形的面积_强基初中数学amp;学Python——第二十九课 根据海伦秦九韶公式编程计算三角形面积...

    问题:如果把边长都是有理数的三角形称作"有理三角形",编程计算"有理三角形"的面积(有理数或带根号的无理数,不是浮点数). 关键点分析:根号中的底化成最简分数, ...

  9. 用C语言编程计算下列表达式:s=1! 2...,2012年全国计算机等级二级C语言模拟试题及答案(3)...

    一.单项选择题1. 设int x=1,y=1;表达式(!x++ || y--)的值是_________ A.0 B. 1 C. 2 D.-1 2.main( ) {  int n; ( n=6*4,n ...

最新文章

  1. python推荐系统-RecQ-Python推荐系统框架
  2. Selenium2+python自动化43-判断title(title_is)
  3. 第三篇——第二部分——第六文 监控SQL Server镜像
  4. 函数作用域导致的问题
  5. python以运行效率高著称吗_提升Python程序运行效率的6个方法
  6. git中reset与revert的区别
  7. linux 查看文件工具,lsof---Linux查看文件信息的强大工具
  8. Flutter进阶—读取与写入文件
  9. Runtime.exec使用错误导致延迟.md
  10. 性能优化-内存泄露常见例子
  11. C语言小游戏——扫雷
  12. 码怪之程序员的日常语录
  13. 禾赛科技李一帆:别让无人车的未来被一个小传感器憋死
  14. 笔记本的无线网共享给台式机上网
  15. 户外LED透明屏与室内透明屏区别,选型号建议
  16. 中继器 网桥 路由器 网关
  17. 用python画竹子_基于Python的一个简单爬虫(糗事百科爬虫)
  18. 【其他】结构技术优化算法--蚁群算法(ant colony optimization)
  19. Oracle--使用同义词
  20. 虚拟偶像主播的大致现状,数字人技术现状

热门文章

  1. 干货丨如何使用DolphinDB进行机器学习
  2. Qt for Android设置应用图标及名称
  3. 网吧cpu性能取决于服务器,网吧电脑为什么比家里快?这些原因你可能想不到
  4. 鲁宾逊非标准微积分普及活动,六年时间大改观
  5. MR 切片机制 MR全流程
  6. 安科瑞餐饮环保油烟在线监测大平台
  7. 字节跳动正式offer之前是哪一个环节_2020字节跳动秋招调研后续来啦!原来这些岗位最受欢迎,竞争如此激烈,赶快进群领取2020字节秋招内推码,抢占先机!...
  8. linux更换浏览器,更改浏览器Firefox首选项值的方法
  9. 电源拓扑从入门到精通 - 3
  10. Nginx:vts模块(监控)