1. 引言
在控制、电子信息、计算机等行业高速发展的推动下,各个行业的智能化水平不断提高,随着国家物联网发展鼓励政策和“中国制造2025”计划的出台 [1] ,智能化发展成为了时代热点。工业照明系统与我们的生产息息相关 [2] ,在工业现场及车间仍以一键式的手动控制为主,由于厂房区域大,照明节点众多,难以实现精确单灯控制,因此造成智能化程度较低,电能浪费严重。虽然有几家企业已经研究出适用于工业照明智能化的照明控制器,但功能较为单一,无法真正实现智能化。为了对厂房灯具实现多点控制,并将数据回传处理,本文拟将智能网关技术应用到工业照明系统中去,设计一款适合工业照明系统的智能网关,对于搭建工业网络智能照明控制系统,将具有重要的应用价值。
2. 总体方案设计
工业照明系统的智能化设计主要是指在原有的工业照明技术条件下,增加以智能网关为核心的智能化采集控制单元,使照明控制趋于智能化和简约化。如图1所示,工业照明智能控制系统主要由供电部分和智能控制部分组成。智能控制部分,主要是由“三层网络”架构实现:“第一层网络”是由许多的采集控制节点组成,每个节点包括节点MCU,照度采集单元,继电器控制单元,供电单元等构成部件,从而完成对每组灯具的开关量控制和相应区域的照度信息采集,所有节点犹如一张“大网”覆盖了整个厂房;“第二层网络”主要是指智能网关控制层,也是本次设计的核心环节,对于“第一层网络”的采集信息及时储存和处理,将控制信号反馈给“第一层网络”,将处理的数据上传给“第三层网络”;“第三层网络”主要是指远程PC端,利用客户端程序完成对整个照明网络的实时监控和控制。考虑到以太网远程传输的可靠性与快捷性以及现场总线相对于工业应用的优势,“第一层网络”和“第二层网络”主要由Modbus485现场总线通信,而“第二层网络”和“第三层网络”主要是由以太网TCP/IP协议实现信息传输过程。
在实现基本控制和采集数据量的基础上,实现照明分组控制、灯具寿命统计等功能。智能网关的具体功能阐述如下:
1) 透传功能:通过上位机显示界面可以实时查看照明厂房的灯具状态,照明节点数据直传到远程监控端;同时可以通过远程客户端可以直接控制每组灯具的亮灭及定时设定;
2) 照度统计功能:将照度信息每30秒上传一次,根据照度信息变化统计当天照度随时间的变化曲线图;根据照度骤变确认是否产生坏灯;根据每组灯具的开关时间自动绘制寿命时长统计图;
3) 自动控制功能:根据照度统计,根据适合的人类活动的最佳照度区间自动控制照明灯具的开关控

Figure 1. Intelligent control system for industrial lighting
图1. 工业照明智能控制系统
制;并设定工作模式和非工作模式,自动调节亮灯数量,将节约做到极致。
3. 智能网关硬件设计
智能网关是智能化工业照明控制系统的核心,既要充当采集控制节点的“客户端”,又要扮演远程PC端的“服务器 ”,完成信息的存储、协议转换、上传下载和运算处理等功能。智能网关主要由处理器模块、电源模块、485通信模块和以太网通信模块组成,各模块之间协同工作,相互它们之间的关系如图2所示。每一路485总线接口均连接到相应的采集控制节点,通过RS485总线收发控制器,将信息在MCU和终端节点之间以Modbus-RTU协议方式快速传递;由于所选芯片STM32F107系列支持以太网传输,但不包含PHY层,选择DP83848芯片构建以太网模块,与MCU共同架构了完整的以太网协议层,完成智能网关与上位机之间的通信传输功能。在完成硬件通信优化设计后,通过对MCU软件设计,完成工作/非工作模式智能切换、根据照度信息进行具体灯组照明控制以及坏灯监测等功能。
3.1. 处理器模块电路
考虑到处理器的运行速率、功能模块、项目所需芯片处理以及存储能力等因素,在可控成本的前提下,选择使用ST系列ARM芯片STM32F107VCT6作为智能网关的主芯片。STM32F107VCT6是一款32位RISC微处理器,内核为ARMCortex-M3。其低功耗、低成本、性价比高,具有内部64 KB RAM,256 KB Flash以及72 MHz的运行频率 [3] 。该芯片具有1个10/100M以太网控制器、5个通用同步异步收发

