APP下载

基于ESP32的MODBUS网关设计

2022-01-08余超谢鹏曹昌怀王虎

电动工具 2021年6期
关键词:物理层网关以太网

余超,谢鹏,曹昌怀,王虎

( 中车戚墅堰机车有限公司,江苏 常州 213011 )

0 引言

伴随芯片技术、互联网技术的快速发展,自动化产业在智能控制及信息技术方面形成多个分支,如:工业机器人技术、工业互联网技术、人工智能技术、无人驾驶技术、碳监测等。与此同时,控制总线技术也取得了相应的发展,由传统的RS232、RS485、CAN、PROFIBUSDP等总线向工业以太网发展,结合移动网络、IT技术、OPC技术,形成功能复杂、自动化程度高的物联网。

工业自动化中的传感器、执行器、控制器大量应用了Modbus ASCII/RTU总线。Modbus设备的物理层主要为EIA-485,该物理层允许多个网络设备并联通信,单个网络最多允许大约240个节点。本文拟对工作在串行总线上的Modbus RTU/ASCII协议及以太网上的Modbus TCP进行分析,以国产物联网芯片ESP32为基础,开发一款Modbus无线网关设备,实现ESP32通过Modbus RTU读写多个支持该协议的传感器数据,并能使S7-1200通过Modbus TCP读写ESP32中存储的数据,达到向单个IP地址读写Modbus协议数据的目的。

1 概述

Modbus是Modicon公司开发的一种串行通信协议,目前已经成为工业领域通讯协议的业界标准,是现代工业各类自动化设备中不同控制部件、检测部件之间的通讯方式。Modbus协议规定其通讯采用主从(Master/Slave)技术:主机发起通讯请求,向特定地址的从机发起数据传输;从机应及时返回对查询做出的响应(数据),或处理所要求的动作[1]。

Modbus协议目前存在分别用于串口、以太网及其他支持互联网协议的网络版本。大量Modbus装置仅支持9 600、115 200 bps通讯速率,即最多收发14.4 KBps数据,数据吞吐量较少。

ESP32是上海乐鑫信息科技公司为移动设备、可穿戴电子产品和物联网(IOT)应用而设计的一款SOC芯片,集成了2个哈佛结构Xtensa LX6 CPU构成双核系统、单时钟周期可访问的448 KB内部ROM及520 KB内部RAM、2.4 GHz Wi-Fi和蓝牙双模,高级外设接口非常丰富,最大支持16 MB片外SPI Flash及8 MB片外SPI SRAM,是用于设计Modbus无线网关的高性价选择[2]。

2 Modbus

2.1 协议

Modbus是OSI模型第7层报文传输协议,见表1,可在RS232、RS485、光纤、无线、以太网等介质中实现不同器件之间的通信。Modbus协议可对多种设备(PLC、触摸屏、MPI、变频器、伺服驱动器、I/O设备、测量仪表等)进行远程操作。网关,也可称作协议转换器,是不同协议或不同网络之间通信的桥梁。因此,Modbus网关能完成Modbus RTU/ASCII、Modbus TCP之间的通信。

表1 Modbus通信栈

2.2 报文

Modbus协议运行在串行网络、以太网网络等物理层,其协议数据单元(PDU)是相同的,均由目标通信设备地址Addr、功能代码Code、数据Data、循环冗余校验CRC/LRC组成。在以太网或某些特殊的物理层,Modbus协议在头部添加几个字段,如传输标志符TID、协议标志符PID、长度Length等,见表2。由于PDU中规定了Modbus规定单次传输信息长度的数据为单个字节,即最大值为256,因此串行链路上PDU的最大长度为256字节,从而数据Data长度为256-3=252字节。

表2 Modbus报文帧

3 通信电路设计

Modbus串口通讯通过串口EIA-485物理层进行,可允许大量Modbus设备在同一个网络中通信。由于Modbus总线仅可由主机发起通讯,因此RS485工作于半双工模式下,故选用半双工高速收发器XD3485扩展ESP32 UART端口。XD3485、MODBUS设备以菊花链拓扑形式进行连接,总线两端需设置终端电阻,阻值为120 Ω,信号反射效应得到削减。ESP32-WROOM自带2.4 G印刷天线,连接至无线路由器后可与其他工业设备进行通信。MODBUS网关电路设计图如1所示。

图1 MODBUS网关电路设计

