一、 准备工作
1.1 工业设备
工业设备是指用户自己的需要进行远程监控的自动化设备或者仪器仪表,因为大部分工业自动化设备都是基于PLC进行控制的,而设备的所有状态都可以从PLC获取到,也可以通过向PLC中写入数据达到控制设备的目的,所以一般情况下为实现对设备的数据采集和控制都是基于和PLC通讯来实现,所以在这里我们直接使用一个西门子的S7-200 SMART的PLC来模拟用户的工业设备,内部的状态数据均为模拟的数据。
图表1 SIMATIC S7-200 SMART ST20实物图
为了更形象地进行操作展示,内部通过程序模拟了部分的设备状态参数,具体的变量表如下表所示:
变量名称 |
变量地址 |
数据类型 |
变量说明 |
电磁阀开关 |
VB200 |
Byte |
0:关闭,1:开启 |
进水温度 |
VD201 |
REAL |
单位摄氏度 |
室内温度 |
VD205 |
REAL |
单位摄氏度 |
出水温度 |
VD209 |
REAL |
单位摄氏度 |
图表2 PLC变量信息参考表
1.2 工业网关
因目标设备的控制系统是基于西门子S7-200 SMART的PLC来实现的,PLC有两个通讯接口,一个是DB9的串口,RS485类型,一个是以太网接口,所以我们可以选择支持RS485的网关或者选择支持以太网的网关都是可以的,这里我们选择使用云物智创的CTII-Y32工业数据采集网关,这个网关是工业级设备,且支持一路RS485接口,为了方便我们直接使用云物智创的CTII-Y32连接西门子S7-200的DB9编程口的专用电缆,这样可以直接将PLC上取电为网关供电且实现RS485通讯。
网关IMEI:863569068524040
淘宝链接:https://ctiinnovate.taobao.com/
官方网站:https://www.ctiinnovate.com/
网管平台:https://gm.ctiinnovate.com/
1.3 服务器
要实现在任何可以上网的地方都能访问到工业数据可视化平台,则必须要有一台具备公网IP地址的服务器,可以是公司机房的物理服务器,也可以购买第三方提供的云服务器,比如天翼云,腾讯云,阿里云等都有云服务器提供。
这里只是单纯的演示,所以对于服务器性能要求不高,所以我们在腾讯云购买了一台配置轻低的轻量应用服务器,
服务器公网地址:120.53.89.109
腾讯云平台:https://cloud.tencent.com/
服务器价格:
注:购买完服务器之后需要进行安全组或防水墙设置,需要将对外提供服务的端口放开,不然用户无法从外网连接到服务器。我这里的服务器为演示用,所以直接放开了所有的端口,生产环境不建议这样操作,会有相应的安全风险,需要放开的端口可以参考下表:
应用类型 |
端口号 |
协议 |
说明 |
SSH |
22 |
TCP |
允许远程通过SSH连接服务器执行命令 |
PING |
ALL |
ICMP |
允许从外网PING通服务器的IP |
EMQX |
1883 |
TCP |
允许MQTT接入 |
|
18083 |
TCP |
允许访问EMQX管理界面 |
FUXA |
1881 |
TCP |
允许访问FUXA平台 |
不同运营商的云服务器端口开放设置的方法不同,这里就不具体描述怎么配置端口放开了,可以参考具体的运营商相关的说明。
二、安装DOCKER环境
为了简单安装步骤和方便运维管理,后面用到的所有服务我们都使用DOCKER的方式进行安装,所以我需要在服务器安装DOCKER的基础环境。
首先我们使用SSH工具连接到服务器,我这里使用的XSHELL,如下图所示:
2.1 安装Docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.2 安装国内Docker源
yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3 安装Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
2.4 添加Docker加速器
echo '{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}' > /etc/docker/daemon.json
2.5 启动Docker服务并设置为开机自启动
//设置开机自启动
systemctl enable docker
//启动DOCKER服务
systemctl start docker
2.6 检测Docker环境是否正常
运行:docker -v查看DOCKER信息及是否正常安装
运行:systemctl status docker查看DOCKER服务是否运行
三、安装MQTT服务
MQTT服务器我们使用的是EMQX开源版本,我们使用DOCKER的方式安装5.0的版本。
EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,同时保证毫秒级的低时延。
EMQX 支持多种协议,包括 MQTT (3.1、3.1.1 和 5.0)、HTTP、QUIC 和 WebSocket 等,保证各种网络环境和硬件设备的可访问性。EMQX 还提供了全面的 SSL/TLS 功能支持,比如双向认证以及多种身份验证机制,为物联网设备和应用程序提供可靠和高效的通信基础设施。
注:EMQX文档资料:https://www.emqx.io/docs/zh/latest/
3.1 拉取emqx镜像
docker pull emqx/emqx:5.0.21
拉取成功可以使用命令docker images查看,如下图:
3.2 安装emqx服务
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 --restart=always emqx/emqx:5.0.21
可以使用命令docker ps | grep emqx 查看EMQX的运行状态,如下图所示:
3.3 访问emqx管理平台
EMQX的管理端口是18083,直接使用http://服务器IP:18083,我们这里是http://120.53.89.109:18083 如下图所示:
默认的用户名为admin,密码为public,第一次登录强制要求修改密码,如下图:
输出新的密码就可以进入主页,如下图:
修改成中文版本,如下图:
注:因为我们只是为了演示基本功能,所以没有进行接入验证,ACL控制等,如果在生产环境中用户需要根据自己的需要进行安全设定,具体的设定方法可以参考官方的文档资料。