您现在的位置:首页 >> 滚动 >> 正文
支持多串口同时抄表的智能仪表程序设计
发表时间:2014年5月13日 18:16 来源:中电网 责任编辑:编 辑:麒麟

引言

随着计算机技术、通信技术、电子技术的发展,推动了仪表行业快速发展;同时,随着人力成本的增加,人工抄表将会逐渐被淘汰;智能仪表将成为仪表行业发展的方向。可以预见,在未来20年仪表行业将经历一次革命,我国将由目前的人工抄表方式逐渐转变为远程抄表,各级水、气和电力管理部门可以根据不同的权限对同一块仪表进行远程抄读。为了支持多用户同时抄表,本文设计了一种支持多串口同时抄读的智能仪表程序,对程序设计流程做了详细的阐述。

1 支持多串口智能仪表软件构架

支持多串口智能仪表软件构架如图1所示,支持多串口智能仪表的软件构架分为4层:驱动层、基于任务调度的操作系统、通信协议层和应用层。驱动层主要提供智能仪表的各种硬件驱动。其中,串口驱动程序实现的功能包括:串口的配置、提供通信协议在串口发送列表和串口接收列表中注册的接口函数、为通信协议层提供数据服务。基于任务调度的操作系统的设计可以提高程序的通用性和扩展性;通信协议层和应用层根据需要在操作系统中注册任务,如果以后需要增加一个功能,则可以直接增加一个任务而不需要对以前的代码进行改动。

通信协议层主要对从物理层接收的数据帧和命令帧,按照通信协议的帧格式进行解析和对从应用层接收到的数据和命令按照通信协议的帧格式进行组帧。应用层主要实现智能电表和抄表客户端应用对象之间的通信。支持多协议的智能仪表软件构架如图1所示。

2 驱动层串口程序设计

通信协议层系统初始化时,通信协议需要在每个串口的发送列表和接收列表中注册。其中,串口发送协议列表和串口接收协议列表如下所示:

3 协议层和应用层程序设计

在通信协议层定义一个类型为PROTOCOL的数组ProtocolPortList,ProtocolPortList数组的主要作用是:存放对应串口接收的数据和要发送的数据、表征该串口目前的状态。代码如下:

PROTOCOL ProtocolPortList[SERIAL_PORT_COUNT];

typedef struct{

UINT8 RxBuff[RECV_FRAME_BUFF_LEN];

UINT8 TxBuff[SEND_FRAME_BUFF_LEN];

UINT8 ReceiveSuccessFlag;

[1]  [2]  [3]  
关于我们 | 联系我们 | 友情链接
新科技网络【京ICP备14006744号】
Copyright © 2014 Hnetn.com, All Right Reserved
版权所有 新科技网络
本站郑重声明:本站所载文章、数据仅供参考,使用前请核实,风险自负。