EdgeX Foundry - 连接 Modbus 设备

文章目录

    • 一、概述
      • 1.安装说明
      • 2.Modbus Slave 工具
    • 二、连接 Modbus 设备
      • 1.docker-comepse
      • 2.设备配置文件
      • 3.启动 EdgeX Foundry
      • 4.访问 UI
        • 4.1. consul
        • 4.2. EdgeX Console
      • 5.创建 Modbus 设备
        • 5.1.创建设备配置文件
        • 5.2.添加设备
      • 6.测试
        • 6.1.命令
        • 6.2.事件
        • 6.3.读值

  • EdgeX Foundry
# EdgeX Foundryhttps://iothub.org.cn/docs/edgex/
https://iothub.org.cn/docs/edgex/device/link-modbus/

一、概述

1.安装说明

# 官方文档https://docs.edgexfoundry.org/3.1/microservices/device/services/device-modbus/GettingStarted/

安装方式:

  • 使用 EdgeX Console 界面创建 Modbus 设备
  • 使用 Modbus Slave 模拟 Modbus 设备

2.Modbus Slave 工具

在这里插入图片描述
在这里插入图片描述

二、连接 Modbus 设备

1.docker-comepse

# 1.克隆 edgex-compose
$ git clone git@github.com:edgexfoundry/edgex-compose.git 
$ git clone https://github.com/edgexfoundry/edgex-compose.git
$ cd edgex-compose 
$ git checkout v3.1# 2.生成 docker-compose.yml 文件(注意这包括 mqtt-broker)
$ cd compose-builder
$ make gen ds-modbus no-secty# 3.检查生成的文件
$ ls | grep 'docker-compose.yml'
docker-compose.yml
[root@edgex mqtt-device]# git clone https://github.com/edgexfoundry/edgex-compose.git
Cloning into 'edgex-compose'...
remote: Enumerating objects: 4779, done.
remote: Counting objects: 100% (2916/2916), done.
remote: Compressing objects: 100% (173/173), done.
remote: Total 4779 (delta 2831), reused 2804 (delta 2741), pack-reused 1863
Receiving objects: 100% (4779/4779), 1.22 MiB | 450.00 KiB/s, done.
Resolving deltas: 100% (4042/4042), done.[root@edgex mqtt-device]# ll
total 4
drwxr-xr-x. 6 root root 4096 Feb  1 04:10 edgex-compose[root@edgex mqtt-device]# cd edgex-compose/
[root@edgex edgex-compose]# git checkout v3.1
Note: checking out 'v3.1'.You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:git checkout -b new_branch_nameHEAD is now at 488a3fe... Merge pull request #424 from lenny-intel/device-mqtt-secure-mode-napa[root@edgex edgex-compose]# cd compose-builder/[root@edgex compose-builder]# make gen ds-modbus no-secty
echo MQTT_VERBOSE=
MQTT_VERBOSE=
docker compose  -p edgex -f docker-compose-base.yml -f add-device-modbus.yml convert > docker-compose.yml
rm -rf ./gen_ext_compose[root@edgex compose-builder]# ls | grep 'docker-compose.yml'
docker-compose.yml

2.设备配置文件

1.设备配置文件

name: "Ethernet-Temperature-Sensor"
manufacturer: "Audon Electronics"
model: "Temperature"
labels:- "Web"- "Modbus TCP"- "SNMP"
description: "The NANO_TEMP is a Ethernet Thermometer measuring from -55°C to 125°C with a web interface and Modbus TCP communications."deviceResources:-name: "ThermostatL"isHidden: truedescription: "Lower alarm threshold of the temperature"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 0, rawType: "Int16" }properties:valueType: "Float32"readWrite: "RW"scale: 0.1-name: "ThermostatH"isHidden: truedescription: "Upper alarm threshold of the temperature"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 1, rawType: "Int16" }properties:valueType: "Float32"readWrite: "RW"scale: 0.1-name: "AlarmMode"isHidden: truedescription: "1 - OFF (disabled), 2 - Lower, 3 - Higher, 4 - Lower or Higher"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 2 }properties:valueType: "Int16"readWrite: "RW"-name: "Temperature"isHidden: falsedescription: "Temperature x 10 (np. 10,5 st.C to 105)"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 4, rawType: "Int16" }properties:valueType: "Float32"readWrite: "R"scale: 0.1deviceCommands:-name: "AlarmThreshold"readWrite: "RW"isHidden: falseresourceOperations:- { deviceResource: "ThermostatL" }- { deviceResource: "ThermostatH" }-name: "AlarmMode"readWrite: "RW"isHidden: falseresourceOperations:- { deviceResource: "AlarmMode", mappings: { "1":"OFF","2":"Lower","3":"Higher","4":"Lower or Higher"} }

