`
ykk81ykk
  • 浏览: 12072 次
社区版块
存档分类
最新评论

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

 
阅读更多

  可编程计算组件面向的客户要求比较高,但其主要目的是提供给软件制造企业在为客户提供解决方案时可通过动态编程的方式来耦合其业务逻辑。 有些应用系统中有部分业务数据需要通过现场实时数据进行相应的算法产生,这时编程计算组件可帮助您的应用系统和业务解耦,可编程计算组件适合:电力行业(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().GetPoi ntValue(点名称)
  描述:得到指定点信息;
  返回类型:McbData
  实例代码:   McbData point = Apace.Client.NetClientManage.GetNetClient().GetPoi ntValue("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().GetPoi ntValueCollect(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().FindPo intName(rule.ServiceName, rule.DirName, currentPointName); Double value=0; Foreach(McbData only in pointvalues) { value += only.PointValue; } return value; } 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics