基于GPRS的自动抄表系统设计
发布时间:2008/5/27 0:00:00 访问次数:412
摘要:本文介绍了一种基于gprs自动抄表系统的硬件和软件实现方法。该设计采用了mc/os-ii操作系统和uip协议的移植来实现gprs通信,用sql数据库实现上位机的抄表管理软件,从而达到自动抄表的目的。
关键词:gprs;mc/os-ii;操作系统;uip协议;sql
引言
水表、电表和气表的抄录是城市生活的一个大问题。传统上采用的人工上门抄表方法不仅效率低,而且经常出现漏抄、误抄等现象。随着信息技术和网络的不断发展,出现了自动抄表系统。
现代智能化系统一般采用两种:电力载波集抄和总线通信方式。由于我国的电网在传输数据过程中,经常会受无线电信号、电磁信号、脉冲信号的干扰,导致传输数据错码、丢码的情况。总线通信方式集抄系统较为复杂,而且要另外铺设通讯电缆,特别对于旧城区改造项目,就存在更大问题。
但是,如果采用三表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个
摘要:本文介绍了一种基于gprs自动抄表系统的硬件和软件实现方法。该设计采用了mc/os-ii操作系统和uip协议的移植来实现gprs通信,用sql数据库实现上位机的抄表管理软件,从而达到自动抄表的目的。
关键词:gprs;mc/os-ii;操作系统;uip协议;sql
引言
水表、电表和气表的抄录是城市生活的一个大问题。传统上采用的人工上门抄表方法不仅效率低,而且经常出现漏抄、误抄等现象。随着信息技术和网络的不断发展,出现了自动抄表系统。
现代智能化系统一般采用两种:电力载波集抄和总线通信方式。由于我国的电网在传输数据过程中,经常会受无线电信号、电磁信号、脉冲信号的干扰,导致传输数据错码、丢码的情况。总线通信方式集抄系统较为复杂,而且要另外铺设通讯电缆,特别对于旧城区改造项目,就存在更大问题。
但是,如果采用三表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个