1. 引言
在当前快速发展的工业4.0时代,边缘计算已经成为了一个关键技术,它能够使数据处理更加接近数据源头,从而提高处理速度并降低响应时间。这一技术尤其在工业自动化领域显示出了极大的潜力,因为它能有效处理大量来自工业设备和传感器的数据,实现实时监控和控制。
边缘网关作为连接传感器、控制器和中心处理系统的桥梁,不仅负责数据的采集和预处理,还负责数据的加密和传输,确保数据在传输过程中的安全和完整性。此外,边缘网关能够支持多种通信协议,包括但不限于RS485、Ethernet等,使其在各种工业环境中具有广泛的适用性。
2. 边缘网关概述
2.1 定义和功能
边缘网关是一种位于数据产生源(如传感器)与中心数据处理设施(如云服务器)之间的设备。它的主要功能包括数据的采集、预处理、存储和转发。通过在本地处理数据,边缘网关能够减少对中心服务器的数据传输需求,降低延迟,提高数据处理效率,并在网络连接不佳的情况下保持系统的持续运行。
2.2 边缘网关与传统网关的区别
与传统网关相比,边缘网关在处理能力和智能化程度上有显著提升。传统网关通常只负责数据转发,而边缘网关则配备了更强的计算能力,能够执行复杂的数据分析和处理任务。此外,边缘网关通常集成了更多的安全措施,如数据加密和防火墙,以确保数据在传输过程中的安全性。
通过引入边缘网关,企业可以有效地解决数据处理速度慢、系统响应时间长以及数据安全问题,这对于实现高效的工业自动化和智能制造具有重要意义。随着技术的进步和应用需求的增加,边缘网关的角色和功能将持续发展,为工业自动化带来更多的可能性和挑战。
最近在项目中使用到了畅维通达EN6400边缘网关,接下来,我将结合实际业务中的案例,为大家展示这款边缘网关的应用与技术细节。
3.畅维通达EN6400网关技术规格与特性
在使用前先来看一看这款网关的详细技术规格和参数
- 以 ARM 为核心,功耗、算力、体积、热性能整体均衡
- 输入电源的电压范围宽、具有防反接保护功能
- 5 路独立的 485 接口,支持接入 Modbus 设备。
- 1 路 HDMI 输出,方便接显示器。
- 1 路 USB 2.0, 外接键鼠、优盘均可。
- 1 路 TF 卡,扩展数据存储空间。
- 支持有线以太网,方便部署。
- 接口采用弹簧式端子,方便徒手拔插线束。
- 钣金壳体, 防护等级 IP30, 坚固、 轻便、防腐蚀, 可选 DIN 卡扣便于导轨安装
通讯接口
在EN6400网关中,有内置的Node-RED,也可以内置其他的平台,具体可以看下图 ,并设置了开机自启。网关的局域网IP默认为192.168.0.202。
4.实战项目
由于身边没有太多的硬件设备,所以在实战测试方面,我设计了一个使用边缘网关通过RS485采集称重仪数据,并通过边缘网关内置的Node-RED读取串口的数据,再使用dashboard节点进行显示,最后,再通过Modbus TCP将数据写到西门子PLC。主要测试边缘网关在实际项目有哪些优势。
整体架构是这样的
4.1使用EN6400采集RS485传感器
称重仪与边缘网关通过自带的5个RS485接口中的0A和0B做Modbus RTU通信,用于采集称重仪表的重量数据,网关做Modbus的主站,称重仪表做从站,仪表从站地址是2,波特率是19200,8数据位,1停止位,无校验。
Node-RED 使用的节点是 Modbus 节点,每秒读取一次设备数据。
下图是流文件连线及节点配置
打印出来的效果
数字343的含义是3.43KG。
完整的flow内容
[
{
"id": "bf7de48e301a2645",
"type": "tab",
"label": "拿我格子衫来",
"disabled": false,
"info": "",
"env": []
},
{
"id": "df0b29fd65548aeb",
"type": "modbus-read",
"z": "bf7de48e301a2645",
"name": "485-0",
"topic": "",
"showStatusActivities": false,
"logIOActivities": false,
"showErrors": false,
"showWarnings": true,
"unitid": "",
"dataType": "HoldingRegister",
"adr": "1",
"quantity": "1",
"rate": "1",
"rateUnit": "s",
"delayOnStart": false,
"startDelayTime": "",
"server": "9f669d2b1c2d58e3",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"x": 190,
"y": 160,
"wires": [
[
"a22b902052776c1d"
],
[
"ad51dea38739870b"
]
]
},
{
"id": "a22b902052776c1d",
"type": "modbus-write",
"z": "bf7de48e301a2645",
"name": "",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"unitid": "",
"dataType": "HoldingRegister",
"adr": "0",
"quantity": "1",
"server": "97d630483ae5377e",
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"delayOnStart": false,
"startDelayTime": "",
"x": 520,
"y": 120,
"wires": [
[],
[]
]
},
{
"id": "ad51dea38739870b",
"type": "debug",
"z": "bf7de48e301a2645",
"name": "debug 1",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 500,
"y": 180,
"wires": []
},
{
"id": "9f669d2b1c2d58e3",
"type": "modbus-client",
"name": "拿我格子衫来",
"clienttype": "serial",
"bufferCommands": true,
"stateLogEnabled": false,
"queueLogEnabled": false,
"failureLogEnabled": true,
"tcpHost": "127.0.0.1",
"tcpPort": "502",
"tcpType": "DEFAULT",
"serialPort": "/dev/ttyS0",
"serialType": "RTU",
"serialBaudrate": "19200",
"serialDatabits": "8",
"serialStopbits": "1",
"serialParity": "none",
"serialConnectionDelay": "100",
"serialAsciiResponseStartDelimiter": "0x3A",
"unit_id": "2",
"commandDelay": "1",
"clientTimeout": "1000",
"reconnectOnTimeout": true,
"reconnectTimeout": "2000",
"parallelUnitIdsAllowed": true,
"showWarnings": true,
"showLogs": true
},
{
"id": "97d630483ae5377e",
"type": "modbus-client",
"name": "Fizz",
"clienttype": "tcp",
"bufferCommands": true,
"stateLogEnabled": false,
"queueLogEnabled": false,
"failureLogEnabled": true,
"tcpHost": "192.168.0.10",
"tcpPort": "502",
"tcpType": "DEFAULT",
"serialPort": "/dev/ttyUSB",
"serialType": "RTU-BUFFERD",
"serialBaudrate": "9600",
"serialDatabits": "8",
"serialStopbits": "1",
"serialParity": "none",
"serialConnectionDelay": "100",
"serialAsciiResponseStartDelimiter": "0x3A",
"unit_id": 1,
"commandDelay": 1,
"clientTimeout": 1000,
"reconnectOnTimeout": true,
"reconnectTimeout": 2000,
"parallelUnitIdsAllowed": true,
"showWarnings": true,
"showLogs": true
}
]
4.2 使用内置Node-RED显示图表
要显示实时数据必须要现安装dashboard,对于网络不太好的同学可以将npm源设置为华为的,或者淘宝的。
完整的流连线
chart节点的配置如下:
实时数据展示显示效果图如下:
在称重仪上随机给压力,在node-red 的ui上就能实时读到数据。
ui的默认访问地址是: http://192.168.0.202:1880/ui
(原文链接 https://fizzz.blog.csdn.net/article/details/138586861, 转载需经原创作者 拿我格子衫来 同意,侵权必究)
4.3 将数据写入到PLC中
在Node-RED的中Modbus Write 节点的作用就是通过Modbus TCP协议来将数据写入到西门子PLC。
Modbus Write 节点配置如下:
Modbus client节点配置
网关采集到的数据传入西门子200smartPLC中,
通信方式是网关做Modbus TCP客户端,200smartPLC做服务端,
200smart PLC的VW0寄存器就是Modbus TCP的地址0,
PLC VW0接受到数据后,内部通过程序进行处理转换成实数存储在VD300里面
使用网线将网关与电脑都连接到交换机上,这样就可以在局域网内进行Modbus TCP通讯。
PLC程序如下:
有需要完整PLC程序的可以私聊我(拿我格子衫来)
PLC程序运行:
1.打开200smartPLC的编程软件:STEP 7-MicroWIN SMART
2.选择PLC的CPU型号,和PLC建立通信
3.打开PLC程序,导入后下载进入PLC,下载完毕启动PLC
4.点击PLC的程序监控和状态图表监控,可以在线监控程序运行情况和PLC寄存器数据变化
5.项目总结
总的来说,在项目的实战中,畅维通达边缘网关都表现非常不错,不管是数量众多的Modbus 接口,还是开机自启的Node-RED,都在使用体验上,让人感觉很舒畅。需要注意一点是,由于默认的ip是192.168.0.202,如果交换机,或者路由器设置的网段不是从192.168.0开始的,那就无法获取ip,修改路由器或者给网关接上键盘鼠标修改网关的ip配置文件。