ESP32的官方开发框架为ESP-IDF。核心库为G0、G1两部分。

G0包 括hal、xtensa、riscv、esp_rom、esp_common、soc,包含关于硬件存取的低级指令及信息;esp_common包含硬件接口代码及工具。G0库可能相互依赖,但不会依赖其他库。

G1库包括esp_hw_support、esp_system、newlib、spi_flash、freertos、log、heap,以G0库为基础,并可能相互依赖。在G0、G1之上,该框架引入了其他库支持快速开发,如:asio、ESP-Modbus、freertos、mdns等。用于开发modbus的库为ESP-Modbus,对硬件的需求极少,耗用的ROM、RAM分别约为7 KB、0.4KB,支 持MODBUS-RTU、MODBUSASCII、MODBUS-TCP,遵循BSD许可证,用户可将其应用于商业环境中[3]。

编写测试程序发现,Free-Modbus库中的MODBUS-TCP默认UID为0,因此只能访问IP网络中目标IP对象的一个串行设备。这对于串行总线为RS232协议而言较为合适,但对串行总线为RS485稍显不足,RS485(两线制)一般可支持32个串行设备。分析FreeModbus库,修改相应代码,使MODBUS-TCP正确传输UID字段,便于其他设备通过MODBUSRTU/ASCII协议完成访问。FreeModbus库修改示例如图2所示。

图2 FreeModbus库修改

4 程序设计

4.1 ESP32 Modbus网关

ESP32 Modbus网关程序设计主要分为三部分:数据缓存池、通过串行总线存取数据、通过以太网络连接客户端并传输数据。数据缓存池用于存储分时读取的串行总线设备中的数据,以备以太网客户端访问,提高ESP32的响应速度;串行通讯、以太网通讯均需按照ESPIDF手册中的API指南,按顺序初始化对应的硬件建立相应通讯。网关程序结构如图3所示。

图3 ESP32 Modbus网关程序结构

MODBUS-TCP部分代码如图4所示。按照BluFi配网流程,依次执行:Wi-Fi初始化、启动/连接Wi-Fi、事件处理、MODBUSTCP接口初始化、MODBUS-TCP参数设置和MODBUS-TCP数据存取。ESP32 Modbus网关程序设计如图4所示。

图4 ESP32 Modbus网关程序设计

4.2 S7-1200

SIMATIC S7-1200是西门子开发的新型模块化微型PLC,集成Profinet接口,支持Profinet IO、S7通信以及TCP、UDP、Modubs TCP、OPC UA通信、安全TCP等,网络功能强大。该PLC在TIA Portal中进行硬件组态、编程、程序传输、故障诊断、项目升级、更新程序。TIA Portal V17中的Modbus TCP库指令版本更新至6.0,包括MB_CLIENT、MB_SERVER两条指令:MB_CLIENT指令通过PROFINET在客户端和服务器之间建立连接,发送Modbus请求,接收响应并控制Modbus TCP客户端的连接终端;MB_SERVER指令处理Modbus TCP客户端的连接请求,接收并处理请求,发送响应。

MB_CLIENT指令背景数据块可编辑静态变量MB_Unit_ID对应于Modbus RTU协议从站地址域。Modbus TCP服务器用作Modbus RTU协议网关时,可使用MB_UNIT_ID标识串行网络的从站设备。 S7-1200访问ESP32网关如图5所示。

图5 S7-1200访问ESP32网关

5 结语

数控机床、专用设备、装配设备等零部件大量采用了MODBUS RTU/ASCII协议。了解MODBUS RTU/ASCII、MODBUS TCP协议内容,分析MODBUS报文帧的数据结构,研究MODBUS串行数据传输至以太网服务器/客户端,可为老旧设备进行可靠性升级、性能提升改造提供强有力的技术支持。在ESP32上修改移植的FreeModbus库,并以S7-1200通过以太网访问ESP32的无线节点,实现ESP32 MODBUS-TCP无线网关所需功能,具有访问速度快的特点。

猜你喜欢

物理层网关以太网
基于K-ML-MPWFRFT的物理层安全传输技术
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
信号系统网关设备的优化
谈实时以太网EtherCAT技术在变电站自动化中的应用
多天线物理层安全传输系统性能分析
LTE Small Cell网关及虚拟网关技术研究
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
应对气候变化需要打通“网关”