基于μC/OS-III多参数RTU的设计

2015-12-15 07:58孙远徐群
电子设计工程 2015年7期
关键词:输出模块主站以太网

孙远,徐群

(河海大学 能源与电气学院,江苏 南京 210000)

基于μC/OS-III多参数RTU的设计

孙远,徐群

(河海大学 能源与电气学院,江苏 南京 210000)

文中提出了一种基于μC/OS-III操作系统的多功能、模块化、多参数RTU的设计思路。硬件上采用cortex-m3内核的stm32处理器,同时具有数字量输入输出模块、模拟量输入模块、SDI-12接口电路模块、RS232通信模块、RS485通信模块以及以太网模块。通信协议采用Modbus-RTU和Modbus-TCP协议。相较于普通RTU,本设计具有模块化、多功能、并且支持SDI-12接口标准的优点,并且硬件上具有低功耗、强大的计算能力和存储能力,软件上具有多任务、实时性等优点。

模块化;RTU;μC/OS-III;SDI-12;Modbus

遥测终端(Remote Tenninal Unit,RTU)是一种用于远方数据采集、处理与传输的智能化装置。可广泛应用于水情自动测报、水利工情监测、油田油井工况监测等诸多领域。系统以cortex-m3处理器为核心,采用μC/OS-III操作系统,相比于arm9处理器,cortex-m3在功耗上和价格上更具优势,因此比较适合遥测终端的开发。

1 RTU硬件设计

基于μC/OS-III的遥测终端结构图如图1所示,终端系统包括核心模块和I/O模块两部分。其中,核心模块集成有MCU、存储器、电源、键盘及液晶显示、SDI-12接口电路、以太网接口、RS485接口、RS232接口以及ZigBee模块。I/O模块则包括数字量输入模块、数字量输出模块、模拟量输入模块等。其中I/O模块属于可配置模块,可根据实际I/O接点数量灵活配置。文中MCU通过I/O总线,可以实现对I/O模块的输入输出操作[1]。

图1 遥测终端结构图Fig.1 Structure of the remote tenninal unit

1.1 MCU选取

MCU处理芯片选用意法半导体的STM32系列,采用cortex-m3内核,其具有低功耗、低成本、高性能等优点。相较于同级别的ARM7,其在性能上有大约30%的优势。它结合了Thumb兼容的Thumb-2指令集架构,对代码结构起到了明显的优化作用。cortex-m3是一个32位的内核,具有32位的数据路径、寄存器和存储器接口。同时,采用哈佛结构的cortex-m3内核,拥有独立的指令总线和数据总线,可以让数据访问和取指同时进行,因此性能上得到了进一步加强[2]。

1.2 I/O总线设计

RTU共配置两组8位I/O总线,两组16位I/O总线,如图2所示。

图2 I/O总线设计图Fig.2 The design of the I/O bus

8位I/O总线可外接8位数字量输入/输出模块、8位并行输出A/D转换器,同时,8位I/O总线还具备SPI总线功能,可外接串行输入/输出模块和串行A/D转换器。16位I/O总线可外接12/16位并行输出A/D转换器以及16位数字量输入/输出模块。每一位总线接口都和MCU上一个GPIO引脚相连接,当需要使用输入输出模块时,只需要将模块安装在I/O总线接口上,并进行软件上的配置就可以实现。这样设计可以有效利用MCU资源,用户可根据实际需求,选择连接模块的数量和类型。

1.3 SDI-12接口电路

SDI-12接口标准是美国水文、气象、水质仪器生产厂家根据美国地质调查局水资源处的要求统一商定的。该接口具有如下适用范围:

1)边远地区电池供电且电流较小的智能仪器;

2)系统整体低成本;

3)记录器和传感器之间的连接电缆可达60 m;

4)数据记录器可通过一根电缆连接多个传感器。

在我国,传统的水文数据采集系统一般采用RS232、RS485、RS422等接口标准,相比而言,SDI-12接口标准有如下优势:

1)统一了硬件接口协议和通信协议,便于数据记录器的批量生产以及传感器的互换;

2)降低系统集成成本,可连接多个传感器并且仪器通信功耗低;

3)安装与维护方便。

SDI-12总线的工作原理如图3所示,带有SDI-12接口电路的数据记录器,通过SDI-12总线,仅有数据线、电源线、地线三根线,就可以连接多台符合SDI-12接口标准的传感器[3]。

图3 SDI-12总线工作原理图Fig.3 Operating principle of the SDI-12 bus

2 RTU软件设计

RTU内嵌μC/OS-III实时操作系统,采用Modbus通讯协议。μC/OS-III是一个可升级,可固化的基于优先级的实时内核。Modbus协议包括 3种方式:ASCII、RTU和 Modbus/ TCP。ASCII和RTU方式是通过串口形式通讯,而TCP则是通过以太网形式通讯。

2.1 μC/OS-III操作系统移植