2.设备配置

deviceList:name: "Modbus-TCP-Temperature-Sensor"profileName: "Ethernet-Temperature-Sensor"Ethernet-Temperature-Sensordescription: "This device is a product for monitoring the temperature via the ethernet"labels: - "temperature"- "modbus"- "TCP"protocols:modbus-tcp:Address: "192.168.3.4"Port: "502"UnitID: "1"Timeout: "5"IdleTimeout: "5"autoEvents:interval: "30s"onChange: falsesourceName: "Temperature"

3.启动 EdgeX Foundry

使用以下命令部署 EdgeX:

$ cd edgex-compose/compose-builder
$ docker compose pull
$ docker compose up -d# 修改配置文件
替换IP地址 127.0.0.1 为 0.0.0.0
# docker compose pull# docker compose up -d

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.访问 UI

4.1. consul
# 访问地址
http://192.168.202.233:8500

在这里插入图片描述

4.2. EdgeX Console
# 访问地址
http://192.168.202.233:4000/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.创建 Modbus 设备

5.1.创建设备配置文件

设备配置文件

name: "Ethernet-Temperature-Sensor"
manufacturer: "Audon Electronics"
model: "Temperature"
labels:- "Web"- "Modbus TCP"- "SNMP"
description: "The NANO_TEMP is a Ethernet Thermometer measuring from -55°C to 125°C with a web interface and Modbus TCP communications."deviceResources:-name: "ThermostatL"isHidden: truedescription: "Lower alarm threshold of the temperature"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 0, rawType: "Int16" }properties:valueType: "Float32"readWrite: "RW"scale: 0.1-name: "ThermostatH"isHidden: truedescription: "Upper alarm threshold of the temperature"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 1, rawType: "Int16" }properties:valueType: "Float32"readWrite: "RW"scale: 0.1-name: "AlarmMode"isHidden: truedescription: "1 - OFF (disabled), 2 - Lower, 3 - Higher, 4 - Lower or Higher"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 2 }properties:valueType: "Int16"readWrite: "RW"-name: "Temperature"isHidden: falsedescription: "Temperature x 10 (np. 10,5 st.C to 105)"attributes:{ primaryTable: "HOLDING_REGISTERS", startingAddress: 4, rawType: "Int16" }properties:valueType: "Float32"readWrite: "R"scale: 0.1deviceCommands:-name: "AlarmThreshold"readWrite: "RW"isHidden: falseresourceOperations:- { deviceResource: "ThermostatL" }- { deviceResource: "ThermostatH" }-name: "AlarmMode"readWrite: "RW"isHidden: falseresourceOperations:- { deviceResource: "AlarmMode", mappings: { "1":"OFF","2":"Lower","3":"Higher","4":"Lower or Higher"} }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.添加设备

设备配置

deviceList:name: "Modbus-TCP-Temperature-Sensor"profileName: "Ethernet-Temperature-Sensor"Ethernet-Temperature-Sensordescription: "This device is a product for monitoring the temperature via the ethernet"labels: - "temperature"- "modbus"- "TCP"protocols:modbus-tcp:Address: "192.168.3.4"Port: "502"UnitID: "1"Timeout: "5"IdleTimeout: "5"autoEvents:interval: "30s"onChange: falsesourceName: "Temperature"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.测试

6.1.命令

在这里插入图片描述
在这里插入图片描述

6.2.事件

在这里插入图片描述

{"apiVersion": "v3","id": "84e3cb89-5f8c-4777-aa8f-e8574d9b0221","deviceName": "Modbus-TCP-Temperature-Sensor","profileName": "Ethernet-Temperature-Sensor","sourceName": "Temperature","origin": 1708368064375222000,"readings": [{"id": "9626ea3f-476e-49c3-86d1-12f6245aa39f","origin": 1708368064375173600,"deviceName": "Modbus-TCP-Temperature-Sensor","resourceName": "Temperature","profileName": "Ethernet-Temperature-Sensor","valueType": "Float32","value": "0.000000e+00"}]
}
6.3.读值

在这里插入图片描述

