2020EdgeX挑战赛颁奖典礼及季度Meet-up

EdgeX中国挑战赛自2020年7月启动以来,历经多个阶段,最终公布获奖名单。该赛事旨在推广EdgeX Foundry,助力边缘计算及物联网技术在中国的发展与应用。

在这里插入图片描述

2020EdgeX专题赛自7月初启动以来,经历初赛评选、项目开发、中期检查、决赛作品提交、微信投票、路演及答辩等环节,现综合路演评分及微信投票得分,已在上周公布了获奖名单。

我们将在明天29日举办颁奖仪式及季度Meet-up

具体Ageda如下:
在这里插入图片描述

关于EdgeX中国挑战赛

EdgeX中国挑战赛是推广和应用EdgeX Foundry的重要活动之一。

随着物联网越来越多地将传统的嵌入式设备转换为计算能力更强的云原生计算设备,边缘和物联网开发人员需要厂商中立的平台用于部署和保护设备。EdgeX Foundry是全球领先的开放边缘计算框架,能够更敏捷地利用物联网、人工智能、计算机视觉等先进技术,有效化解各行业在数字化转型过程中所面临的困难与挑战,充分解决边缘计算及物联网平台构建方面的技术难题,为碎片化的边缘计算领域带来统一。

EdgeX中国挑战赛的举办,体现出业界对中国市场的高度重视,这将对中国边缘计算生态系统建设,对中国AIoT的应用落地及部署起到有力的促进作用。

在这里插入图片描述

原文链接:https://mp.weixin.qq.com/s/LwszyE9msESssXJudt3NYw