Figure 2. General block diagram of intelligent gateway
图2. 智能网关总体框图
器USART控制器、3个SPI接口,可以满足以太网数据传输和RS-485的数据传输的需求。
处理器模块中看门狗电路如图3所示,主要作用是防止程序跑飞或者陷入死循环,保护程序运行。W25X16是具有SPI接口的FLASH闪存芯片,存储空间为16 Mb,支持高达75 MHz的SPI时钟频率。其在智能网关原理图中接线图如下图4所示。
3.2. 以太网模块电路
STM32F107VCT6芯片的以太网功能支持符合IEEE802.3标准的以太网数据收发。在智能网关以太网模块设计中,将主芯片的媒体访问控制层(MAC)通过业界标准差的较少的媒体独立接口(RMII)外接提供外接物理接口(PHY)的DP83848CVV芯片(图5),从而使主芯片的MAC层和以太网芯片PHY层建立LAN通信连接 [4] 。PHY层通过9根信号线(RMII接口)来连接STM32F107VCT6芯片的相应接口,并通过芯片输出的25MHz时钟信号来驱动。
3.3. RS485模块电路
RS485模块电路主要由主芯片USART接口、RS485总线收发器MAX485ESA、光电耦合器6N137、接线端子及外部线路组成。采集控制信号均采用Modbus协议在主芯片和终端节点之间传输,每一个RS485模块均可作为Modbus主站/从站接收和发送消息。
在本次工业照明体系之智能网关设计工作中,基于芯片的处理能力和USART接口限制,我们选定设置4路485通信接口,并需要考虑RS485总线的电源隔离,电气隔离,总线保护等因素 [5] 。在RS485总线收发器MAX485ESA与MCU连接中加入了转换速率高达10 Mbps的高速光电耦合6N137 [6] ,避免总线传输线路对STM32F107VCT6处理器造成干扰。其中485接口总线部分电路图连接如图6所示。
4. 智能网关软件设计
智能网关的软件设计主要分三层架构:网络连接层、协议层、应用层。无论是TCP/IP协议软件开发,

Figure 4. SPI FLASH interface circuit
图4. SPI FLASH接口电路
还是Modbus协议软件开发,都要基于这三层网络架构进行设计,并在存储器实现数据的交互,完成协议转换传输。在此基础上,在应用层完成自动控制和配置功能软件设计。本文以Lwip协议栈为基础进行TCP/IP开发,以Modbus-RTU协议传输格式开发照明节点与智能网关通信软件,并完成数据的初步存储和处理,依据数据处理结果做出自动控制动作。智能网关软件架构如下图7所示。
4.1. 以太网模块软件设计
LwIP协议是一个基于C语言的TCP/IP协议栈。对代码的精简和C语言指针的使用,使其系统资源占据合理,非常适用于嵌入式平台 [7] 。在STM32F107VCT6上我们进行基于LwIP协议的无操作系统移植,并进行相应的改进和适配,使智能网关与PC端之间可以建立网络连接。在此基础上,完成应用层的数据传输设计。网关应用层程序可以直接读取底层缓存区存储数据,避免了浪费内存,提高了软硬件的工作效率。
LwIP是TCP/IP协议一种独立、简单的实现,包含网络连接层、网络层、传输层和应用层的所有以太网协议,其设计目的是在保证嵌入式产品完成TCP/IP功能的基础上,减少了协议栈对处理器资源的消

Figure 5. Ethernet chip interface circuit
图5. 以太网芯片接口电路

Figure 7. The software structure of intelligent gateway
图7. 智能网关软件结构
耗,运行空间需要几十KB的RAM和40KB左右的ROM。LwIP协议栈源代码实现的主要功能如下表1所示。
本设计利用LwIP协议栈实现智能网关与上位机之间以太网通信连接,在接收发送数据的过程中,都会将数据提前存储至缓冲区,因此,LwIP的缓冲管理机制非常关键。例如,STM32F107VCT6的MAC层收到MAC数据包的时,把其中的前导字段和帧起始界定符进行过滤处理,而将其中剩余的数据段保存移交到LwIP的数据结构pbuf缓存区 [8] ,pbuf的存储方式如下图8所示。
协议栈的移植重点是底层网卡驱动的移植。Lwip在STM32F107上的移植工作主要为:配置文件ethernetif.c,该文件是连接STM32F107网络驱动程序和Lwip协议栈的纽带;二是编写STM32F107的网络驱动程序,实现底层的初始化、收发报文功能。
4.2. Modbus485模块软件设计
Modbus通信协议是工业领域通信协议的业界标准,并且是当前工业电子设备间常用的连接标准之一 [9] 。当在Modbus网络通信时,此协议控制着每个控制器要知道它们的设备地址,识别按地址发来的消息,决定产生何种行为。如果需要回应,控制器将生成反馈信息并通过Modbus协议发送。Modbus协议可以支持多种协议接口,如RS232、RS485等。由于RS485支持一主多从,智能网关可以连接多个照明节点,因此选择485底层接口形式。Modbus应用协议定义了简单的独立于其下面通信层的协议数据单元(PDU),在不同总线或网络的Modbus协议映射在协议数据单元之外引入了一些附加的域,发起Modbus事务处理的客户端构造Modbus PDU,然后添加附加的域以构造适当的Modbus串行链路层通信ADU,Modbus帧结构如下图9所示。
智能网关和终端照明控制节点之间的通信基于Modbus协议来实现,Modbus协议栈主要由底层硬件驱动、主程序、发送接收数据、功能函数和事件管理五部分组成。Modbus协议通过中断函数接收来自RS485线路的数据包,并将数据缓存在分配好的内存中。定义好的结构体MBFrame_TypeDef用来保存接

