服务名称

文档链接

控制器服务,是Fox-Edge中的系统级服务,它作用是允许用户对南向设备进行自动化采集,进行简单、通用的业务编排。

在一个自动化系统,它能够按照指定的业务流程,对南向设备进行自动化的控制。 在它的内部中,这个按照指定的 业务流程 进行过程控制的 自动化模块 ,在物联网领域,通常被称为 控制器

在现实项目中,由于各种项目都有自己的业务流程,所以各种控制流程就跟着五花八门,然后形成了各种各样的控制器。

简单来说,就是控制器面向具体项目,基本上需要用户针对具体的项目进行自行开发。

控制器可以按很多维度进行划分,包括按硬件/软件维度划分,也可以按内置/外置维度划分,也可以按通用/专用维度划分。

例如市场上有类产品叫PLC(可编程控制器),它属于硬件、外置、通用的控制器。

而Fox-Edge则提供了一个自带的控制器服务,它是用JAVA开发的软件、内置、通用的控制器。

Fox-Edge提供这个控制器的目的,主要是考虑到Fox-Edge作为 数字化运营 领域的边缘计算产品,很多用户需要一个: 能够进行对南向智能设备,进行简单的业务编排后,进行周期性数据采集的控制器

帮助他们直接使用Fox-Edge对南向智能设备进行周期性的数据采集。 并且在后续必要的时候下,在面对一些更复杂的物联网项目控制需求的时候,能够照猫画虎,开发一个自定义的控制器服务。

它是一个关键性的基础服务,被定义为 系统 级别。

服务安装

在组件仓库中,选择controller-service组件进行下载和安装。

全局配置

在Fox-Edge之中安装控制器服务之后,会自动生成 服务名称:controller-service 和配置名称:serverConfig 的默认系统参数,作为该服务的工作参数。

该参数主要是指明,是否需要对编排的任务,进行时间均摊式的对设备进行逐个执行操作。

例如,某个数据采集任务,在每60秒内对100个设备进行周期采集,可以在第1秒内就密集的进行100个设备的采集,也可以在以0.6秒的时间间隔对每个设备进行采集。

前者能够对所有设备获得同一时刻的数据,但是在第1秒的CPU、网络压力会产生瞬间压力。而后者能够会降低CPU和网络的占用率,但采集周期分布在整个任务周期内。

{
     "average": true
}
参数说明:控制器的系统级参数
{
     "average": false -------------------是否将轮训任务中,对每一个设备的操作,平均分布到整个周期上,可以均摊CPU的负荷
}

设备操作任务

在按照设备服务、通道服务、持久化服务、控制器服务后,就可以进行自动化采集业务的编排了。

此时,可以先通告设备操作任务,对具体的设备进行单个命令的操作测试。

通过该功能可以判断设备是否可以通讯上,同时自己配置的操作命令,是否参数正确,设备返回的数据是否正确。

设备操作任务的参数,是一个对象形式的JSON格式参数,其中param是设备解码器指定的参数格式,它会与设备中的JSON参数进行合并,传递给解码器。

MODBUS的设备解码器,它指明了必须填写devAddr/modelName/modbusMode参数,那么按该解码器的要求,填入指定的参数

[
     {
          "param": {
               "regCnt": 1,
               "devAddr": 1,
               "regAddr": 0,
               "modelName": "济南威诺安防设备有限公司|可燃气体报警控制器(QD6000)|Holding Registers",
               "modbusMode": "RTU"
          },
          "timeout": 2000,
          "deviceName": "范例:QD6000",
          "deviceType": "ModBus Device",
          "operateMode": "exchange",
          "operateName": "Read Holding Register",
          "manufacturer": "Fox Edge"
     }
]

[
     {
          "uuid": "aa0a7b79-e215-4f58-9332-627e337fe8cd",
          "operateMode": "exchange",
          "deviceName": "范例:QD6000",
          "deviceType": "ModBus Device",
          "manufacturer": "Fox Edge",
          "operateName": "Read Holding Register",
          "param": {
               "regCnt": 1,
               "devAddr": 1,
               "regAddr": 0,
               "modelName": "济南威诺安防设备有限公司|可燃气体报警控制器(QD6000)|Holding Registers",
               "modbusMode": "RTU"
          },
          "timeout": 2000,
          "record": true,
          "data": {
               "commStatus": {
                    "commSuccessTime": 1717597637682,
                    "commFailedCount": 0,
                    "commFailedTime": 0
               },
               "value": {
                    "status": {
                         "1号探测器浓度": 0
                    }
               }
          },
          "code": 200,
          "msg": ""
     }
]

设备监控任务

当通过设备操作任务,对设备进行某个操作命令的测试通过后,说明该操作的配置参数是正确可用的。 那么,可以在 设备监控任务 中,创建一个监控任务,并将 设备操作任务 参数贴入其中。

设备监控任务的参数,是一个数组形式的JSON格式参数,每个数组元素都是某个设备操作任务的JSON对象参数。

CE+T UPS的某个监控任务,它包含3个命令,此前每个命令都在设备操作任务中单独测试通过。

[
     {
          "param": {
               "tableName": "DLT645-v1997/v1/DLT645-1997.csv",
               "objectName": "(当前)正向有功总电能",
               "deviceAddress": "351253111111"
          },
          "timeout": 2000,
          "operateMode": "exchange",
          "operateName": "读数据"
     },
     {
          "param": {
               "tableName": "DLT645-v1997/v1/DLT645-1997.csv",
               "objectName": "(当前)反向有功总电能",
               "deviceAddress": "351253111111"
          },
          "timeout": 2000,
          "operateMode": "exchange",
          "operateName": "读数据"
     },
     {
          "param": {
               "tableName": "DLT645-v1997/v1/DLT645-1997.csv",
               "objectName": "(当前)正向无功总电能",
               "deviceAddress": "351253111111"
          },
          "timeout": 2000,
          "operateMode": "exchange",
          "operateName": "读数据"
     }
]

采集数据

在完成设备监控任务的编排之后,控制器服务会对每个设备进行自动化的数据采集,并将采集到的数据发送给持久化服务保持, 此时你可以在设备数值页面和设备记录页面,看到采集的设备状态数据和设备记录数据。