EDN China > 设计实例 > 通信 > 网络传输与交换 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

GPRS无线通讯在无功补偿控制系统中的应用

来源:电子产品世界/西北工业大学 黄志军 谢利理?? 2005年10月13日 ?? 收藏0

?????? F448带有液晶驱动模块,通过外接一个液晶显示器和键盘,用户就可以在现场手动进行参数设置,并查看电网实时数据、电容的投切状态和各种故障报警信息。外接flash型数据存储器AT45DB041,存储容量为528KB,主要作为收发数据的暂存器。

通讯管理模块结构图

?????? 图2 通讯管理模块结构图

?????? TCP/IP协议的实现

?????? 在本系统中,需要利用TCP/IP协议来完成GPRS业务数据的装帧和拆帧,在这里我们采用在MSP430F448中软件嵌入TCP/IP协议栈uIP的方法来实现TCP/IP协议。使用TCP/IP协议进行数据通信分为三个阶段:

?????? 1) 建立连接阶段:使用OPEN命令帧控

制MC35主动向服务器发起连接请求,服务器在本地侦听一个端口,收到终端的请求后进行回应并最终握手建链成功,进入数据状态。

?????? 2) 当连接建立后,就可以在这条连接上进行数据收发。使用SEND命令帧控制MC35发送数据,发送时要指定连接号(由本地端口、目的IP地址和端口唯一确定)。

?????? 3) 数据发送完成后不再需要这条连接时,就可以把连接挂断。

?????? 在这里我们采用在MSP430F448中软件嵌入TCP/IP协议栈uIP的方法来实现TCP/IP协议。uIP是一种免费公开源代码的小型TCP/IP协议栈,专门为8位和16位MCU编写。uIP完全是用C语言编写,它采用了一个事件驱动接口,通过调用应用程序响应事件。uIP的源代码只有几KB,RAM占用仅几百字节,但uIP实现了TCP/IP协议集的四个基本协议:ARP地址解析协议,IP网际互联协议,ICMP网络控制报文协议和TCP传输控制协议。用户可以方便的调用接口函数来实现TCP/IP协议。

?????? uIP与系统底层的接口包括与设备驱动的接口和系统定时器的接口两类。在程序的主循环中,底层接口程序循环检查是否收到数据包和周期定时器是否超时溢出。TCP/IP协议程序中主控环程序流程如图3所示。

TCP

?????? 图3 TCP/IP协议中程序主流程

?????? uIP通过函数uip_input()和全局变量uip_buf、uip_len来实现与设备驱动的接口,收发IP数据包时触发应用程序接口事件。应用程序事件1主要是对数据包的处理:当数据来自MCU时则进行TCP/IP打包然后送GPRS模块发送到Internet网络;当收到来自GPRS模块的数据时则进行相应的解包处理,抽出数据,按发送前的顺序还原,并加以校验,若发现错误,TCP/IP栈会要求重发,然后将数据通过串口送控制器。uIP协议栈提供了一系列接口函数供用户程序调用,这使得我们不需要了解数据的具体处理过程,只需要调用相应的接口函数把数据送上层应用程序即可。

?????? 系统定时器使用msp430f448的16位定时器Timer_B作为时钟基准,定时周期设为1s。定时器主要用于处理数据传输错误重发、应答延时、往返时间(RTT)估计等。应用程序事件2主要是对定时器超时事件的处理:当TCP连接建立时,uIP周期性调用函数uip_periodic()来驱动TCP/IP协议定时器和重发事件。当数据发送后,转发定时器进行减计数,如果在一个定时器周期内没收到接收端的确认(ACK)消息,发送端就认为这个数据丢失置标志位,应用程序检查标志则产生上次发送的数据并重发。

?????? 为保证无功补偿控制的实时性要求,对于对方主动发起TCP连接、对方发来数据、对方主动释放TCP连接、GPRS断线和重连成功等事件都可以通过中断通知给F448单片机,以便单片机进行相应处理和操作。对于这些事件必须及时进行处理,以便及时反映通信情况,并且避免相关的事件缓冲区和数据缓冲区溢出。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

GPRS? 无功补偿? 无线通讯?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