μC/OS-III是Micrium公司推出的,源于μC/OS-II的新版操作系统。与μC/OS-II一样,其源码遵循ANSI C标准,因此具有良好的移植性。相较于μC/OS-II,μC/OS-III操作系统作出了很大的改进。任务的数量不再受限于系统本身,仅受限于系统存储器的大小。而基本的μC/OS-II系统最大仅能支持64个任务。在μC/OS-III系统中,多个任务可以运行于同一优先级上,这些相同优先级的任务通过时间片轮转调度。由于采用了延迟中断处理机制,因此系统的中断延迟被大大的缩短了。引入了时间戳的概念,系统通过32位计数器精确计算各个任务的CPU使用率、最长关中断时间、最长关调度器时间等。总之,μC/OS-III在μC/OS-II的基础上进行了全面的升级于改进,但是其对硬件的要求并没有提高[4]。

μC/OS-III系统的移植方法与μC/OS-II类似,都是修改与内核、CPU相关的文件以及创建板级支持包(BSP),具体过程可以归纳为如下:

1)编写os_cpu.h文件。该头文件的功能包括统一使用的数据类型、设置堆栈属性以及对时间戳获取函数和任务切换函数进行宏定义。

2)编写os_cpu_a.asm文件。该文件包括OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()等任务切换相关的底层函数。OSStartHighRdy()函数的功能是设置系统运行标志位OSRunning=TRUE;将就绪表中最高优先级任务的栈指针加载到SP中并强制中断返回。OSCtxSw()是在任务级任务切换函数中调用,其功能是保存任务的环境变量,保存当前任务SP并载入最高优先级任务的SP,恢复就需最高优先级任务的环境变量,实现任务级切换。OSIntCtxSw()实现中断级任务切换,该过程无需进行堆栈操作,只需要对栈指针进行调整即可。

3)编写os_cpu_c.c文件。该文件包含OSTaskStkInit()函数和用于扩展用户功能的钩子函数。OSTaskStk Init()函数的功能是用于初始化任务堆栈,并返回新的栈顶位置。

图4 RTU系统配置流程图Fig.4 The configuration flow chart of RTU system

4)编写cpu.h文件。cpu.h是与cpu相关的头文件,其主要包括标准数据类型、字长、堆栈、临界区等的相关定义。

5)编写cpu_a.asm文件。其主要功能是临界区函数的实现,通过用户设置的临界区方法中断使能函数。

6)编写板级支持包(BSP)。根据需要移植相关硬件的初始化函数和驱动程序,包括RCC、GPIO、NVIC、LEDLCD等。

2.2 M odbus通讯协议

Modbus通讯协议为不同控制器之间,控制器与其它设备之间实现双向数据通信。Modbus通讯协议定义了控制器能够识别的消息结构,采用主/从总线型连接方式,规定了命令和响应的交互机制。该协议支持RS-232、RS-485、RS-422以及以太网设备。Modbus协议包括的3种方式,这里主要用到的有Modbus/RTU和Modbus/TCP两种。Modbus/TCP协议是一种基于以太网的协议,通过该协议可以实现RTU与计算机之间的以太网通信。而Modbus/RTU协议运行于RS-232、RS485等串行接口设备,实现Modbus主站站与Modbus从站之间的通信[5]。Modbus/RTU协议在通信时除了需要进行奇偶校验外还需要进行16位CRC校验,而Modbus/TCP协议则没有规定额外的校验。

在实际使用中,当RTU与计算机进行以太网通信时,则采用Modbus/TCP协议,此时,RTU将不断接收来自网络的查询命令,并实时响应。当RTU作为从站进行串口通信时,则采用Modbus/RTU协议。得益于RTU模块化的设计,所以无论作为主站还是作为从站,只需要在软件上进行相关配置即可。

RTU系统设计流程图如图4所示。系统上电后,首先初始化开发板和μC/OS-III,然后进行串口配置,主要配置系统数据传输的地址、波特率、数据位和停止位,接下来配置以太网的IP地址、子网掩码、网关等,然后再对输入输出模块以及SDI-12接口进行配置,最后,作为主站的RTU和作为从站的RTU将分别执行主站服务程序和从站服务程序,主站服务程序如图5所示,从站服务程序如图6所示。

图5 主站服务程序Fig.5 Service program of the main station

图6 从站服务程序Fig.6 Service program of the slave station

主站RTU通过RS485总线或者ZigBee模块与各从站RTU连接,主要执行轮询各从站,接收各从站数据并存储在指定的存储设备中。同时,通过Modbus-TCP协议,创建以太网服务器任务,与上位机(计算机)进行数据交换[6]。

Zigbee模块通过与RTU的RS-232接口相连接,组成一个传感器终端节点,可与路由节点、协调器节点组建一个基于ZigBee的无线传感器网络。

从站RTU主要执行一些现场的参数遥测任务,包括输入输出模块任务、SDI-12数据采集任务、读取保持寄存器任务等。

