【爱克斯开发板试用】集成边缘计算平台EdgeX Foundry,进行Modbus设备状态检测和远程控制

openlab_e9b6e129 更新于 1年前

一、设备开箱

收到设备第一时间进行了开机配置,整个过程都比较顺畅,通过简单的上电、开机就可以进入到系统配置页面,配置就类似一般的Ubuntu系统配置,一步步就可以进入到系统


设备的整体参数配置和我现在用的物联网边缘计算**类似,所以就想申请来试试部署边缘计算平台EdgeX进行一下测试,平时工作中也会接触很多类似的设备,也想做一个对比。

二、EdgeX Foundry安装

首先,需要进行Docker和Docker Compose的安装,这里一定要注意,不要使用平台的Snap安装的版本,Snap安装的版本单独通过docker run启动一些简单的容器没有问题,但是使用docker-compose启动EdgeX的时候会遇到各种奇怪的权限问题,operation not permitted,具体原因没有深入研究,如下图:


所以推荐大家尽量通过apt去进行安装,docker-compose安装也很简单,这里就不详细介绍了,网上很多相关资料。

其次,进行EdgeX的部署,参考官方文档 https://docs.edgexfoundry.org/2.1/getting-started/quick-start/ 我这里使用的 2.1-Jakarta版本,对应的脚本指令

curl https://raw.githubusercontent.com/edgexfoundry/edgex-compose/jakarta/docker-compose-no-secty.yml -o docker-compose.yml; docker-compose up -d

此时可能会遇到无法发现配置服务的错误,此时在容器内部进行相互ping,发现容器之间无法互通,此时需要对Iptables进行设置,然后重启启动服务

update-alternatives --set iptables /usr/**in/iptables-legacydocker-compose up -d<br/>

此时通过浏览器页面访问 127.0.0.1:4000,会显示edegx-ui的dashboard

此时,会看到我们的虚拟设备,我们先通过虚拟设备进行一下平台的数据,Edgex默认在docker-compose.yml文件中添加了 device-virtual 服务,基于该服务有默认配置的8个设备,我们随机选择其中一个设备,选择commond图标,进行属性的获取和设置


如果都可以争取返回和相应,说明整体EdgeX已经正确安装。

三、进行Modbus设备调试

我身边只有Modbus RTU设备,但是AIxBoard没有485串口,身边暂时也没转接头,我们先用Modbus Slave进行Modbus Tcp设备的模拟,整体过程也比较简单,我在我的PC端进行模拟,如下图


我们这里测试选择Modbus 03-Holding Register,寄存器地址从0到9,10个地址,通过双击地址对应的数值可以进行修改或者数值自增。

然后,我们需要在EdgeX平台中集成我们的modbus device service,在EdgeX中我们就是通过添加Device Service来扩展平台的协议支持。打开我们docker-compose.yml文件,进行device-modbus服务的添加,如下图

保存文件,执行 docker-compose up -d 加载新的服务,启动完成以后,访问EdgeX-UI查看会发现多了一个Device Service,此时说明我们的设备服务加载成功,平台已经支持modbus协议的设备接入

接下来,我们通过UI来创建一个Modbus设备,首先我们需要创建Device profile,这里我们准备了一个简单的profile直接在对应的页面输入,然后保存

name: "Test Profile"
manufacturer: "Midea Group"
model: "Test"
labels:
  - "Web"
  - "Modbus TCP"
  - "SNMP"
description: "Test for Modbus TCP communications."

deviceResources:
  -
    name: "attr0"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 0, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"
  -
    name: "attr1"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 1, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"
  -
    name: "attr2"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 2, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"
  -
    name: "attr3"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 3, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"
  -
    name: "attr4"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 4, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"
  -
    name: "attr5"
    isHidden: false
    description: "attribute for test"
    attributes:
      { primaryTable: "HOLDING_REGISTERS", startingAddress: 5, rawType: "Int16" }
    properties:
      valueType: "Int16"
      readWrite: "RW"

deviceCommands:
  -
    name: "commond_test"
    readWrite: "RW"
    isHidden: false
    resourceOperations:
      - { deviceResource: "attr1" }
      - { deviceResource: "attr2" }
  -
    name: "commond_map_test"
    readWrite: "RW"
    isHidden: false
    resourceOperations:
      - { deviceResource: "attr3", mappings: { "1":"OFF","2":"Lower","3":"Higher","4":"Lower or Higher"} }


完成profile的添加以后我们来进行Device的添加,根据页面指引,一步步进行对应的填写,最后Submit,我们就可以在设备列表看到我们新创建的Device

然后,我们进行Modbus设备的点位数值获取和配置,先找到我们新创建的设备,点击Commond图标,进行属性获取和配置页面


我们在Modbus Slave中修改一个点位的数值,然后选择对应的设备属性进行Get操作,获取点位数值


我们通过Set操作来远程配置一个点位的数值,然后再Modbus Slave中确认点位是否有相应变化

四、结束语

AIxBoard硬件使用起蛮方便的,接口也比较丰富,有视频和音频输出、多个USB、GPIO、开关机按钮等,其中内置的操作系统也进行了一些国内使用习惯的配置。如果使用在物联网行业,特别是一些环境相对比较苛刻的地方,对设备的工作温度有更高的要求;一般物联网设备很多也是串口设备,需要232和485的支持;通过现场很多地方没有网络,一般还需要4G的支持。后续有机会在上面也跑一下算法看一下性能,现在物联网边缘计算行业一般数据拟合的算法相对较多,很少用到深度学习等算法,AIxBoard支持应该问题不会太大。

0个评论