{"id": "d56f2ba4-beb7-44c4-a6e9-3dad9cd87d86","origin": 1708368214506509000,"deviceName": "Modbus-TCP-Temperature-Sensor","resourceName": "Temperature","profileName": "Ethernet-Temperature-Sensor","valueType": "Float32","value": "0.000000e+00"
}
  • EdgeX Foundry
# EdgeX Foundryhttps://iothub.org.cn/docs/edgex/
https://iothub.org.cn/docs/edgex/device/link-modbus/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521369.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat连接数据库出现的问题

Navicat使用教程——连接/新建数据库、SQL实现表的创建/数据插入、解决报错【2059-authentication plugin‘caching_sha2_password’……】_2059authentication plugin-CSDN博客

优思学院|拉丁方实验设计是什么?

今天,我要给大家带来一个六西格玛实验设计的小窍门——拉丁方设计。这是一种巧妙的方式,帮助我们探索不同因素(输入)对结果(输出)的影响,同时巧妙地处理那些我们不想要的“噪音因素”。 想象一…

融资项目——网关微服务

1. 网关的路由转发功能 在前后端分离的项目中&#xff0c;网关服务可以将前端的相关请求转发到相应的后端微服务中。 2. 网关微服务的配置 首先需要创建一个网关微服务&#xff0c;并添加依赖。 <!-- 网关 --><dependency><groupId>org.springframework.cl…

了解开源可视化表单的主要优势

为什么可视化表单深受大家喜爱&#xff1f;这就需要了解开源可视化表单的优势和特点了。在流程化办公深入人心的今天&#xff0c;提高办公协作效率早已成为大家的发展目标&#xff0c;低代码技术平台、开源可视化表单是提升办公协作效率的得力助手&#xff0c;一起来看看它的优…

mysql的语法学习总结3(一些常见的问题)

执行后&#xff0c;MySQL 会重新加载授权表并更新权限。 FLUSH PRIVILEGES; 怎么检查自己的电脑端口3306有没有被占用&#xff1f; ESTABLISHED表示被占用&#xff0c;LISTENING表示端口正在被监听&#xff0c;22696是占用该端口的进程的PID&#xff08;进程标识符&#xff0…

DNDC模型下载与安装、建模方法、结果分析、率定验证

目录 专题一 DNDC模型介绍 专题二 DNDC初步操作 专题三 遥感和GIS基础 专题四 DNDC气象数据 专题五 DNDC土地数据 专题六 DNDC土壤数据 专题七 DNDC结果分析 专题八 DNDC率定验证 专题九 土壤碳储量与作物产量 专题十 温室气体排放分析 专题十一 农田减排潜力分析 …

商业前端TS开发自动化工具

本期作者 一、背景 商业侧的业务比较复杂&#xff0c;B端项目中含有大量常量类的类型判断&#xff0c;且因历史原因&#xff0c;很多常量值前端无法直接知其含义&#xff0c;这既不利于新人的上手&#xff0c;也不利于项目的维护。 在开发协作上&#xff0c;前后端的API沟通&a…

2024最新图标设计趋势!附超好用的图标工具清单

图标&#xff0c;在界面设计中的作用不容小觑。正所谓浓缩的就是精华&#xff0c;一个小小的图标&#xff0c;却有着高效传递信息、美化界面排版、提升用户体验的巨大能力。 既然图标如此重要&#xff0c;了解图标设计趋势对设计师来说几乎是必须要做的事&#xff0c;它可以让…

Java+SpringBoot+Vue+MySQL实战:打造智能餐厅点餐系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)

项目管理常用模板大全&#xff1a; 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…

搞不完的事情,大不了加班?

工作是生活的一部分&#xff0c;但当你发现搞不完的事情&#xff0c;大不了加班&#xff01;你就会陷入无限的循环。 如果你想早点下班 &#xff0c;并且好好做自己的账号&#xff0c;还是少看哪些月入5万-10万的博主&#xff01; 如果你照着大V账号模仿大概率会失败&#xff…

基于SSM技术的农场管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 项目概述 3 1.1 选题背景 3 1.1.1 社会发展背景 3 1.1.2 需求发展背景 3 1.1.3 经济发展背景 3 1.2 研究目的与意义 3 1.3 国内外现状和发展趋势 3 1.3.1 国内外发展现状 3 1.3.2 国内外发展趋势 4 1.4 本章小结 4 2 技术简介 5 2.1 开发…