<think>我们正在使用EdgeX Foundry通过Modbus-TCP协议采集电表数据。EdgeX Foundry是一个开源的物联网边缘计算平台,支持多种协议和设备服务。针对Modbus-TCP设备,EdgeX提供了Modbus设备服务(device-modbus)来与设备通信。 配置步骤概述: 1. 部署EdgeX Foundry和Modbus设备服务 2. 配置Modbus设备服务(连接Modbus-TCP电表) 3. 创建设备配置文件(定义电表的Modbus寄存器映射) 4. 添加设备(在EdgeX中注册电表设备) 5. 通过EdgeX API读取数据 详细步骤: 步骤1:部署EdgeX Foundry和Modbus设备服务 可以使用Docker Compose或直接运行二进制文件。这里以Docker Compose为例。 首先,下载EdgeX的docker-compose文件: ``` curl -O https://raw.githubusercontent.com/edgexfoundry/edgex-compose/ireland/docker-compose.yml ``` 然后,启动所有EdgeX服务(包括核心服务、支持服务等): ``` docker-compose up -d ``` 接着,我们需要启动Modbus设备服务。在docker-compose.yml文件中添加modbus设备服务的配置(如果尚未包含)。或者,单独运行modbus设备服务容器: ``` docker run -d --name edgex-device-modbus --network=edgex_edgex-network --hostname=edgex-device-modbus -v edgex-config:/res:ro -v edgex-config:/etc/edgex/device-modbus:ro edgexfoundry/docker-device-modbus-go:2.1.0 ``` 注意:以上版本号(2.1.0)可能需要根据实际使用的EdgeX版本进行调整。 步骤2:配置Modbus设备服务 我们需要修改Modbus设备服务的配置文件,以指定连接的电表IP和端口。配置文件通常位于`/etc/edgex/device-modbus`目录下(在容器内)。我们可以通过挂载卷的方式修改配置文件。 创建本地配置文件目录,例如`./device-modbus/res`,并在其中创建`configuration.toml`文件(或修改已有的)。 在`configuration.toml`中,我们需要配置设备服务的基本设置,以及定义Modbus连接信息。例如: ```toml [Device] DataTransform = true InitCmd = "" InitCmdArgs = "" MaxCmdOps = 128 MaxCmdValueLen = 256 RemoveCmd = "" RemoveCmdArgs = "" ProfilesDir = "./res/profiles" [Driver] LoggingLevel = "INFO" # Modbus连接配置(针对每个设备,也可以在创建设备时指定) [Driver.Client] Host = "192.168.1.100" # 电表的IP地址 Port = 502 # Modbus TCP端口,默认为502 Timeout = 5 # 超时时间(秒) IdleTimeout = 5 # 空闲超时 ``` 然后,重新启动modbus设备服务容器,并挂载配置文件目录: ``` docker run -d --name edgex-device-modbus --network=edgex_edgex-network --hostname=edgex-device-modbus -v $(pwd)/device-modbus/res:/res:ro -v $(pwd)/device-modbus/res:/etc/edgex/device-modbus:ro edgexfoundry/docker-device-modbus-go:2.1.0 ``` 步骤3:创建设备配置文件(Profile) 设备配置文件定义了设备的数据点(即Modbus寄存器)如何映射到EdgeX中的资源(Resource)。我们需要创建一个YAML文件来描述电表的寄存器。 例如,假设电表有一个保持寄存器(地址0)存储电压值,类型为UINT16。我们可以创建一个名为`ElectricMeter.yaml`的配置文件。 文件内容示例: ```yaml name: "ElectricMeterProfile" manufacturer: "MeterBrand" model: "EM123" description: "Profile for electric meter" deviceResources: - name: "Voltage" description: "Line Voltage" attributes: { primaryTable: "HOLDING_REGISTERS", startingAddress: "0", rawType: "UINT16" } properties: valueType: "UINT16" readWrite: "R" scale: "0.1" # 如果原始值需要缩放,可以设置scale和offset offset: "0.0" units: "V" # 可以继续添加其他资源,如电流、功率等 ``` 将配置文件放入Modbus设备服务可以访问的目录(例如`./device-modbus/res/profiles`),然后通过EdgeX的元数据API上传该配置文件(也可以直接放在目录中,设备服务会自动加载)。 步骤4:添加设备(Device) 在EdgeX中注册电表设备,将其与设备配置文件关联,并指定连接信息(如果之前在Driver中未配置,也可以在此处覆盖)。 通过EdgeX的元数据API添加设备: ``` POST http://<edgex-core-metadata-host>:59881/api/v2/device ``` 请求体示例: ```json { "apiVersion": "v2", "device": { "name": "Meter01", "description": "Modbus TCP Electric Meter", "adminState": "UNLOCKED", "operatingState": "ENABLED", "protocols": { "modbus-tcp": { "Host": "192.168.1.100", "Port": "502", "UnitID": "1" # 如果电表有Modbus从站ID(或称单元标识符) } }, "labels": [ "electric", "modbus" ], "serviceName": "edgex-device-modbus", # 设备服务名称 "profileName": "ElectricMeterProfile", # 配置文件名称 "autoEvents": [ { "interval": "30s", # 每隔30秒自动读取一次 "onChange": false, "sourceName": "Voltage" # 要读取的资源名称 } ] } } ``` 步骤5:通过EdgeX API读取数据 设备添加成功后,设备服务会根据autoEvents的设置定期读取数据。我们也可以通过命令API手动读取: ``` GET http://<edgex-core-command-host>:59882/api/v2/device/name/Meter01/Voltage ``` 注意事项: - 确保EdgeX设备服务容器能够访问电表(网络连通,端口开放)。 - 根据电表的具体Modbus寄存器映射表来配置设备资源(地址、数据类型等)。 以上是使用EdgeX Foundry通过Modbus-TCP协议采集电表数据的基本配置方法。 §§相关问题§§ 1. EdgeX Foundry支持哪些通信协议? 2. 如何配置Modbus RTU设备? 3. EdgeX Foundry的数据如何转发到云端? 4. 如何处理Modbus协议中的不同数据类型(如浮点数、长整型)? 5. EdgeX Foundry的安全性如何保障?</think>### EdgeX Foundry Modbus-TCP电表数据采集配置方法 以下是使用EdgeX Foundry通过Modbus-TCP协议采集电表数据的完整配置流程: --- #### **1. 部署EdgeX Foundry** - 下载Docker Compose文件: ```bash curl -O https://raw.githubusercontent.com/edgexfoundry/edgex-compose/ireland/docker-compose.yml ``` - 启动EdgeX服务: ```bash docker-compose up -d ``` - 验证服务状态: ```bash docker ps -a # 检查所有容器是否正常运行 ``` --- #### **2. 配置Modbus设备服务** - **启动Modbus设备服务容器**: ```bash docker run -d --name edgex-device-modbus --network=edgex_edgex-network \ -e DEVICE_USE_MESSAGEBUS=false \ edgexfoundry/docker-device-modbus-go:2.1.0 ``` - **修改配置文件**(通过卷挂载或环境变量): ```toml [Driver] IncomingSchema = "tcp" [Driver.Client] Host = "192.168.1.100" # 电表IP地址 Port = 502 # Modbus-TCP默认端口 Timeout = "5s" # 通信超时时间 ``` --- #### **3. 创建设备配置文件(YAML格式)** 在`device-modbus/res/profiles`目录下创建电表配置文件(如`electric-meter.yaml`): ```yaml name: "ElectricMeterProfile" deviceResources: - name: "Voltage" properties: valueType: "Float32" readWrite: "R" attributes: primaryTable: "HOLDING_REGISTERS" startingAddress: "0" # 寄存器起始地址 rawType: "INT16" # 原始数据类型 scale: 0.1 # 缩放因子(实际值=原始值×0.1) - name: "Current" attributes: primaryTable: "HOLDING_REGISTERS" startingAddress: "2" rawType: "UINT32" ``` --- #### **4. 添加电表设备** 通过EdgeX元数据API注册设备: ```bash curl -X POST http://localhost:59881/api/v2/device \ -H 'Content-Type: application/json' \ -d '{ "apiVersion": "v2", "device": { "name": "Meter-01", "serviceName": "edgex-device-modbus", "profileName": "ElectricMeterProfile", "protocols": { "modbus-tcp": { "UnitID": "1", # Modbus从站地址 "PrimaryTable": "HOLDING_REGISTERS" } }, "autoEvents": [{ "interval": "30s", # 每30秒采集一次 "onChange": false, "sourceName": "Voltage" # 采集电压值 }] } }' ``` --- #### **5. 验证数据采集** - **检查设备服务日志**: ```bash docker logs edgex-device-modbus # 查看Modbus通信状态 ``` - **通过API读取数据**: ```bash curl http://localhost:59880/api/v2/reading/device/name/Meter-01 # 获取最新读数 ``` - **核心数据服务验证**: ```bash curl http://localhost:59880/api/v2/event/device/name/Meter-01 # 查看事件记录 ``` --- #### **常见问题排查** 1. **连接失败**: - 确认电表IP和端口是否正确(使用`telnet 192.168.1.100 502`测试连通性)。 - 检查防火墙是否开放502端口。 2. **数据解析错误**: - 核对寄存器地址和数据类型(参考电表Modbus协议手册)。 - 验证缩放因子(如电压值需将原始寄存器值×0.1)。 3. **服务未启动**: - 确认Docker网络是否一致(`edgex_edgex-network`)。 - 检查设备服务日志中的错误信息。 --- #### **配置示例参考** | 电表参数 | Modbus寄存器地址 | 数据类型 | 缩放因子 | EdgeX资源名 | |----------------|------------------|----------|----------|-------------| | 电压 (V) | 0x0000 | INT16 | 0.1 | Voltage | | 电流 (A) | 0x0002 | UINT32 | 0.01 | Current | | 有功功率 (kW) | 0x0005 | INT32 | 0.001 | Power | > 注:具体寄存器地址需根据电表型号的Modbus协议手册确定[^1]。 --- #### **数据流示意图** ```mermaid graph LR A[电表] -- Modbus-TCP --> B(EdgeX Modbus设备服务) B --> C[核心数据服务] C --> D[规则引擎/MQTT] D --> E[云端平台] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值