Table 1. Protocols and functions of LwIP protocol stack
表1. LwIP协议栈所含协议及功能

Figure 8. pbuf structure and storage mode
图8. pbuf结构及存储方式
收Modbus协议传输到数据报文信息,为保证接收和处理报文的效率,避免因为接受和处理异步造成数据冗余,设计了一个上述结构体类型组成的队列MBFrameRxCacheData。
发送数据的步骤相对于接收数据来说复杂程度较小,向照明节点发送数据查询函数报文。这个函数将输入的照明节点地址、功能码和数据进行打包,并对其进行CRC16校验,将2个字节的校验码添加到数据域。发送之前先将发送状态设置为STATE_TX_XMIT。然后调用USART2的发送函数,将Modbus数据帧每一个字节依次写入USART2的发送寄存器发送到RS485总线,发送完成直接再将发送状态设置STATE_TX-IDLE。
4.3. 自动控制模块软件设计
自动控制功能需要实现在某种具体环境条件下实现自动控制照明开关,具体的环境条件需要用户自己在配置环节进行设定。在工业照明系统的智能控制设定中,主要是针对模式、定时、照度检测等实现参数配置。定时设置主要是设定每天的开关灯时间,照度参数主要是设定是否采用照度参数自动控制以及触发等级开关的照度值,模式设置主要是对工作模式和非工作模式进行设定。自动控制的照明模式可以通过现场按键进行选择,其功能设计主要如下表2所示。
4.4. 上位机客户端设计
根据前述的设计思路和智能网关软硬件实现方案要求,采用C#编程语言 [10] ,基于.NET Framework编程平台,在Visual Studio2010 IDE开发环境下,利用Winform窗口编写方式,将远程监控和控制画面以窗口的形式在远程PC端呈现,通过菜单栏的不同选项操作,分别实现灯组状态显示、照度信息显示、定时设置、远程控制等功能,完成客户端的设计。在监控页面,通过颜色的显示不同来区分不同灯组的亮灭状态,通过点击图标,可以实现对灯组的控制,如下图10所示。

Table 2. Automatic control lighting mode
表2. 自动控制照明模式
5. 智能网关测试分析
在前述基于STM32的硬件设计和软件设计基础上,通过搭建工业智能照明试验台验证智能网关的可行性并做出具体分析。智能网关测试平台以智能网关为核心,通过485接口向下连接一路终端照明节点,该照明节点连接4组灯具,每组灯具四盏灯,根据设定的不同照明模式,有不同的亮灯效果。另外在终端照明节点连接照度模块,检测实时照度,并上传智能网关存储器。智能网关向上使用以太网连接至PC端,并在客户端实现监控、控制和统计功能。通过在客户端设置照明模式和参考照度值,便可实现照明自动控制。实验连接和监控界面如图11、图12所示。

Figure 11. Test experiment of intelligent gateway
图11. 智能网关测试实验

Figure 12. Computer client monitoring interface
图12. PC机客户端监控界面
6. 结语
本设计针对目前工业照明节点众多、集中控制困难和电能浪费等问题提出了以智能网关为核心的控制方式,从总体概述、硬件设计和软件设计等几个方面阐述分析,并测试验证智能网关的产品效果。智能网关可以较好的实现工业照明系统的智能化控制、监控等功能,通过以太网对Modbus485网络运行参数的获取,实时进行数据的巡检和更新,保证了工业照明网络的高效运作,具有较好的应用价值。