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



设备的整体参数配置和我现在用的物联网边缘计算**类似,所以就想申请来试试部署边缘计算平台EdgeX进行一下测试,平时工作中也会接触很多类似的设备,也想做一个对比。
首先,需要进行Docker和Docker Compose的安装,这里一定要注意,不要使用平台的Snap安装的版本,Snap安装的版本单独通过docker run启动一些简单的容器没有问题,但是使用docker-compose启动EdgeX的时候会遇到各种奇怪的权限问题,operation not permitted,具体原因没有深入研究,如下图:

所以推荐大家尽量通过apt去进行安装,docker-compose安装也很简单,这里就不详细介绍了,网上很多相关资料。
其次,进行EdgeX的部署,参考官方文档 Quick Start - EdgeX Foundry Documentation 我这里使用的 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 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支持应该问题不会太大。