远程抄表系统中集中器软件的模块化设计与实现
定时抄表模块使用单独线程实现,在模块中判断当前时间是否符合抄表设定的时间,如果是则将所有要抄读信息发送到下行协议模块封装模块进行封装抄表命令,然后下发出去。在向下通信的过程中使用了两个队列来实现通信和处理的异步性,在对多个表抄读时可提高整体系统的效率。
3 通信软件的实现
该软件系统模拟在Linux操作系统中用C++语言实现,每个模块封装成单独的类,如下所示:
该类对应主控模块,其中成员函数run()中实现主控模块的功能,在系统中构造一个全局的Dispatcher对象以实现对主控模块的访问。
该类对应上行协议的帧,其中提供成员方法Encode()和Decode()来实现对上行协议的封装和解析。在程序中只需创建一个帧的对象就可以通过这些函数实现封装和解析的功能。下行协议采用同样的方法处理:
该类对应集中器操作模块,其中方法Do(int Op_Type)实现具体操作功能,参数Op_Type表示要做的具体操作,在函数内部可以使用switch-case语句判断操作的类型,然后到各个分支执行。
其余模块采用相同的方法进行封装,需要注意的是抄表模块和下行通信模块采用单独线程处理,以实现抄表任务的定时启动和下行数据传输的异步性。下行队列采取封装STL中queue模板来实现,并提供入队,出对,获取队列大小等接口。
4 结语
集中器软件设计的主要任务是实现其的各部分功能。主要功能包括:集中器控制、实时用电数据采集、定时数据采集及存储、数据报文的转发、运行状态记录及指示、通信管理等。采用了模块化设计的通信软件具有稳定性好,效率高等特点,能够进一步加快电力行业自动化的建设。
评论