嵌入式Linux平台下电力载波路由器的软件设计
点击数:7344 次 录入时间:03-04 11:54:41 整理:http://www.55dianzi.com 载波通信
Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a[4]。在程序中,本文给路由表的建立分配了id_route线程,为串口2和网络UDP通信分别分配了id_com和id_net线程。这三个线程是相互独立的,其中串口2和网络UDP线程以阻塞的方式来等待采集器发出的抄表查询指令。线程的初始化工作均由pthread_creat函数来开启,id_route线程开启后,串口1开始对外发送直抄、一级中继抄表、二级中继抄表的数据命令帧并根据接收到的节点响应数据帧来建立台区下相应节点的路由信息。id_route线程结束后会激活id_reroute线程,这个线程主要是为下次路由表更新进行定时,定时时间设为20 min,即每隔20 min,更新一次路由表。id_route线程的主要功能就是不停地查询20 min定时有没有到,如果定时到,则关闭20 min定时器,并开启id_route线程。程序多线程化后,就要考虑线程间的同步问题,如线程id_route正从文本文件中读取当中记录的各个节点的MAC地址、id_net线程正试图向文本文件中添加某一节点的MAC地址。如果两个线程不加以同步,必会导致节点MAC地址的混乱。本设计采用一种称为“互斥锁”的同步方式,它可以保证任一时刻只有一个线程能访问它,利用这一性质可以保护共享数据。建立路由表的线程流程图如图9所示。
本文提出了一种路由路径寻优算法并在嵌入式Linux平台下实现了这种路由算法,该算法可以保证节点搜索的不重复性、路由建立的快速性和数据抄收的正确性。利用Linux对多线程编程的支持及强大的网络通信功能,实现了路由维护与网络、串口通信的并发运行,很好地满足了自动化抄表系统中对网络通信和抄表实时性的要求。
参考文献
[1] DL/T 645-2007.多功能电能表通信规约[S].2008.
[2] 青岛东软电脑技术有限公司.PLCI36G-III-E电力载波芯片通信协议指南, 2010.
[3] 彭启伟,张浩.基于多叉树遍历的中压配电线载波自适应中继算法[M].电力系统通信, 2009(197):21-27.
[4] 童永清.Linux C编程实战[J].北京:人民邮电出版社,2008.
上一页 [1] [2]
本文关键字:嵌入式 路由器 Linux 软件设计 载波通信,通信技术 - 载波通信