欢迎光临散文网 会员登陆 & 注册

控制逻辑

2023-03-25 08:30 作者:北京微控工业网关  | 我要投稿

  通过控制逻辑功能可按照不同的判断条件对所关联的点进行不同操作,控制逻辑分为四种类型:启动、循环、定时和数据改变。控制逻辑支持javascript脚本语言。

  在控制模式下,点击《控制逻辑》,在对应的类型下新建控制逻辑

《启动》逻辑

  运行程序启动时会执行此脚本,目前仅支持“运行状态”中的“启动前”类型。

  当需要给变量设置一个固定的初始值时可以通过”启动”逻辑中的”运行前”配置变量的初始值。

  点击《逻辑控制》,《启动》,《新建逻辑》,

  ◆运行状态:目前仅支持“运行前”

  ◆描述:对此逻辑的的描述

  ◆变量名:变量名为自定义,变量名命名仅支持以字母为开头,并且除下划线外不允许有其它符号,在填写变量名时需要注意

  ◆点名:勾选要关联的系统点

  ◆代码:编写控制逻辑代码

  填写好相应的信息点击《创建》,然后《重启》生效

《循环》逻辑

  此功能是按照循环间隔时间来实现控制逻辑的执行,循环间隔以秒(s)为最小间隔时间。

描述为“1”和不为“1”是两种编写模式。

当《描述》不为《1》时

  点击《控制逻辑》下的《循环》,然后点击《新建逻辑》

  ◆名称:自定义

  ◆描述:对此逻辑的说明描述

  ◆循环间隔(s):脚本执行间隔时间,以秒为单位,最小可以设置1秒

  ◆变量名:变量名为自定义,变量名命名仅支持以字母为开头,并且除下划线外不允许有其它符号,在填写变量名时需要注意

  ◆点名:选择本系统中数据点

  ◆代码:填写要执行的脚本代码

  以上信息配置完成。点击《创建》,然后《重启》生效

  上图表示每隔2秒对点1和点2赋值一次,点自增5.

当《描述》配置为《1》时

  可使用JavaScript语言编写,并且支持JavaScript的函数库,同时提供了两个函数可供使用:

   获取值函数:qso.GetValue(‘采集点名’)

   返回值:数值

   设置值函数:qso.SetValue(‘采集点名’,数值);

   返回值:无

   获取文件内容函数:qso.ReadFile(‘文件名’);

   返回值:文件内容

   获取点数值是否有效:qso.GetValid(‘采集点名’);

   返回值:数据点数值有效返回true,数据点数值无效返回false

   延时函数:qso.Delay(毫秒);

   返回值:无

  qso.GetValue('Serial1.设备1@电压');,可以获取电压值;

  qso.SetValue('Serial1.设备1@电流',2);,可设置电流值为2。

   ◆名称:自定义

   ◆描述:必须设置为“1”

   ◆循环间隔(s):脚本执行间隔时间,以秒为单位,最小可以设置1秒

   ◆变量名:无需配置

   ◆点名:无需配置

   ◆代码:填写要执行的脚本代码

  配置完上述点击《创建》,然后点击《重启》生效

  上图表示每30秒执行一次电表累加计算脚本

《定时》逻辑

  此功能是在固定的时间执行某个逻辑脚本

  描述为“1”和不为“1”是两种编写模式

当《描述》不为《1》时

  点击《控制逻辑》下的《定时》,然后点击《新建逻辑》

  ◆名称:自定义

  ◆描述:对此逻辑的说明描述

  ◆时间:填写执行此脚本的时刻,格式为 xxxx-xx-xx xx:xx:xx, “x”代表不指定,

  ◆变量名:变量名为自定义,变量名命名仅支持以字母为开头,并且除下划线外不允许有其它符号,在填写变量名时需要注意

  ◆点名:选择本系统中数据点

  ◆代码:填写要执行的脚本代码

  以上信息配置完成。点击《创建》,然后《重启》生效

  以上表示点1每天00点赋值100,点2每天00点自增1

