基于GPRS的自动抄表系统设计
时间:07-28
来源:互联网
点击:
水表、电表和气表的抄录是城市生活的一个大问题。传统上采用的人工上门抄表方法不仅效率低,而且经常出现漏抄、误抄等现象。随着信息技术和网络的不断发展,出现了自动抄表系统。
现代智能化系统一般采用两种:电力载波集抄和总线通信方式。由于我国的电网在传输数据过程中,经常会受无线电信号、电磁信号、脉冲信号的干扰,导致传输数据错码、丢码的情况。总线通信方式集抄系统较为复杂,而且要另外铺设通讯电缆,特别对于旧城区改造项目,就存在更大问题。
但是,如果采用三表GPRS无线集抄系统,以上问题就迎刃而解。本文就介绍基于GPRS的一种设计方案。
自动抄表系统的一般结构
抄表系统中,仪表数据与控制信号传输的路径称为通信通道,它分为上行通道和下行通道。上行通道是传输控制器与管理中心计算机之间的通信线路,可以采用电话、无线、专线等各种通信介质。
下行通道是数据采集器与传输控制器之间的通信线路,主要有LonWork总线、CAN总线、RS-485总线等方式。自动抄表系统的构成如图1所示,主要包括计量表、数据采集器、传输控制器(集中器)、管理中心计算机等。
图1 一般自动抄表系统的结构
其中计量表、采集器、集中器称为自动抄表系统的下位机,管理中心计算机则称为上位机。上位机可以对下位机进行命令发送、参数设定等控制。
硬件设计
系统总体框图
自动抄表系统的硬件主要分为采集器和集中器两部分。采集器主要是用单片机把计量表中的数据采集过来,并存放在内存里,通过RS-485总线传送给集中器;集中器是整个系统中最重要的,也是最复杂的环节,它的硬件设计框图如图2所示。
图2 集中器设计框图
集中器中的单片机选用了C8051F120,其时钟可达到100M,有8448B的RAM和128K的Flash,两个URAT中,一个用于GPRS通信,另一个用于与采集器的通信。在很多场合,该单片机几乎不用扩展外围芯片就能够满足系统要求。C8051F MCU具有与8051兼容的高速CIP-51内核,但与标准的8051结构相比,指令执行速度有很大提高,运行mC/OS-II操作系统是没有问题的。FLASH的扩展选用SPI总线的AT45D041,它有512KB的FLASH,使用方便,且性价比也比较高; LCD采用中国台湾矽创电子公司的中文图形控制芯片ST7920,内含中英文字库,使用起来非常方便。
GPRS模块
GPRS模块采用了西门子公司的MC35i,此模块主要由GSM处理器、GSM射频模块、供电模块、闪存、ZIF连接器、天线接口等六部分组成。它通过ZIF连接器上的串口与单片机实现电路接口,通过串口读取或发送MC35i模块中的数据和AT指令。
自动抄表系统的软件设计下位机的软件设计
下位机软件设计的重点是GPRS通信的实现。由于GPRS是基于IP协议的,所以主控制器在与GPRS模块通讯的时候要发送符合IP协议的数据包。如果要自己编写TCP/IP协议,工作量会比较大,一个简便的方法是移植操作系统。有些操作系统中包含TCP/IP协议(如Linux),但相对于单片机来说,显得力不从心。有些操作系统不包括此协议(如mC/OS-II),就必须同时移植与其兼容的TCP/IP协议(如uiP协议),本系统采用后一种方法。
mC/OS-II介绍及移植
mC/OS-II是为嵌入式应用编写的通用软件,具有源码公开、可移植、可裁剪、支持多任务和内核服务运行时间可确定等特点。所以,mC/OS-II支持从8位到32位的CPU,经过裁剪后代码最小小于2KB,所需的最小数据RAM空间为4KB。
mC/OS-II的移植只需要修改与处理器相关的代码就可以了。具体内容如下:
(1)os_cpu.h中需要设置1个常量来标识堆栈增长方向,
即:#define OS_STK_GROWTH 0 //8051 堆栈从下向上增长;
(2)os_cpu.h中需要声明3个用于开关中断和任务切换的宏,
即:#define OS_ENTER_CRITICAL() EA=0 //关中断;
#define OS_EXIT_CRITICAL() EA=1 //开中断;
#define OS_TASK_SW() OSCtxSw() //任务间的切换;
(3)os_cpu.h中需要声明10个数据类型;
即:typedef unsigned char BOOLEAN 等;
(4)os_cpu_a.asm需要改写4个汇编语言的函数,集中了所有与处理器相关的汇编语言代码模块;
(5)os_cpu_c.c需要用c语言编写6个简单函数, 即1个初始化任务堆栈和5个任务创建钩挂函数,其中5个任务创建钩挂函数可根据实际情况加入;
(6)修改主头文件include.h,将上面的3个文件和其它自己的头文件加入。
完成上述工作后,mC/OS-II就可以运行在单片机上了。
uip的移植
uIP的移植设计重点放在IP、ICMP和TCP协议的实现上,要将这三个模块合为一个有机的整体,而将UDP和ARP协议实现作为可选模块。uIP0.9的体系结构如图3所示。
图3 uIP协议栰接口
uIP0.9处于网络通信的中间层,其上层协议在这里被称之为应用程序,而下层硬件或固件被称之为网络设备驱动。uIP可以看作是一个代码库为系统提供确定的函数。图3展示了uIP系统底层和应用程序之间的关系。
在基于8051的mC/OS-II中,移植uIP不需要对现有的TCP/IP源代码做任何修改,但是必须为网络设备如网卡芯片、串口等写一个驱动程序。同时,现有系统的集成部分也要进行相应的处理,例如当有数据到达或周期性的定时器计数满等情况下,主控制系统应该调用uIP函数。移植的具体步骤如下:
(1)在目录uip-0.9/下创建一个自己的目录,例如uip0.9/C8051F/。
(2)把uip_arch.c文件从目录uip-0.9/unix/中复制到目录uip-0.9/ C8051F中。
(3)把uipopt.h文件目录从uip-0.9/unix中复制到目录uip-0.9/ C8051F中,并对其修改,以满足系统需要。
(4)编写串口驱动程序和主控函数。
(5)编译源代码。
现代智能化系统一般采用两种:电力载波集抄和总线通信方式。由于我国的电网在传输数据过程中,经常会受无线电信号、电磁信号、脉冲信号的干扰,导致传输数据错码、丢码的情况。总线通信方式集抄系统较为复杂,而且要另外铺设通讯电缆,特别对于旧城区改造项目,就存在更大问题。
但是,如果采用三表GPRS无线集抄系统,以上问题就迎刃而解。本文就介绍基于GPRS的一种设计方案。
自动抄表系统的一般结构
抄表系统中,仪表数据与控制信号传输的路径称为通信通道,它分为上行通道和下行通道。上行通道是传输控制器与管理中心计算机之间的通信线路,可以采用电话、无线、专线等各种通信介质。
下行通道是数据采集器与传输控制器之间的通信线路,主要有LonWork总线、CAN总线、RS-485总线等方式。自动抄表系统的构成如图1所示,主要包括计量表、数据采集器、传输控制器(集中器)、管理中心计算机等。
图1 一般自动抄表系统的结构
其中计量表、采集器、集中器称为自动抄表系统的下位机,管理中心计算机则称为上位机。上位机可以对下位机进行命令发送、参数设定等控制。
硬件设计
系统总体框图
自动抄表系统的硬件主要分为采集器和集中器两部分。采集器主要是用单片机把计量表中的数据采集过来,并存放在内存里,通过RS-485总线传送给集中器;集中器是整个系统中最重要的,也是最复杂的环节,它的硬件设计框图如图2所示。
图2 集中器设计框图
集中器中的单片机选用了C8051F120,其时钟可达到100M,有8448B的RAM和128K的Flash,两个URAT中,一个用于GPRS通信,另一个用于与采集器的通信。在很多场合,该单片机几乎不用扩展外围芯片就能够满足系统要求。C8051F MCU具有与8051兼容的高速CIP-51内核,但与标准的8051结构相比,指令执行速度有很大提高,运行mC/OS-II操作系统是没有问题的。FLASH的扩展选用SPI总线的AT45D041,它有512KB的FLASH,使用方便,且性价比也比较高; LCD采用中国台湾矽创电子公司的中文图形控制芯片ST7920,内含中英文字库,使用起来非常方便。
GPRS模块
GPRS模块采用了西门子公司的MC35i,此模块主要由GSM处理器、GSM射频模块、供电模块、闪存、ZIF连接器、天线接口等六部分组成。它通过ZIF连接器上的串口与单片机实现电路接口,通过串口读取或发送MC35i模块中的数据和AT指令。
自动抄表系统的软件设计下位机的软件设计
下位机软件设计的重点是GPRS通信的实现。由于GPRS是基于IP协议的,所以主控制器在与GPRS模块通讯的时候要发送符合IP协议的数据包。如果要自己编写TCP/IP协议,工作量会比较大,一个简便的方法是移植操作系统。有些操作系统中包含TCP/IP协议(如Linux),但相对于单片机来说,显得力不从心。有些操作系统不包括此协议(如mC/OS-II),就必须同时移植与其兼容的TCP/IP协议(如uiP协议),本系统采用后一种方法。
mC/OS-II介绍及移植
mC/OS-II是为嵌入式应用编写的通用软件,具有源码公开、可移植、可裁剪、支持多任务和内核服务运行时间可确定等特点。所以,mC/OS-II支持从8位到32位的CPU,经过裁剪后代码最小小于2KB,所需的最小数据RAM空间为4KB。
mC/OS-II的移植只需要修改与处理器相关的代码就可以了。具体内容如下:
(1)os_cpu.h中需要设置1个常量来标识堆栈增长方向,
即:#define OS_STK_GROWTH 0 //8051 堆栈从下向上增长;
(2)os_cpu.h中需要声明3个用于开关中断和任务切换的宏,
即:#define OS_ENTER_CRITICAL() EA=0 //关中断;
#define OS_EXIT_CRITICAL() EA=1 //开中断;
#define OS_TASK_SW() OSCtxSw() //任务间的切换;
(3)os_cpu.h中需要声明10个数据类型;
即:typedef unsigned char BOOLEAN 等;
(4)os_cpu_a.asm需要改写4个汇编语言的函数,集中了所有与处理器相关的汇编语言代码模块;
(5)os_cpu_c.c需要用c语言编写6个简单函数, 即1个初始化任务堆栈和5个任务创建钩挂函数,其中5个任务创建钩挂函数可根据实际情况加入;
(6)修改主头文件include.h,将上面的3个文件和其它自己的头文件加入。
完成上述工作后,mC/OS-II就可以运行在单片机上了。
uip的移植
uIP的移植设计重点放在IP、ICMP和TCP协议的实现上,要将这三个模块合为一个有机的整体,而将UDP和ARP协议实现作为可选模块。uIP0.9的体系结构如图3所示。
图3 uIP协议栰接口
uIP0.9处于网络通信的中间层,其上层协议在这里被称之为应用程序,而下层硬件或固件被称之为网络设备驱动。uIP可以看作是一个代码库为系统提供确定的函数。图3展示了uIP系统底层和应用程序之间的关系。
在基于8051的mC/OS-II中,移植uIP不需要对现有的TCP/IP源代码做任何修改,但是必须为网络设备如网卡芯片、串口等写一个驱动程序。同时,现有系统的集成部分也要进行相应的处理,例如当有数据到达或周期性的定时器计数满等情况下,主控制系统应该调用uIP函数。移植的具体步骤如下:
(1)在目录uip-0.9/下创建一个自己的目录,例如uip0.9/C8051F/。
(2)把uip_arch.c文件从目录uip-0.9/unix/中复制到目录uip-0.9/ C8051F中。
(3)把uipopt.h文件目录从uip-0.9/unix中复制到目录uip-0.9/ C8051F中,并对其修改,以满足系统需要。
(4)编写串口驱动程序和主控函数。
(5)编译源代码。
总线 无线电 CAN总线 单片机 MCU LCD 电子 射频 连接器 电路 Linux 嵌入式 相关文章:
- 热插拔和缓冲I2C总线 (04-14)
- PCIe总线何时突破Unix服务器坚冰(02-03)
- TMS320VC5402 HPI接口与PCI总线接口设计(04-12)
- 基于Nios II的I2C总线接口的实现(04-09)
- 双口RAM CY7C026在高速数据采集系统中的应用(04-12)
- 计算机在新型多电机同步系统中的应用(07-08)