2022/10/12
不同于普通水表,流量计主要测量流速。
流量仪表广泛适用于冶金、电力、煤炭、化工、石油、交通、建筑、轻纺、食品、医药、农业、环境保护及人民日常生活等国民经济各个领域,是发展工农业生产,节约能源,改进产品质量,提高经济效益和管理水平的重要工具在国民经济中占有重要的地位。
能源计量是科学管理能源,实现节能降耗,提高经济效益的重要手段。流量仪表是能源计量仪表的重要组成部分,水、人工燃气、天然气、蒸汽和油品这些常用的能源都使用着数量极其庞大的流量计,它们是能源管理和经济核算不可缺少的工具。
流量计在烟气排放、污水、废气处理流量计量方面有着不可替代的位置。中国是以煤为主要能源的国家,全国有上百万个烟囱不停地向大气排放烟气。烟气排放控制是根治污染的重要项目,每个烟囱必须是安装烟气分析仪表和流量计,组成连椟排放监视系统。烟气的流量沆量有很大因难,它的难度为烟囱尺寸大且形状不规则,气体组分变化不定,流速范围大,脏污,灰尘,腐蚀,高温,无直管段等。
管道运输必须装备流量计,它是控制、分配和调度的眼睛,亦是安全监没和经济核算的必备工具。
这个示例,我们介绍电磁流量计如何接入 ThingsCloud 平台,并上报测量速度。
电磁流量计是流量计的一种类型,适用于导电流体的测量,例如:自来水、工业污水、各种电解质液体等,利用电磁效应对流体测量流速。
我们用的电磁流量计采用 4-20mA 模拟量信号输出,所以还需要一台支持 4-20mA 模拟量输入和网络通信的 RTU。将电磁流量计和 RTU 连接后,RTU 采集模拟量信号,同时提供 Modbus 从机服务。
自带网络通信的 RTU 接入 ThingsCloud 的方法和 DTU 完全相同,请浏览 DTU 接入 及 示例教程。本示例不限于特定的 DTU 产品。
顺便提一下,对于支持 Modbus RTU 输出的设备,请参考以下示例:
顺便说一下,有些电磁流量计也支持 RS485/Modbus 输出,这样就不需要单独的模拟量采集,只需要用支持 Modbus RTU 透传的 DTU 即可,具体步骤和以上示例相似。
根据流量计口径的不同,这款的量程是 14-140 m³/h。我们在设备类型中,找到 功能定义,添加属性定义,如下图:
接下来,确保设备类型的接入协议设置为Modbus RTU 透传,在设备类型的 Modbus 配置中,设置属性对应的设备端 Modbus 寄存器参数。
参考 RTU 的模拟量采集 Modbus 寄存器手册,我们知道第一路 AI 的寄存器是:
0x00C0
uA
我们对设备类型的 Modbus 设置如下:
接下来,记得开启 属性智能转换,并设置正确的自定义数据流标识符,自定义数据流用于云平台和 DTU 之间收发 Modbus RTU 报文,通常默认创建的自定义数据流标识符为 stream
,请您根据实际情况为准。
Modbus 数据上报需要主机发起查询,也就是从云平台下发查询指令,通过 DTU 透传到终端设备。
我们来创建 Modbus 查询任务,如下图:
保存任务后,我们可以手动点击单次运行任务,也可以在任务的定时选项中,设置定时时间间隔,例如 5 分钟,这样便可以每 5 分钟获得最新的数据。
通过云平台的智能 Modbus 解析,在设备概要页面的属性中,我们可以实时看到设备最新上报的属性数据,如下图:
这时采集到的电流信号是 6830uA,也就是 6.83mA。
接下来还需要自动将电流模拟量转为数字量,使用 ThingsCloud 规则引擎可以轻松完成这个转换。
创建一个属性上报预处理规则。
在云函数中使用如下代码:
module.exports = function (report_attributes) { /** * report_attributes: 上报的属性对象,同时作为函数返回值。函数中可更新属性对象。 */ if (report_attributes.analog_value !== undefined) { // 得到电流信号 mA var analog_ma = report_attributes.analog_value / 1000; report_attributes.flow_speed = 14 + (analog_ma - 4) / (20 - 4) * (140 - 14) } return report_attributes;}
规则创建成功后,再次读取模拟量,会看到生成流速数值,如下图:
流量计设备只负责输出当前的测量速度,对于用户而言,还希望知道一些信息和数据,例如:
我们以今日最大流速和最小流速为例,继续完善上边的预处理规则,增加一些代码,完整云函数如下:
module.exports = function (report_attributes) { /** * report_attributes: 上报的属性对象,同时作为函数返回值。函数中可更新属性对象。 */ if (report_attributes.analog_value !== undefined) { // 得到电流信号 mA var analog_ma = report_attributes.analog_value / 1000; report_attributes.flow_speed = 14 + (analog_ma - 4) / (20 - 4) * (140 - 14); // 调用 ThingsCloud 内置函数,读取设备当前属性,也就是上次上报后的数据 const attrs = Cloud.getCurrentAttributes(); // 记录本次上报的年月日 report_attributes.report_date = Cloud.Utils.dateFormat("YYYYMMDD"); if (report_attributes.report_date !== attrs.report_date) { // 如果是新的一天首次上报 report_attributes.min_speed = report_attributes.flow_speed; report_attributes.max_speed = report_attributes.flow_speed; } else { // 今日的非首次上报,计算最大值和最小值 report_attributes.min_speed = Math.min(attrs.min_speed, report_attributes.flow_speed); report_attributes.max_speed = Math.max(attrs.max_speed, report_attributes.flow_speed); } } return report_attributes;}
然后我们回到设备类型的功能定义,增加两个属性定义:
采集一段时间后,可以看到计算出的今日最大流速和最小流速。
通过 ThingsCloud 的零代码用户应用平台,可以快速生成手机 App,为终端客户或者企业成员创建用户账号,分配设备给用户。
设备接入成功后,您在 ThingsCloud 的探索之旅才刚刚开始,请浏览:
ThingsCloud 是新一代物联网设备统一接入平台,帮助企业在极短的时间内搭建个性化的物联网平台和应用,并适应不断变化的发展需求。目前广泛应用于制造、电力、能源、环境、农业、楼宇、家居、教育、交通、物流、自动化等领域。
ThingsCloud 可接入各类网关,传感器、执行器、控制器、通信模组、智能硬件等,实现数据采集、远程控制,数据分析、告警通知、智能联动。还可以零代码生成项目应用 SaaS 和用户应用 App,并开放 API 和实时消息,便于业务系统集成和扩展开发。
通过使用 ThingsCloud,企业可以大大缩短搭建物联网系统的时间,节省软件开发费用,降低定制开发的风险,快速落地数字化和智能化项目。我们的客户遍布各行业,包括中国石化、中国铁塔、中国燃气、吉林大学、北控水务、ACE、中国民航大学、西安交通大学、精量电子、大秦铁路、宁波水利局等。
5000+ 企业在使用 ThingsCloud