当《描述》配置为《1》时

  点击《控制逻辑》下的《定时》,然后点击《新建逻辑》

  当“描述”配置为“1”时可使用JavaScript语言编写,并且支持js的函数库,同时提供了两个函数:

   获取值函数:qso.GetValue(‘采集点名’);

   返回值:数值

   设置值函数:qso.SetValue(‘采集点名’,数值);

   返回值:无

   获取文件内容函数:qso.ReadFile(‘文件名’);

   返回值:文件内容

   获取点数值是否有效:qso.GetValid(‘采集点名’);

   返回值:数据点数值有效返回true,数据点数值无效返回false

   延时函数:qso.Delay(毫秒);

   返回值:无

  qso.GetValue('Serial1.设备1@电压')函数可以获取电压值;

  qso.SetValue('Serial1.设备1@电流',2)可设置电流值为2。

   ◆名称:自定义

   ◆描述:必须设置为“1”

   ◆时间:填写执行此脚本的时刻,格式为 xxxx-xx-xx xx:xx:xx, “x”代表不指定,

   ◆变量名:无需配置

   ◆点名:无需配置

   ◆代码:填写要执行的脚本代码

  以上信息配置完成。点击《创建》,然后《重启》生效

《数据变化》逻辑

  此功能是根据某个变量的实时数据变换为条件,执行某个逻辑脚本

  描述为“1”和不为“1”是两种编写模式

当《描述》配置不为《1》时

  点击《控制逻辑》下的《数据变化》,然后点击《新建逻辑》

  ◆名称:自定义

  ◆描述:对此逻辑的说明描述

  ◆变量名:变量名为自定义,变量名命名仅支持以字母为开头,并且除下划线外不允许有其它符号,在填写变量名时需要注意

  ◆代码:填写要执行的脚本代码

  以上信息配置完成。点击《创建》,然后《重启》生效

  注:此方法不推介使用,数据改变再操作数据,会造成死循环。

当《描述》为《1》时

  点击《控制逻辑》下的《数据变化》,然后点击《新建逻辑》

  当“描述”配置为“1”时可使用JavaScript语言编写,并且支持js的函数库,同时提供了两个函数:

   获取值函数:qso.GetValue(‘采集点名’);

   返回值:数值

   设置值函数:qso.SetValue(‘采集点名’,数值);

   返回值:无

   获取文件内容函数:qso.ReadFile(‘文件名’);

   返回值:文件内容

   获取点数值是否有效:qso.GetValid(‘采集点名’);

   返回值:数据点数值有效返回true,数据点数值无效返回false

   延时函数:qso.Delay(毫秒);

   返回值:无

  var dianliu = qso.GetValue('Net1.厂区配电数据.厂区配电设备@总进线柜A相电流');

  if(dianliu >= 10){qso.SetValue('Net1.厂区配电数据.厂区配电设备@总进线柜断路器',1);

◆名称:自定义

◆描述:必须设置为“1”

◆变量名:无需配置

◆点名:选择本系统中此逻辑条件的变化数据点,可以多选

◆代码:填写要执行的脚本代码

  以上信息配置完成。点击《创建》,然后《重启》生效

  上述配置表示,电流值发生变化执行逻辑脚本,当电流值大于10时断开断路器

常见控制逻辑脚本问题

基于ECMAScript的脚本

  基于ECMAScript脚本语言,使用ECMA-262标准。微软的JScript和网景的javascript也是基于ECMAScript标准,有关 ECMAScript的概述,可以查看ECMAScript标准。如果你不熟悉ECMAScript语言,有一些指导和书籍,例如JavaScript: The Definitive Guide.

  http://www.ecma-international.org/ecma-262/

Mathmax的使用

  在使用Math.max()前最好先将数据做Number() 计算,把对象的值转换为数字。

  要确保参数是数字类型的,如果不确定是不是数字需要先将参数做Number()后再使用Math.max()


控制逻辑的评论 (共 条)

分享到微博请遵守国家法律