网站建设方案及预算,巩义网站推广,电子商务平台经营者的特点体现在,某些网站dns解析失败在烟草工业场景里#xff0c;多数设备的自动控制都是通过 PLC 可编程逻辑控制器来实现的#xff0c;PLC 再将采集的数据汇聚至 OPC 服务器。传统的 PI System、实时数据库、组态软件等与 OPC 相连#xff0c;提供分析、可视化、报警等功能#xff0c;这类系统存在一些问题多数设备的自动控制都是通过 PLC 可编程逻辑控制器来实现的PLC 再将采集的数据汇聚至 OPC 服务器。传统的 PI System、实时数据库、组态软件等与 OPC 相连提供分析、可视化、报警等功能这类系统存在一些问题
收费是按照测点数进行的价格昂贵而且需要有商务谈判才能开始 PoC无法在购买决策前做足够的验证测试工作系统封闭如果想集成一个新的 BI、AI 或可视化工具需要原厂商的支持十分困难数据的实时分发、分享功能薄弱架构落后往往基于 Windows部署维护还十分复杂。
借助 TDengine 3.0 云服务或 TDengine Enterprise企业版上述问题便可迎刃而解。作为物联网、工业大数据平台TDengine 内嵌对 OPC UA/DA、MQTT 等协议的支持。通过网页上简单的配置无需一行代码就能将 PLC 采集的数据通过 OPC 连接器源源不断的写入 TDengine再通过与可视化工具 Grafana、BI 工具如 Power BI、帆软、永洪的无缝集成就可以提供数据的可视化、报表、报警等系列功能。而且由于 TDengine 支持标准的 JDBC、ODBC 接口众多的 BI、AI 和报表工具都可以无缝集成而不被厂商绑定。
同时你可以使用 TDengine Cloud无商务谈判免费注册几分钟内就可以搭建好整个系统验证是否工作无任何前期费用和风险。如果验证没问题可以继续使用云服务也可以切换到 TDengine Enterprise 做本地化部署。对于云服务5 万个测点如果数据采集间隔是一秒最基础的 TDengine Cloud 入门级就可满足要求一个月仅需 1200 元。与传统昂贵的工业软件相比大大降低了投入的成本。
本文以 TDengine Cloud 为例介绍该方案在烟草制丝车间的具体实现。
在下面例子里我们将从 OPC Server 采集三个指标冷床出口水分、计量秤工艺流量及烘丝出口温度并希望在可视化界面实现以下功能
实时监测数采完备率和在线状态避免数据采集出现异常时不能及时观察到导致长时间原始数据缺失实时监测各指标值、变化趋势曲线及时掌握生产过程中关键指标的变化 本文中可视化工具选择了开源的 Grafana你也可以使用国产的 BI 软件来实现。这个方案也适用于 TDengine Enterprise 企业版。
1. TDengine Cloud OPC 接入介绍
为方便不同数据源的接入涛思打造了一套数据接入方案来接入各种不同类型的数据源。它的核心功能组件是 taosExplorerTDengine Cloud 为控制台、taosX Agent 及各类数据源连接器。TDengine 支持两种 OPC 接入OPC UA、OPC DA。
需要注意的是TDengine Cloud 仅支持代理模式接入各类数据源。TDengine Enterprise 则是直连、代理两种连接模式均支持。
以某个工厂为例它的数据中心部署在工厂内部车间机房、工厂中心机房各车间通过 OPC 向外提供的数据服务和数据中心处于同一内部网络这种情况可采用直连模式。如果该工厂的数据中心部署在云端TDengine Cloud、共有云、上级集团私有云且工厂与云端之间没有 VPN 连接时这种情形可采用代理模式。
下面以 TDengine Cloud 云服务代理模式为例介绍如何快速搭建 OPC UATDengineGrafana 环境实现工业 OPC 数据采集的可视化。
2. 部署环境
本文的部署拓扑图如下
本地 MacBook ProGrafana 部署在本机taosX Agent 代理、OPC UA Simulation Server 部署在虚拟机 vm1 上Ubuntu 20.04TDengine 采用 TDengine Cloud 云服务入门版 提示
TDengine Cloud 的注册或登录请参照 https://cloud.taosdata.com/loginOPC UA Server 在本文中将采用 PROSYS OPCUA Simulation Server 5.4.6下载地址为 Prosys OPC UA Simulation Server - Prosys OPCGrafana 下载地址为 Download Grafana | Grafana Labs
Grafana 数据源安装
Grafana 安装后需要安装 TDengine 的数据源插件有两种方式供选择
在 Grafana Configuration – Datasource 页面中搜索 TDengine完成安装【推荐】通过运行下面的命令完成该插件安装【以 Linux 为例】
bash -c $(curl -fsSL https://raw.githubusercontent.com/taosdata/grafanaplugin/master/install.sh)
3. 配置OPC UA Server
为方便展示本文将采用 PROSYS OPC UA Simulation Server 的功能模拟生成 10 个双精度点位的随机数。
在 MacBook Pro 上启动 PROSYS OPC UA Simulation Server。 切换至 Objects 页面右键点击 Random:BaseDataVariableTypeDuplicate Node 创建 10 个采集点位均为双精度浮点数。完成此步骤后将生成节点地址 ns3;i1008~1017。 生成的点位默认随机数范围是 [-2,2]如需修改可点击每个点位 Value 标签进行设置。默认的数值生成间隔为 1000ms。
4. 创建代理并部署 taosX Agent
登录 TDengine Cloud 后进入控制台点击数据写入-数据源-创建新的代理 根据提示在 vm1 上下载并部署 taosX Agent。 tar xf taosx-agent-xxx-linux-x64.tar.gz
cd taosx-agent-xxx-linux-x64
./install.sh
设置代理名称agent-vm1
获得 Endpoint 和 token将其复制、粘贴至 vm1 上的 taosX Agent 的配置文件中/etc/taos/agent.toml 在 vm1 上启动 taosX Agent
systemctl start taosx-agent
5. 数据准备
在配置 OPC UA 采集任务之前还有两个准备工作需要完成
在 TDengine Cloud 创建 opcdemo 库创建批量导入用的采集点位 CSV 文件
5.1 创建 opcdemo 库
登录 TDengine Cloud 后进入控制台点击数据浏览器- 创建数据库输入名称 opcdemo、设置 CACHEMODEL 为 both 后完成创建。 5.2 创建点位 CSV 文件
为方便批量导入采集点位TDengine Cloud 提供了以 CSV 文件批量导入点位信息的功能。
根据前面的 OPC UA Simulation Server 创建的 10 个点位信息创建 CSV 文件。
文件填写说明
point_id: OPC 点位地址tbname: 该点位地址对应 TDengine 中的子表名type: 该点位地址值的数据类型对应普通列 val。常见的数据类型有 int/bigint/float/double/varchar/nchar/bool其中 varchar/ncahr 需给出最大允许长度如 varchar(50)/nchar(50)stable: 子表所属的超级表名时间戳列 ts_col: OPC 原始采集时间戳的列名默认 ts默认为首列时间戳received_ts_col: 【可选】TDengine 接收时间戳对应的列名一旦配置了 received_ts_col 列该列将取代 ts_col 成为首列时间戳ts_col 列将做为普通列保留普通列 val 列存放采集值类型由用户定义本文中类型为 doublequality 列质量信息INT 型系统默认自动创建tag:: 标签列定义以tag::nchar(10)::unit为例将创建一个名为 unit类型为 nchar(10) 的标签列。需要说明的是每张超级表默认创建两个标签列point_id VARCHAR(256), point_name VARCHAR(256)
信息点编码,OPC TAG点地址,数据类型,对应超级表表名,OPC原始时间列名,标签列1
tbname,point_id,type,stable,ts_col,tag::nchar(10)::unit
d_1008,ns3;i1008,double,stb_double,ts,%H
d_1009,ns3;i1009,double,stb_double,ts,kg/h
d_1010,ns3;i1010,double,stb_double,ts,℃
d_1011,ns3;i1011,double,stb_double,ts,%H
d_1012,ns3;i1012,double,stb_double,ts,kg/h
d_1013,ns3;i1013,double,stb_double,ts,℃
d_1014,ns3;i1014,double,stb_double,ts,%H
d_1015,ns3;i1015,double,stb_double,ts,kg/h
d_1016,ns3;i1016,double,stb_double,ts,℃
d_1017,ns3;i1017,double,stb_double,ts,℃
以上 CSV 文件成功导入后将在 TDengine 中在指定的库中本文为 opcdemo创建一张名为 stb_double 的超级表并以之为模板创建 10 张子表名为 d_1008/d_1009…/d_1017。
taos desc stb_double;field | type | length | note |
ts | TIMESTAMP | 8 | |quality | INT | 4 | |val | DOUBLE | 8 | |point_id | VARCHAR | 256 | TAG |point_name | VARCHAR | 256 | TAG |unit | NCHAR | 10 | TAG |
Query OK, 6 row(s) in set (0.008236s)
6. 创建数据采集任务
登入控制台点击数据写入-数据源-添加数据源 填写数据源名称选择类型OPC-UA代理选刚新建的代理 agent-vm1目标数据库 opcdemo输入 OPC UA Server 的服务地址。
本文代理模式下OPC UA Server 部署在vm1上服务地址填写 127.0.0.1 即可端口号及详细信息参见 PROSYS Simulation Server 的 Status 页面。 点击“选择文件”按钮进入 CSV 文件导入界面。 采集间隔设置为 1 秒采集模式设置为 observe。 本次 CSV 共采集 10 个点位为优化写入性能将批次大小调整为 10。如有必要可选择开启 Debug 日志。 7. 数据采集验证
登入控制台点击数据浏览器-Sql执行多次最新数据查询语句观察查询结果。如结果行时间戳单调递增则表示数据采集链路工作正常数据已正常入库了。
select last_row(*) from opcdemo.stb_double; 8. 数据可视化
Grafana 部署在本地 MacBook Pro 上希望访问云服务上的 TDengine 实例中的 opcdemo 库的数据。根据云服务控制台【工具-Grafana】页面的指引填入 Host、Cloud Token删除 User、Password保存退出。 选择 Import Dashboard点击 Upload JSON file 导入 OPCDemo.json 文件文件代码详见 OPC Demo-0925.json - TDengine | 涛思数据选择对应的 TDengine 的 DataSource完成 Dashboard 导入。 点击 OPC Demo Dashboard打开该仪表板可以观察到实时数据的变化。 9. OPC Demo Dashboard 使用说明
该仪表盘可以选择三个物理量作为监控对象metric01、metric02、metric03分别对应冷床出口水分、工艺流量、烘丝出口温度位于第一行可通过下拉框选择用户可设置设备离线阈值 offline_threshold单位秒通过下拉框选择。
首行三个控件分别是 metric01 的分钟级数采完备率、整体数采完备率以及在线状态。
在烟草生产行业数据采集是否有缺漏是企业数据运营管理的基础。在本文中我们提出两个指标来衡量数采完备分钟级数采完备率、整体数采完备率。
9.1 分钟级数采完备率
算法说明以一分钟划分时间窗口分段计算当前时间区间最近 5/15/30 分钟…内 metric01 物理量采集点数除以 60 后的比值 – 默认数据生成间隔为 1000ms即 1 秒。
select _wstart, count(*)/60 from opcdemo.$metric01 where _c0 $from and _c0 $to interval(1m) limit 100 offset 1
9.2 整体数采完备率
算法说明计算 metric01 物理量采集点数除以当前时间区间内秒级跨度的比值spread 计算的时间值单位与 opcdemo 库的 precision 一致默认为 ms。
select count(*)/(spread(_c0 )/10001) from opcdemo.$metric01 where _c0 $from and _c0 $to
9.3 在线状态
设备是否按设计要求及时上报数据可通过在线状态的监测来实现。如在指定时间阈值内无采集数据到达显示红色 offline 以示警。
算法说明判断 metric01 物理量在指定离线阈值内是否有数据入库如有则判 Online否则判 Offline。
select count(*) from (select last_row(*) from opcdemo.$metric01 where _c0 now-$offline_thresholds)
三个 Gauge 仪表表头控件用于显示烘丝出口水分、工艺流量、烘丝出口温度的最新值。
select last_row(val) from opcdemo.$metric01
三个 TimeSeries 曲线控件用于显示烘丝出口水分、工艺流量、烘丝出口温度在当前时间区间内的动态曲线显示值为动态时间窗口内采集值的算术平均值。
select _wstart, avg(val) from opcdemo.$metric01 where _c0 $from and _c0 $to interval($interval) fill(null)
以上以制丝车间的几个典型参数为例介绍了如何利用 TDengine 的 OPC 连接器将数据采集入库并通过 Grafana 将这些参数以动态可视化方式直观地呈现出来。
掌握了以上基本语法大家可以举一反三结合自己的实际业务要求不用写一行代码就可以轻松地定制自己专属的 Grafana Dashboard进行实时采集数据监控了。
10. 开发实时业务应用
前面阐述了如何基于 TDengine 实现 OPC 数采接入、持久化以及基于 Grafana 方便地实现实时数据的可视化。估计会有读者想更进一步了解如何基于 TDengine 来开发实时业务应用如 SPC 统计过程控制能否方便地实现呢
下面我们简单介绍一下如何利用 TDengine 来开发 SPC 实时业务应用。 SPC统计过程控制是工业界广泛使用的质量分析工具它采用统计技术对生产过程的某个物理量进行实时监控计算快速识别出生产过程中产品质量的随机波动与异常波动对生产过程的异常趋势提出预警以便生产管理人员及时采取措施消除异常恢复过程的稳定从而达到提高和控制质量的目的。 SPC 的第一步是计算标准差。TDengine 提供 stddev 标准差函数方便用户快速从时序数据算得标准差 σ。
通过实时查询可获取指定时间段的时序数据再通过 TDengine 内嵌函数即可直接算得均值 μ(avg)、最大(max)、最小(min)、跨距(spread)。
结合前面算得的标准差 σ、该物理量设计的合格上下限范围 USL-LSL、目标值 T可算得 SPC 各过程参数Cp/Cr/Cpu/Cpl/Cpk/Cpm/Pp/Pr/Ppu/Ppl/Ppk/Ppm。
TDengine 提供各种主流编程语言如 C/C、Java、Go、RUST、Python、C# 的驱动程序也提供 RESTful 接口支持 SQL 语法因此应用开发的学习成本几乎为零十分简单。
11. 总结
很多用户对于如何快速、便捷呈现工业现场的实时时序数据比较畏惧觉得需要耗费大量人力进行应用开发才能实现影响了时序数据快速有效的利用。其实和 IT 运维采用 TelegrafTDengineGrafana 一样烟草生产企业可以非常方便地利用 TDengine 的 OPC 接入能力通过搭建 OPCTDengineGrafana 方案快速实现低代码的业务数据监控。
需要说明的是本文的例子是一较简单的场景taosX Agent 代理和 OPC UA Server 部署在同一节点上。其他的场景可以从这个场景中演变而来如
taosX Agent 与 OPC UA Server 分别部署在不同节点上部署多个 taosX Agent每个 Agent 对接多个 OPC UA Server
实际部署拓扑都可以按需规划、实施取决于您实际的部署需求。
TDengine 不仅支持 OPC也支持 MQTT, PI System, Wonderware 等数据源的无缝接入受篇幅所限本文不多做介绍仅分享基于 TDengine Cloud 提供 OPCTDengineGrafana 方案的具体实现。这套方案同样可以基于 TDengine Enterprise 企业版来实现如果您有这样的需求请联系北京涛思商务团队获取相关资源。
直播视频回放
TDengine 行业产品经理聊聊以烟草行业为例如何基于 PLC OPC TDengine 快速搭建工业生产监测系统_哔哩哔哩_bilibili 了解更多 TDengine Database的具体细节可在GitHub上查看相关源代码。