系统概述
功能概述
DAQ for IIOT通用工业数据采集系统是一套运行在边缘计算机上的设备数据采集与管理软件,主要用于对各种仪器设备(PLC、注塑机、数控机床、电表、流量计等)数据的采集、控制、存储、查询、展示以及上传。
系统主体功能包括:
- 灵活的传输配置(链路、存储、设备、因子、上传服务)
- 数据采集和上传
- 实时监控(设备、上传)
- 告警配置和监控
- 数据存储和查询(表格、图表、Web API)
- 组态和可视化设计
- 用户及权限管理
- 界面多语言支持
运行环境
支持设备
支持通信链路
系统支持的部分通信链路包括:
支持通信协议
系统支持的部分通信协议包括:
名词解释
设备
系统采集来自一台设备的数据,设备需具有通信接口,以及使用特定的通信协议进行通信。设备可以是一台检测仪器、一个小型仪表、一个传感器,甚至是一块单独的PLC。
因子
因子是设备的属性,包括设备的测量值、状态、控制单元等。例如对于一台测量仪器来说,以下属性可以称为一个因子:
- 最新测量值(测量值)
- 当前设备状态:测量中、待机中、故障等(状态)
- 启动测量、停止测量(控制单元)
链路
系统与设备的物理连接方式以及基础通信协议,即通信过程中链路层以下的部分。例如可以是使用串口通信线,使用UART通信协议;或是使用网线,使用TCP/IP通信协议。支持多设备共用一条链路。
驱动
一个功能模块,实现采集、上传、存储等功能。根据功能划分,包括采集驱动(实现采集通信协议解析)、上传驱动(实现上传通信协议解析)、链路驱动(实现特定链路的连接与数据收发)、存储驱动(实现特定数据库的存储与操作)等。
上传服务
系统向平台或其他设备上传数据,使用特定的链路和通信协议。
上传因子
要上传至平台或其他设备的因子。
软件安装与认证
在64位Windows系统上安装
环境准备
在系统安装之前,请确保.NET6已经成功安装。可到微软官网下载安装.NET6。
https://download.visualstudio.microsoft.com/download/pr/9b8baa92-04f4-4b1a-8ccd-aa6bf31592bc/3a25c73326e060e04c119264ba58d0d5/dotnet-sdk-6.0.418-win-x64.exe
如果是比较旧的Windows系统,可能需要先安装以下必备包(在安装过程中如提示无法启动服务,一般即是需要安装必备包):
必备包1:
https://download.visualstudio.microsoft.com/download/pr/b929b7fe-5c89-4553-9abe-6324631dcc3a/296F96CD102250636BCD23AB6E6CF70935337B1BBB3507FE8521D8D9CFAA932F/VC_redist.x64.exe
必备包2:
https://download.microsoft.com/download/0/8/E/08E0386B-F6AF-4651-8D1B-C0A95D2731F0/Windows6.1-KB3063858-x64.msu
软件安装
下载安装包之后,运行安装程序,如下图所示:
选择安装目录,点击开始安装按钮,即可完成系统安装。
打开管理页面
系统安装完成以后,可使用现代浏览器(推荐Edge或Chrome),地址栏输入 http://localhost:16801/scada.html ,访问管理页面。由于系统需要登录,首先会进入到登录页:
默认存在的系统账号:
登录以后可进入到系统主页,如下图所示:
如有需要,系统可自由切换界面语言,下图为英文界面:
系统认证
系统具有14天的试用期,试用期结束之后,系统需要认证才能正常使用(否则系统无法采集数据)。认证操作在系统配置页面(设置->系统配置)完成:
认证流程为:
- 复制机器码,提供给供应商。
- 从供应商处获取认证文件。
- 上传认证文件。
需要注意的是,一个认证文件只能认证一台计算机。
传输和存储配置
传输架构
采集、上传以及存储的系统架构图如下所示:
一般情况下,系统完成的核心功能是从设备采集数据,把数据存储,并上传至平台。每种传输都需要使用一个通信链路,以及采用某种的通信协议。那么,整个传输和存储过程,就会存在以下的模块:
- 通信链路
- 采集协议
- 上传协议
- 存储方案
对应于每个模块,系统都采用了驱动+配置的模式来满足需求。以存储方案为例,存储驱动包含了以某种数据库(如MySQL)存储数据的代码,而存储配置则包括连接字符串、何时去存这些内容。
驱动管理
驱动是实现特定功能的代码库,可根据需要导入系统。下面是采集驱动的管理页面:
一般从供应商处获得驱动,上传至系统,经过配置之后即可使用。对于特定的应用场景,也可根据开发文档,自行进行驱动的开发。
数据采集配置
数据采集需要配置存储方案、通信链路以及通信协议。
存储方案
每个设备都可以选择不同的存储方案(也可以全部设备选择相同的存储方案)。存储方案管理页面(存储管理->存储方案)如下图所示:
在存储方案中,可以选择存储的数据库类型、存储时机、是否存储状态、数据格式等。
支持数据库
系统支持SQLite、SQL Server、MySQL等数据库。
连接字符串
对于SQLite数据库,连接字符串填写文件路径,如:
D:\db\mydb.db
SQL Server的典型连接字符串格式为:
Data Source=MY-COMPUTER\SQLEXPRESS;Initial Catalog=mydb;User Id=sa;Password=password;
MySQL的典型连接字符串格式为:
User ID=root;Password=password;Host=localhost;Port=3306;Database=mydb;
存储时机
存储时机有两种类型,分别是间隔时间和指定时间。
间隔时间需要填入一个以ms为单位的时间,每次达到这个间隔时数据会存储一次。例如填入60000,即为一分钟存储一次。
指定时间的填写格式为:`HH:mm HH:mm HH:mm`,只支持填写小时和分钟。在每天的指定时间点,数据会存储一次。例如填入`08:00 12:00 16:00 `,数据将会在8点、12点、16点各存储一次。
数据格式
数据格式包括字符串和数字。如果系统采集到的所有数据都为数字,建议使用数字格式,能够节省空间和提高性能。如果数据中包括非数字的字符串,那只能选择字符串格式。
存储状态
勾选存储状态后,数据库在存储数据的同时,存储设备当前状态。当设备处于离线状态时,采集数据仍会是上一次采集到的值。设备状态具体值见附录1。
数据库维护
当传输配置修改之后,数据库结构会作出相应的修改。为了清理冗余的结构和数据,系统提供了三种维护操作:
清洗表结构:清除不使用的列和不使用的表。
清空数据:清空所有数据。
重建表结构:清除旧的结构和数据,重新创建表结构。
链路配置
链路配置页面(传输配置->链路配置)如下图所示:
目前支持的链路类型及需要配置的内容如下表所示:
设备配置
设备配置
设备配置主要是对通信协议的配置。设备配置页面(传输配置->设备配置)如下图所示:
设备采用不同的驱动,配置信息会有所差异。但某些信息是所有设备都需要配置的,如下表所示:
因子配置
设备包含因子(没有添加因子的设备一般不会采集数据),因子配置页面(从设备配置页面,点击某一设备最右侧的按钮进入)如下图所示:
采用不同驱动的设备,因子需要配置的信息有所不同。几个公共属性说明如下:
数据上传配置
数据上传需要配置通信链路以及通信协议。其中通信链路的配置跟采集是一致的。
上传服务配置页面(传输配置->上传配置)如下图所示:
上传服务中需要配置上传的因子,在上传因子配置页面(从上传配置页面,点击某一上传服务最右侧的按钮进入)进行配置,如下图所示:
配置内容根据协议的不同会有所差异,以下为各上传因子共有属性:
编码
对于大部分的上传协议,都是如果填写,就以编码上传,如果不填写,就以因子原来的名称上传。例如对于MQTT上传协议,假设因子是设备1.因子1,如果不填写编码,上传的topic是data/设备1.因子1;如果填写了编码code1,那么上传的topic是data/code1。
配置导入和导出
配置导出
在配置导出页面(传输配置->配置导出)中导出配置,如下图所示:
导出过程中,需要选择导出的设备和上传服务。导出时,相关的链路配置、存储方案会同时被导出。
配置导入
在配置导入页面(传输配置->配置导入)中导入配置,如下图所示:
导入配置时,由以下选项,可根据实际情况进行选择:
清空配置:清除所有已配置内容。
直接覆盖:先清除原来所有配置,再添加导入的配置。
补充配置:增量式地添加导入配置,如果原有配置和导入配置具有相同ID或名称,则不会使用导入配置。
实时监控
系统启停
在系统标题栏的位置,可以启动或停止系统,如下图所示:
此处的启停是对整个系统的启停(包括采集和上传),如果希望暂停某一设备或某一上传服务,可在设备监控和上传监控页面进行操作(禁用或启用)。
设备监控
如果需要查看当前的采集状态,可打开设备监控页面(数据监控->设备监控),如下图所示:
在此页面中,可以:
- 查看设备的实时状态。关于设备状态的说明,可参照附录1。
- 查看每个因子的实时值,以及当前数据时间。
- 启用或禁用设备。
- 反控设备,修改因子值。此操作会向设备发送改值、写入命令,并不是虚拟的改值。
上传监控
在上传监控页面(数据监控->上传监控)中,可查看当前上传的状态,如下图所示:
同时可以在此页面中暂停上传。
历史数据查询
数据查询
可以使用表格或图表的方式查询历史数据。若在数据查询时发现没有数据,可能的原因有:
- 因子配置时,是否存储没有勾选。
- 数据库配置,存储时机为不存储。
- 没有启动采集。
- 还没出现一项合法数据。
表格方式
使用表格方式查询到的数据为详细数据,数据查询页面(统计分析->数据查询)如下图所示:
在页面左侧选择需要查询的因子,选择起始时间和结束时间,即可查询出结果。
当数据前方出现类似[Ex]的标志时(或数据以@开头),表示数据异常,此时的数据只是历史保留值,实际上不可采用。例如当链路断开、或是设备禁用,若查询结果依然有值,此时的结果并没有意义。中括号中的代表为设备状态,可参照附录1。
图表方式
使用图表方式查询到的数据仅为简略数据(当数据量比较大时,图表中不会展示出所有数据),数据图表页面(统计分析->数据图表)如下图所示:
告警配置与监控
告警配置
在告警配置页面(传输配置->告警配置)进行告警的配置,如下图所示:
每条告警,可以配置的信息包括告警标题、告警级别以及触发告警发生的条件。在触发条件中使用的表达式为逻辑表达式,因子使用大括号包围,具体内容可参考附录2。
告警存储
默认情况下,告警信息是不存储的。需要存储时,需要进行存储方案的设置。在告警存储方案设置页面(存储管理->告警存储方案)中进行存储方案的设定,如下图所示:
一般情况下只需要填写连接字符串即可。
最后,回到告警配置页面(传输配置->告警配置),点击右上角的第二个按钮,选择告警存储方案即可:
告警监控
系统实时产生的告警信息,可在告警监控页面(数据监控->告警监控)中进行查看:
告警查询
系统产生的所有告警信息,可在告警查询界面(统计分析->告警查询)中进行查询,如下图所示:
用户和权限管理
默认用户
系统默认会存在两个用户,如下表所示:
正式使用系统之后,如果需要使用权限控制,应修改初始密码。
用户角色
系统定义的角色及其权限如下表所示:
组态可视化
功能概述
本系统提供组态和可视化功能,具有强大的低代码可视化搭建编排能力,配置简易、控件丰富、自定义程度高。结合数据采集与控制系统,能够实现实时和历史数据的显示,以及设备实时控制。
系统支持以下功能:
- 可添加用户自定义图片(支持JPG、PNG、GIF、SVG等格式)。
- 可添加用户自定义组件。
- 支持表格和图表等数据展示组件。
- 可显示实时数据和历史数据。
- 可向设备发送控制指令。
- 提供大量辅助设计功能(辅助线、标尺、磁吸、对齐等)。
应用示例
以下为使用可视化功能设计的页面:
界面介绍
可视化首页
系统首页如下图所示:
可在此页面中添加多个视图。对于每个视图,点击画面可进去运行页面,点击右下角的设计按钮进行设计画面。
可视化设计页
系统设计页如下图所示:
页面总局
设计页顶部是标题栏,点击视图名称可修改名称,点击预览按钮进入运行页。
主体部分的左侧是资源库,包括组件库和图片库,可拖动资源到主画布中。
主体部分的右侧是属性配置面板,选中不同的元素,将显示该元素特有的属性配置。
主体部分的中心是主画布,可在其中拖动资源和调整资源位置。主画布下方是缩略图和显示比例,主画布的位置通过此处进行移动和缩放。
一般设计步骤
设计页的操作步骤一般是:
1. 从资源库中拖动资源至画布中。
2. 调整资源的大小和位置。
3. 修改资源的样式、数据源和触发事件。
资源库
系统的资源库包括两种,分别是组件库和图片库。
图片库中的元素只是单纯的图片,用户可上传自定义图片,支持的格式包括png、jpg、gif、svg等。
组件库中的元素包含了代码功能,能够提供较为丰富的交互功能,例如是图表、进度条、输入框等。用户也可以根据开发文档进行组件的开发,然后上传至系统使用。
资源属性
不同种类的资源具有不同的属性,例如矩形有圆角半径的属性、管道有流动形状的属性。但所有的资源,其属性都可分成三部分,分别是样式、数据库和事件。
样式部分包括大小、位置、颜色、字体等信息。
数据源部分定义了资源如何进行动态变化,通过填写表达式完成功能。例如在显示条件里填写{D1.F1}==1这样的表达式后,资源将在D1.F1为1时显示,其他情况则隐藏。又如文本文字,填写当前值为:{D1.F1}这样的表达式后,资源将在D1.F1为1时,显示出这样的文字:当前值为:1。
事件部分定义了在运行页面上,对资源进行一些操作之后所发生的事情。例如在点击事件中填写{D1.F1}=2,那么用户在点击资源后,系统将向设备发出修改值为2的指令。又如在输入框修改值事件中填写<var1>=value,当用户在输入框中输入了12.5这样的内容后,变量var1的值就会变为12.5。
可视化运行页
运行页中只有设计出来的内容,没有额外的页面元素,如下图所示:
在运行页面,可使用的功能包括:
- 显示实时采集到的设备数值。
- 显示数据历史记录。
- 显示动态变化的系统流程。
- 通过操作页面元素,向设备下发指令和数值。
- 切换至不同的视图页面。
数据源
数据引用
在数据源中引用因子,在因子名称外加大括号,其表达式为:
{设备名.因子名}
在数据源中引用临时变量,在变量名称外加尖括号,其表达式为:
<变量名>
文字数据源
文字数据源可正常书写文字,在需要引用数据的地方,插入引用表达式即可。如:
当前测量值为:{D1.F1} mg/L
条件数据源
条件数据源要求书写内容为逻辑表达式,如:
{D1.F1}>=10 && {D1.F2}<=30
图表数据
读取因子数据的格式为:
factor|factors|minutes|interval|format
第一个factor为固定字符串。
factors是因子名称列表,用逗号隔开,如D1.F1,D1.F2。
minutes是取最近多少分钟的数据。
interval是间隔多少分钟一条数据。
format是时间显示的格式,年月日时分分别用yyyy、MM、dd、HH、mm表示。
以下举一个例子。取D1.F1和D3.F1的数据,取一个小时内的,每5分钟一条数据,时间的显示格式为HH:mm,那么填写内容为:
factor|D1.F1,D3.F1|60|5|HH:mm
事件
事件概述
每一个事件,可以包含多条指令,指令之间使用分号相隔,如:
指令1;指令2;指令3
指令类型包括修改因子、修改变量、切换页面等。
修改因子事件
修改因子事件的格式为:
{设备名.因子名}=值
其他,值可以是一个固定数字,也可以是一个变量,如:
{D1.F1}=<var1>
值改变事件
某些控件(如输入框),具有值修改事件。当事件发生时,使用value指代新修改的值。格式为:
因子或变量=value
以下举一个例子,实现这样一个功能:在视图中加入一个输入框和一个按钮,点击按钮时,把输入框的值发送给因子D1.F1。要完成这样一个功能,可在输入的值改变事件中输入:
<var1>=value
然后在按钮的点击事件中输入:
{D1.F1}=<var1>
页面切换事件
页面切换事件的格式为:
page=页面名[,new]
如果要替换当前页面,则命令为:
page=页面名
如果要打开新的页面,则在命令后加上,new,如下所示:
page=页面名,new
附录1 设备状态代码
设备状态代码及意义如下表所示:
附录2 数据源与表达式
A2.1 变量引用
在设备配置中,通过配置一个因子对硬件进行读写。在使用表达式的地方,这个因子就指代了对应的硬件。使用设备名.因子名表示因子。
例如,添加了一个使用Modbus协议的设备D1,再添加一个因子F1,读写寄存器40001地址的值。那么,D1.F1,就代表了寄存器40001。
在表达式中,变量需要书写在大括号中:
{设备名.因子名}
对于自身的引用,可以使用this:
{this}
A2.2 表达式类型
系统中使用的表达式有4种,分别是:
数值表达式:计算的结果是一个数值,例如:{a}*2.5+3
逻辑表达式:计算的结果是一个逻辑值,例如:{a}>10
文字表达式:只能计算大括号中的内容,没有固定格式,例如:a的值为{a}mg/L
命令表达式:中间有等号,等号左边是变量,右边的赋值内容,例如:{a}=10
A2.3 因子配置表达式
在因子配置中,可以输入一个表达式。这一般用在采集值与实际展示值之间存在某种函数关系的情况。例如,采集值以kg为单位,但存储要求以g为单位。那么,此值采集后,便需要使用表达式进行转换。
因子配置表达式是一个数值表达式。以上述例子为例,假设因子为D1.F1,实际要将此因子乘以1000。表达式可以写为:
{D1.F1}*1000
由于表达式里填写的因子就是本因子,所以也可以使用this替代,为:
{this}*1000
当表达式只是简单地乘以一个倍率,或加上一个偏差值(只能是乘或加),可以直接简写为:
*1000
或
+10
附录3 MODBUS配置说明
A3.1 驱动和链路选择
Modbus协议包括三种,分别是Modbus-RTU、Modbus-TCP和Modbus-ASCII,需要根据实际选择合适的采集驱动。三种通信协议都可在TCP客户端或串口链路下进行通信。
A3.2 采集间隔选择
对于Modbus通信协议,采集间隔和周期等待都可设置为0,接收等待需要在100ms以上。如果发现接收数据时出现数据混乱的情况,一般是接收等待时间不够造成的。出现这种问题,可适当增加接收等待时间。如果希望知道准确一点的时间,可向设备发送一条Modbus指令,观察数据回复的时间。
A3.3 存储模式
Modbus协议中定义了多种数据存储的空间,包括寄存器、线圈、输入寄存器和输入线圈。使用何种存储模式,根据文档说明进行选择。
A3.4 通道类型
对于寄存器,通道类型是多样的,包括FLOAT、INT、BIT等;而对于线圈,通道类型只有BIT。
多字节的数据,不同的设备字节的存储顺序会有差异,需根据实际情况进行选择。以下是常用的字节顺序:
A3.5 按位取值
存储模式选择寄存器,通道类型选择BIT,则可以按位取值。起始地址是寄存器的地址,位地址则说明取第几位的数据。位地址从右到左,也就是最右一位是第0位。
A3.6 连续地址
如果有若干个因子通道类型相同,地址连续,可以进行一次配置。在通道数量中填入超过1的数值即可,自动创建的因子地址会根据通道类型自动调整。以下列出通道数量填入5之后的实例: