我的之前文章:使用IOT-Tree Server和InfluxDB对采集数据进行记录专门讲述运用时序数据库InfluxDB对物联网系统进行内容记录。
但是,大量的工业现场应用要求使用传统的关系数据库进行资料记录。例如:生产线每个环节都需要记录产量、合格品和NG品数量。每次记录都必须把当前PLC中的多个计数值同时获取并且形成关系数据库表中的一条记录。
通过虽然也能够使用时序数据库进行相同机制的实现,但技术的惯性和业务系统方便整合的角度有着大量的需求。
注:我之前文章:使用IOT-Tree消息流搭建实时资料同步:标签实时数据--关系数据库表。这篇文章讲述的是IOT-Tree接入现场各种设备之后的所有标签材料,经过消息流特定节点,配置定时同步的功能。关系数据库中对应的数据表每条记录对应一个数据标签Tag,并且会根据定时器不断的更新,并没有做任何的历史记录。
本文介绍的是使用IOT-Tree Server内部【关系数据库】消息流模块,对工业现场接入的设备数据进行采集和记录,满足后续的数据统计分析需。
本文对如何接入工业现场各种PLC(如西门子,欧姆龙等)不做展开了,请参考下面文章或其他IOT-Tree的文档。
使用IOT-Tree Server通过PPI协议连接西门子PLC S7-200 Smart
使用IOT-Tree Server连接西门子PLC S7-300/1200/1500
使用IOT-Tree Server借助MC协议连接三菱Q系列PLC
使用IOT-Tree Server依据FINS协议连接欧姆龙CP2E-N系列PLC
IOT-Tree完成一个具体任务的过程,非常详细,如下:
下面的内容是一个IOT-Tree项目在现场设备接入素材标签配置完毕之后,后续的配置过程。
1 配置关系数据库数据源
在IOT-Tree Server运行实例启动之后,访问管理主界面 http://localhost:9090/admin/
在数据源区块,点击添加,选择“JDBC”类型(对应关系数据库)。填写你配置好的数据库访问参数(我运用的是mysql8版本):

完成之后,点击新增数据源的测试图标,假如提示成功,说明数据源设置达成。

2 消息流配置过程
进入你的项目管理界面,本文使用IOT-Tree Server中的“Water tank and Medicament dosing ”这个Demo项目进行说明。
你要是对这个Demo项目不熟悉,可以参考下面文章(你只需要2分钟就允许配置完成项目,然后启动):
IOT-Tree快速开始
https://gitcode.com/jasonzhu8888/iot-tree/blob/main/web/doc/cn/doc/quick_start.md
2.1 新建消息流
在左下角添加消息流,在弹出对话框填写如下:

完成之后点击“数据记录”该新增的消息流程,右边就会出现流程绘制区域。
2.2 部署关系数据库节点与数据表节点
在绘制区左边节点列表,选择“存储”分类下面的“关系数据库”节点,拖拽到绘图区,就可能添加一个关系数据库节点,如图:

双击“关系数据库 1”节点,在弹出的对话框中选择之前配置的数据源。确定之后“关系数据库 1”节点的错误提示就消失了。

2.3 安装标签数据读取
大家需要一次读取多个标签,组合成一条记录接着写入到数据库表中。因此,第一步我们需要添加分类“接入与设备”下面的“标签数据读取”节点,同样拖拽添加即可:

双击打开此节点对话框选择添加多个标签如下:

其中,每个标签对应一个变量(Var)名称。这样,当此节点有任意输入消息时,就会自动读取上面定义的三个标签资料值,然后形成如下JSON格式的数据输出:
{
"wl":3.21,
"flow":23.1,
"flowt":1111
}
2.4 配置JSON到数据表Table写入过程
2.4.1 配置JSON到Table的映射
我们需要把上面节点输出的JSON格式资料写入到数据库表中。为此,IOT-Tree中的“关系数据库”模块专门提供了一个子节点“JSON To Table”,用来支撑JSON数据到数据库表的写入。
点击选中“关系数据库 1”,在左下角弹出的子节点列表中,选中“JSON To Table”拖拽到绘图区,就完毕了添加,然后双击打开编辑对话框,如下:


一个关系数据库表的设计及到JSON属性的映射关系。我们可以新增不同的数据库列定义如下:就是可以看到,此节点本质就

上面是表结构的列定义,以及每一列对应JSON格式中的属性名称。其中,ID列作为主键能够在数据插入时自动生成。确定之后我们就完成了这个节点的配置。
但是:你肯定疑惑了,上面配置了这么多——数据库表设置在哪里?
2.4.2 配备数据库表
别着急,我们再次选中“关系数据库 1”,拖拽子节点“DB Table”到绘图区,之后把“JSON To Table 1”中的“Relational DB Table”端子与此关联,如图:

双击打开“DB Table 1”,填写Table Name=water_rec

我们把“标签数据读取 1”的第一个输出端子与“JSON To Table 1”的输入端子连接,最终效果如下:

2.4.3 生成数据库表
点击选中“JSON To Table 1”,在节点右下角的面板展开图标进行展开,可以看到里面有个“Create Table”按钮,点击此按钮,就会自动在数据库中建立表“water_rec”:

我们可以到mysql数据库中查看这个表结构:

可以看到,数据表water_rec除了自动生成我们上面定义的列之外,还有个特殊时间戳列“_rec_ms”。此列在数据插入时会自动写入当前的时间戳(unix毫秒数)。
2.5 使用标签触发方式
2.5.1 手动触发测试结果
通过大家可以添加一个“手动触发器”,连接“标签信息读取1”。点击触发标记,然后我们查看数据库表,就能够发现有一条记录添加成功:


2.5.2 定时触发
你能够使用“定时触发器”放到“标签数据读取1”前面,并且设定时间间隔,就可以定时读取数据并写记录到数据库表中,太简单不展开了。
2.5.3 特定条件触发
这个比较重要:在很多现场做这种记录时,必须根据一定的条件触发,否则获取的内容可能是无效的。比如,生产线系统一些测量数据必须一定的时间才能达成,PLC这边一般需要有个完成测量标记M地址——用来告诉上位系统(如IOT-Tree Server):“本次测量完成,A B C三个地址的数据现在是有效数据,你行取数据了。”
不同的标签而已,只需要监听M地址对应的标签值,当发生变化时才触发获取A B C对应的标签值。就是对于IOT-Tree来说,A B C和M这四个地址,都
还是在分类“接入与设备”中,选择“标签变化触发器”,放置“标签数据读取 1”前面,设置里面监听的标签即可。

3 运行效果

通过上面整个过程看起来内容有点多,实际几分钟就许可完成。许可发现,采用IOT-Tree Server完全许可作为生产线边缘配套软件使用,能够随着每个不同的产线做敏捷适配,最大限度的降低系统成本。
事实上,我们已经在国内某个先进的生产线上使用了IOT-Tree Server作为边缘配套,一个20多个环节的产线(每个环节都有独立的PLC),只用了5天就完毕了PLC接入、数据点位的配置采集,生产过程的记录、并预留了OPC UA、RESTful和关系数据库等各种接口——为用户的MES或ERP平台打好了底层基础。

浙公网安备 33010602011771号