系统上电后,若RTU工作在主站状态,将获取各从站的配置信息,并根据实际情况配置各从站,配置成功后,主站开始对各从站进行扫描,并处理从站发出的报文;每扫描完一个从站,主站便存储从站轮询到的信息;若上位机有请求命令,则主站RTU将会根据Modbus/TCP协议将数据打包上传。若RTU工作在从站状态,则采集I/O总线接口以及SDI-12接口电路传输来的数据,并等待主站RTU的轮询;当收到轮询信号后,将按照Modbus/RTU协议将数据上传。

任务调度由μC/OS-III操作系统来执行,μC/OS-III是多任务操作系统,对于不同的通信任务、输入/输出任务、键盘显示任务,系统通过优先级来进行任务的中断与切换,对于相同优先级的任务,系统通过时间片轮转算法来调度,及为每个任务分配固定的时间片做为允许运行时间,当任务时间片运行结束时,cpu将被剥夺并分配给另一个任务。

3 结束语

本文主要介绍了一款基于μC/OS-III的模块化RTU的设计思路。其中对于SDI-12接口电路模块的原理以及I/O总线设计进行了较为详细的介绍。另外,本文还介绍了μC/OSIII这款新型的操作系统以及它的移植方法。本设计中,RTU主要采用了Modbus通信协议。同时,结合操作系统与通信协议,引出了本文软件的设计思路。该RTU可广泛应用于水文、土壤、环境、电力、计量站等有多参数遥测的各行业。当然,由于个人的时间和精力有限,本设计还有不足之处,在功能模块的扩展方面,还有待更深入的研究。

[1]彭道刚,张浩,李辉,等.基于Modbus协议的ARM嵌入式监测平台设计与实现[J].电力自动化设备,2009,29(1):115-119. PENG Dao-gang,ZHANG Hao,LI Hui,et al.Design and implementation of ARM embedded monitoring platform based on Modbus protocol[J].Electric Power Automation Equipment,2009,29(1):115-119.

[2]丁力,宋志平,徐萌萌,等.基于STM32的嵌入式测控系统设计[J].中南大学学报,2013(44):260-265. DING Li,SONG Zhi-ping,XU Meng-meng,et al.Design of embedded measurement and control system based on STM32 [J].Journal of Central South University,2013(44):260-265.

[3]摆玉龙,董存辉,单吉明.基于SDI-12总线的生态水文数据采集系统设计与实现[J].遥感技术与应用,2013,28(3): 453-458. BAI Yu-long,DONG Cun-hui,SHAN Ji-ming.Design and implementation of eco-hydrological data acquisition system based on SDl-12 Bus[J].Remote Sensing Technology and Application,2013,28(3):453-458.

[4]Jean J.Labrosse.μC/OS-III The Real-tim-Kernel User’s Manual[M].USA:CMP Book,2010.

[5]李永强,单鸣雷,朱昌平.基于Modbus协议的多功能数据采集器设计[J].计算机测量与控制,2014,22(3):839-841. LI Yong-qiang,SHAN Ming-lei,ZHU Chang-ping.Design of modbus protocol一 based multifunction data acquisition device[J].Computer Measurement and Control,2014,22(3): 839-841.

[6]刘沛津,谷立臣.基于Modbus/TCP的火电厂实时数据集成及网络通信控制器研制[J].电力自动化设备,2009,29(8):128-131. LIU Pei-jin,GU Li-chen.Controller for real-time data collection and network communication based on modbus/TCP in thermal power plant[J].Electric Power Automation Equipment,2009,29(8):128-131.

Design of multi parameter RTU based on μC/OS-III

SUN Yuan,XU Qun
(College of Energy and Electrical,Hohai University,Nanjing 210000,China)

This paper proposes a design idea of RTU which is multi-function,modular and based on μ C/OS-III operating system.The hardware adopts STM32 processor with Cortex-M3 core.It mainly has digital input and output module,analog input module,SDI-12 interface module,RS232 communication module,RS485 communication module and Ethernet module. Communication protocol using Modbus-RTU and Modbus-TCP protocol.Compared with ordinary RTU,it has the advantages of modular,multifunctional and can be used with the SDI-12 interface standards.It alos has much advantages in the lower power consumption,powerful computing ability,storage ability,multi task,real-time,etc.

module;RTU;C/OS-III;SDI-12;Modbus

TN98

A

1674-6236(2015)07-0155-04

2014-07-02 稿件编号:201407015

孙 远(1989—),男,江苏淮安人,硕士研究生。研究方向:嵌入式理论与应用。

猜你喜欢
输出模块主站以太网
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于MSP430的输入输出模块设计与实现
微信控制6路输出开关
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用
万兆以太网在连徐高速公路通信系统改造中的应用
基于改进经济压差算法的主站AVC的研究
关口电能计量故障监测报警装置及主站研究