随着工业物联网时代的到来,企业用户对建立数控机床在日常生产中的监控和报警平台的需求越来越大。通过搭建对于数控机床的监控和报警平台,企业用户可以随时了解自己生产线的工作情况,及时获得异常反馈,从而合理安排生产,规避风险等。TDengine作为一款新型的,面向物联网的单机开源的数据引擎,以其轻体量、部署快、高写入查询性能、低资源占用、高并发、实时响应等特点,大大降低了监控报警平台部署的成本,提高了效率。
技术架构及特点
TDengine的引入使得数控机床的监控系统架构变得极其简单。平台架构如下图所示:
采集器采集的数控机床的监控数据汇集到MQTT Server上。随后,数据轮询模块定期循环从MQTT Server上拉取数据,并转换为TDengine理解的SQL语句写入引擎。TDengine后面可接入各种应用程序,实时查询最新数据。少量的TDengine的配置信息等也会经过ETL模块转换写入一个关系型数据库(Relational Database),方便各个应用查询使用。
TDengine的引入使得架构变得极其简单。一方面,TDengine本身带有缓存功能,从而使得在应用中不需要再部署其他的缓存数据库来维持数据的高可靠。另一方面,TDengine的高并发性能,使得TDengine在处理高频率的写入任务的同时,可以同时拉起成百上千的查询。而TDengine的实时性和低资源占用的特点也使得TDengine可以并发支持各种实时请求。
数据模型介绍及写入和查询
数控机床的监控量,包括时间戳和报警信息在内有多达60几个字段。其中大部分字段为整形或浮点型。由于涉及非ASCII码字符,其中的报警信息为nchar类型。报警信息字段的长度约有1K左右,而且大部分时候为空。数控机床的监控采集频率为10秒钟一次,源源不断地写入TDengine。
由于数控机床采集数据schema的相似性,在建表时,可以采用超级表建表:
create table cnc_st (cnc_dqtime timestamp, ….) tags (cnc_id binary(64));
然后对于每台数控机床创建一张单独的表:
create table cnc_9293078 using cnc_st tags ('cnc_9293097');
利用超级表建表来处理数控机床的监控有很大的优势:
- 一方面,超级表可以看成是很多表的集合。在对多表进行查询时,可以通过对超级表的查询在一个SQL语句中完成,避免进行多个SQL语句的查询。
- 另一方面,通过超级表,可以实现表与表之间数据的聚合。
在数控机床的监控中,经常需要进行查询的是各机床最新采集数据的展示和刷新。在TDengine中,这个可以通过一条SQL语句很容易实现:
select last_row(*) from cnc_st group by tbname;
其中,tbname为关键表名关键字,用以按表名对结果进行分组。TDengine的应用大大简化了数据实时获取的流程,提高了响应度。
小结
不同于其他的大数据处理系统,TDengine部署极其方便。这使得在搭建数控机床监控平台的过程中,用户可以花极少的时间在数据库系统的搭建上,大幅缩短工程周期。另外,TDengine的高性能、低资源消耗、实时响应以及高并发等特点,都使得它在一边写入数据的过程中,可以实时服务多个应用的请求。真正做到实时响应,实时监控。