马树,李俊,王其斌
(南京工业大学电气工程与控制科学学院,南京211816)
新型中央空调中网络温控器和物联网关设计
马树,李俊*,王其斌
(南京工业大学电气工程与控制科学学院,南京211816)
针对传统中央空调系统通过RS485总线传输方式带来的数量限制、通讯距离、响应速度等问题,设计一种新型中央空调控制系统,系统中的新型温控器通过Modbus/TCP传输数据。并且设计Modbus/TCP网关,将旧有的基于RS485总线和Modbus/RTU传输数据的温控器连接到新系统中。新型温控器和网关运行于μC/OS-Ⅲ和Lw IP基础上。此系统充分利用旧有的温控器和总线资源,解决了设备数量限制、响应延迟大、通讯距离和速度问题。经过测试,新型温控器通信正常,网关工作性能稳定。
中央空调;网关;Modbus/TCP;μC/OS-Ⅲ;Lw IP
传统的中央空调系统利用温控器对环境温度实时监测,并受系统控制,调整输出温度和调整风机速度等。它的组网方式如图1所示,控制中心通过485总线与温控器实现连接。
如图1所示的中央空调系统中,在组网规模小,数量不多的情况下可以很好的工作。但随着中央空调系统的扩大和温控节点的增加,基于串行链路的组网方式显现弊端:干扰增大、自适应差、通讯距离小、响应延迟。本文采用基于TCP/IP协议的Modbus协议,即Modbus/TCP协议进行数据通讯,解决设备数量和组网范围限制和通信稳定性问题。
图1 基于RS485的中央空调系统组网结构
如图2所示的基于以太网的中央空调系统组网结构中,新型温控器(Modbus TCP服务器)通过以太网与控制中心交换数据。控制中心本质是一个或者多个TCP客户机,他们与温控器(端口502)建立连接发送数据。另外,为了继续使用现有温控器设备和总线资源,需要把旧有温控器接入新型温控器中。因为旧有温控器使用Modbus/RTU协议,无法直接连入以太网,这里使用物联网关Modbus TCP服务器网关。该网关是所有串行温控器总代理,负责Modbus TCP客户机和Modbus串行服务器之间数据帧格式的转换。
图2 基于以太网的中央空调系统组网结构
2.1 温控器硬件设计
温控器硬件结构如图3所示。MCU采用Cortex-M3内核。关于以太网接口,STM32F407芯片内部自带10/100 Mbit/s数据传输速率的MAC内核,符合IEEE802.3协议接口标准,支持通过SMI/MⅡ/ RMⅡ接口配置和管理PHY设备。只需外接PHY (物理层)芯片即可实现以太网通信功能。本系统的PHY层选用低功耗高传输速率的芯片LAN8720,且采用精简介质独立接口RMⅢ减少MCU的以太网外设与外部PHY芯片的引脚数。串口功能用于前期设备开发与调试。
图3 温控器硬件结构
2.2 温控器软件设计
网络温控器软件结构如图4所示。温控器的软件体系建立在操作系统μC/OS-Ⅲ基础上,并且由μC/OS-Ⅱ实现任务管理与调度;为了实现对Modbus/TCP数据传输,采用Lw IP协议实现TCP/IP通信机制;同时,温控器上还一直了复合标准Modbus协议栈FreeModbus,实现对ModbusPDU数据统一处理;而且,温控器自带一个Web服务器,用于出厂时对温控器的IP地址等属性进行配置,在温控器运行时,该Web服务器可以为用户提供管理界面,方便用户随时查看温控器的工作状态和参数。
图4 温控器软件结构
2.3 M odbus TCP服务器设计
Modbus TCP服务器设计需要经过:μC/OS-Ⅲ系统移植—FreeModbus移植—Lw IP移植过程。Modbus TCP服务器(网络温控器)设计采用并发模型,这样当收到多个连接请求时可以及时响应。以太网服务器设计基于Lw IP的Sequential API实现,分为主任务和子任务两个模块设计。其中主任务通过监听到数据连接请求而为其创建子任务与其通信。主任务和子任务关系结构如图5所示。
图5 主任务和子任务关系
因为μC/OS-Ⅲ中每个任务的堆栈由程序员自己分配(堆栈空间用于保存任务切换时每个任务切换前状态)。删除子任务时,必须回收堆栈空间,以免发生内存溢出。子任务负责处理客户端传输的Modbus/TCP数据帧。数据帧格式如图6所示。
图6 M odbus/TCP帧格式
同时,因为涉及访问共享资源,这里引入了互斥量机制,保证独占式访问。
子任务的详细工作流程如图7所示。
图7 子任务工作
子任务工作关键代码如下所示:
sys_sem_wait(&mem_sem)//获取信号量
usUID=(TcpRcvBf[Lwip_UID]≪8U)+TcpSndRcvBf[Lwip_UID]+1//获取MBAP帧中事物标识
unLgth=(TcpRcvBuf[Lwip_LEN]≪8U)+TcpSndRcvBf[Lwip_Len+1]//获取MBAP帧中长度
ucUID=TcpSndRcvBf[Lwip_UID]//获取单元标识符
ucFctCode=TcpSndRcvBf[Lwip_FUNC]//获取功能码
eException=xFuncHandlers[i].pxHandler(ucMBFrame,&usLength)////调用功能码函数,处理Modbus PDU
Sendstat=netconn_write(conn,TcpSndRcvBF,usLgth+ Lwip_FUNC,NETCONN_COPY)////向客户端返回数据,数据拷贝式发送
sys_sem_signal(&mem_sem)//释放互斥量
nebuf_delete(inbuf)//删除客户端数据包
OSTaskDel(OS_PRIO_SELF)//删除任务自身
旧有的温控器总线上运行的是Modbus/RTU协议,新型传输线运行的是Modbus/TCP协议。网关需要完成Modbus/RTU和Modbus/TCP之间协议的转换功能。
Modbus/TCP利用IP地址寻址服务器,但为了访问旧有的Modbus/RTU温控器,需要在MBAP帧头中加事物标识单元。此外,TCP/IP协议的可靠连接特性和ICMP等协议协议机制保证了数据包传递的正确性,因此Modbus/TCP不需要CRC校验。
Modbus/RTU和Modbus/TCP帧协议数据差别如图8所示。
图8 M odbus RTU帧格式和M odbusTCP帧格式对比
在软件架构上,物联网关和温控器使用完全相同的架构:基于操作系统μC/OS-Ⅲ的支撑多任务管理与调度;基于Lw IP协议栈实现TCP/IP通信。
3.1 物联网关硬件设计
物联网关硬件结构图如图9所示。
图9 物联网关硬件结构图
以太网模块由芯片内部自带的MAC内核,外加LAN8720(PHY层芯片)组成。LAN8720可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式),且支持HP Auto-MDIX自动翻转功能,具有较高性能。以太网模块可以接收来自多个Modbus/TCP客户端的请求。其中RS485模块必须工作于串行方式,在某一时刻RS485只能存在一个Modbus/RTU请求和响应。因此,让多个Modbus/TCP客户端互斥和独占使用RS485是网关设计的核心。
3.2 物联网关软件设计
网关服务器实现为并发模式。设计原理与温控器原理类似,都采用多任务方式完成。服务器主任务监听新连接,子任务负责处理新连接数据帧。这里,网关服务器需要完成的任务是实现客户端Modbus/ TCP命令帧和串行链路Modbus/RTU响应帧的转换。
子任务具体流程如图10所示:接收到客户端发过来的Modbus/TCP请求帧—滤除帧长非法的数据帧—对合法数据帧帧头分解—调用embrtusend函数发送构造的Modbus/RTU响应帧。同时,子任务在RS485接口接收Modbus/RTU响应帧,若验证通过,封装成为Modbu/TCP格式数据,并发送到上位机系统。
图10 物联网关子任务流程
物联网子任务中针对网关程序中协议代码如下:
(1)将Modbus/tcp帧转为Modbus/rtu帧usPID= (TCPSendReceiveBuf[LwIP_TCP_PID]≪8U)+TCPSendReceiveBuf[LwIP_TCP_PID+1]
usLength=(TCPSendReceivBuf[Lw IP_LEN]≪8U)+ TCPSendReceiveBuf[LwIP_TCP_LEN+1]
usUID=TCPSendReceiveBuf[LwIP_TCP_UID]
usFun=TCPSendReceiveBuf[LwIP_TCP_FUNC]
memcpy(ucRTUBuf,&TCPSendReceiveBuf[LwIP_TCP_ UID],usLength);
(2)发送Modbus/RTU帧err=eMBRTUSend(usUID,&ucRTUBuf[1],usLeth-1)
If(err!=MB_ENOERR)
{procesflag=MBGATE_ERRSENDRTU;
break;}
(3)发送成功后,等待Modbus/rtu响应,若响应成功,读取数据
err=eMBRTUReceive(&RTURcvAddress,&PDUStartAddr,&PDULength)
if(err!=MB_ENOERR)
{processflag=MBGATE_BADCRC;
break;}
(4)将Modbus/RTU转换为Modbus/TCP帧
TCPSendReceiveBuf[LwIP_TCP_LEN]=(PDULength+1)≫8U
TCPSendReceiveBuf[LwIP_TCP_LEN+1]=(PDULength+ 1)&0xFF
memcpy(&TCPSendReceiveBuf[LwIP_TCP_FUNC],PDUStartAddr,PDULength)
(5)发送Modbus/TCP响应给客户端,拷贝方式发送
netconn_write(conn,TCPSendReceiveBuf,PDULength+
Lw IP_TCP_FUNC,NETCONN_COPY)
4.1 温控器测试
温控器的测试方法是在控制中心主机运行Modbus TCP客户端测试软件,该软件向温控器(Modbus TCP服务器端)发送指令,根据温控器返回帧,判断通信工作正常.测试结果如图11所示。
图11 温控器测试结果
温控器和测试软件处于同一网段。软件读取起始地址为0的23个寄存器值。可以看出,成功接收到寄存器中数据。服务器响应正常。
4.1 物联网关从测试
为了测试物联网关,把网关接入以太网,网关的RS485接口接入到旧有温控器的串行链路上。测试的组网结构如图12所示,其中控制中心的IP地址为
10.1 3.118.10,物联网网关的IP地址为10.13.118.130。
图12 网关测试组网图
控制中心的主机运行Modbus Poll客户端软件来测试网关功能,Modbus Poll能够模拟Modbus客户端,实现对Modbus服务器调试。如图13所示,配置Modbus Poll客户端,使其连接到网关10.13.118.130的端口502上。同时配置数据读写地址和范围。Modbus Poll客户端通过物联网网关查询Modbus串行链路上1号温控器的保持寄存器值,采用1 000ms自动扫描方式,读取起始地址0处10个寄存器数据。
图13 Modbus Poll软件配置
对1号温控器寄存器的查询结果如图14所示,可以看到Modbus Poll客户端对温控器寄存器进行了213此扫描,所有的213次扫描没有发生通信终端或者查询失败的情况,经过长时间测试,网关工作状态稳定,性能可靠。
图14 物联网关测试结果
设计了中央空调系统中的能接入互联网的新型温控器和物联网关。此网关完成Modbus/TCP协议与Modbus/RTU协议转换,为工控领域的串行接口产品联入以太网实现了一种解决方案。经过测试,系统通信正常,运行稳定。
[1]关永,王雪立,刘维民,等.基于ARM的嵌入式系统实验研究[J].电子器件,2005,3:628-632.
[2]张学森.基于WEB的中央空调远程集中监控系统[D].山东大学,2014.
[3]杨静,吴乃陵.嵌入式操作系统应用研究[J].电子器件,2005,28(1):204-206,210.
[4]李伟.基于Modbus协议的工控节点设计与实现[J].计算机工程,2010,16:226-228,231.
[5]袁中书,陆阳.轻量级TCP/IP协议栈机制分析与优化[J].计算机工程,2015,2:317-321.
[6]朱晶,齐向东.基于OPC、Modbus以及Modbus Tcp/Ip的iFIX与PLC的通信[J].电子器件,2013,2:260-264.
[7]徐荣珍,张敏聪,李从心.基于ARM和TCP/IP协议的嵌入式串口网络转换器设计[J].电子器件,2006,3:909-912,916.
[8]浦汉来,刘昊,凌明.小型嵌入式操作系统中断管理的实现[J].电子器件,2003,2:218-221.
马树(1990-),男,汉族,江苏省徐州市,南京工业大学,硕士研究生,研究方向为计算机网络控制和信号处理,moveforward333@163.com;
李俊(1972-),男,汉族,江苏省南京市,南京工业大学,教授,研究方向是电力系统,j262402@163.com。
Design of Network Thermostat and Connection Gateway in Central Air Conditioner
MA Shu,LI Jun*,WANGQibin
(Nanjing Tech University Electrical Engineering and Control Science College,Nanjing 211816,China)
The traditional central air conditioning system transfers data by RS485 and causes some problems such as increase of interference,bad adaptive control and short communication distance,a new type of central air conditioning control system is designed,the system’s new thermostat transmits data via Modbus/TCP.Modbus/TCP gateway is designed by this way,the old temperature controller based on RS485 bus characteristics and Modbus/RTU transmission will be able to connected to the new conrtol system.Besides,the new thermostat and Modbus/TCP gateway is based onμC/OS-Ⅲand LwIP.This system makes full use of the existing temperature control device and bus resources,and it solves the limit of the number of devices,system response delay,short communication distance and low speed problem.After a long time test,new thermostat and Modbus/TCP gateway serversmeet in communications,the working state of the gateway is stable and reliable.
network transmission;gateway;modbus/TCP;μC/OS-Ⅲ;Lw IP
C:7230;7320R
10.3969/j.issn.1005-9490.2017.01.039
TN915
:A
:1005-9490(2017)01-0207-05
2016-01-08修改日期:2016-03-04