基于ARM的电能数据采集终端的设计
2020-11-26张理放毛永梅
张 帆,张理放,毛永梅
(内蒙古电力科学研究院,内蒙古 呼和浩特 010010)
0 引 言
当前社会对电力的需求不断增长,对供电质量的要求越来越高。这就需要供电公司提供高质量的电力服务,不断进行技术革新,发展智能电网技术,在电力领域实现自动化、智能化配电管理和用电管理。电能数据采集终端介于主站与智能电表之间,搜集各个数据采集点和用户的用电数据,同时搜集、传输、管理以及转发电能表数据,通过海量数据来保障电力企业管理工作的顺利进行。基于ARM的电能数据采集终端,能耗低,电池使用时间长,环境适应能力强,可以在-25~85 ℃范围内工作。该终端使用的系统是自由的、开源的以及稳定的LINUX系统。
1 系统构成
LINUX系统并非实时操作系统,但是通过性能改进可以满足数据采集终端的实时需求。在CPU中不断改进调度相应的时间和系统中断性能,引入多线程算法,保证重要事件发生时可以抢占中心资源进行高效运算,进而保证数据的实时性与同步性,更好地满足电能数据采集方面的实时需求。
如图1所示,基于ARM的电能数据采集终端系统由采集模块、输入与现实模块以及通信模块组成。应用程序存放在NOR Flash中,电能数据终端采集的数据则存放在NAND Flash中,可以充分满足电能终端系统运行需要。对LINUX系统外围硬件进行编译,操作系统可移植入CPU,构建适合电力企业的开发环境。ARM终端同时需要应对多个事件。电力传输中的事件要求数据可以实时传输,保证中心给予快速解决。多个事件需要并行执行,因此终端引入了多线程设计,以保证数据采集效率。
图1 电能数据采集终端结构
该终端通过4类接口与总机设备进行数据通信。首先,远程接口。主机与各个ARM数据采集终端上的采集APP进行数据交互,属于远程连接。该接口包括载波接口、GPRS接口以及TCP/IP接口等。其次,本地接口。本地软件要和ARM数据采集终端的各类软件进行数据交互,在通信过程中主要以字节流完成信息传递。此类接口包括RS接口和红外接口等。再次,为了设备的使用性能良好,要求其具备人机交互接口。
该接口应该界面应操作简单、明确以及快速,以方便工作人员使用。此类接口属于数据采集端软件,可以完成搜索功能,基于特定数据模型进行人机交互,包括键盘、显示器以及LCD显示屏等。最后,其他接口。数据采集终端不仅要和主机相连,以供工作人员操作,也要与其他采集模块相连,如交直流模拟和脉冲采集等。终端采集软件APP利用读写函数调用与其他模块之间的接口,如图1所示的A/D转换接口、维护接口以及USB升级接口。
2 软件实现
2.1 终端软件功能
2.1.1 数据采集功能
终端软件的最基本功能是采集数据。数据是后续进行一系列分析应用工作的基础。数据采集功能是对智能终端设备和电能脉冲信息进行采集,要求实时性强,采集准确度高。
2.1.2 数据管理功能
数据采集功能获取的数据,要和总机系统中存储的历史电能数据比较,通过对比完成数据准确度检查,判断数据监控电能系统运行是否正常。对数据进行远程传输,所有数据均要进行妥善存储,以备后续使用。LINUX系统运用编程语言为存储的数据建立数据库,因LINUX系统的开放性强,只要在系统允许的范围内工作,资源占用率较低,使得系统具备较高的查询速度。
2.1.3 数据控制功能
通过智能控制终端,用户的用电费率和阶梯费率等信息都可以进行远程监控计算,且对用户的用电量和用电行为有监督作用,以保证设备稳定运行。
2.1.4 综合管理功能
整个电能数据采集系统通过数据对用电企业、设备运维以及用户用电情况等各方面进行控制。因此,在企业成本控制、服务质量、用户电量统计、合规用电以及电气设备运行维护等方面,均可以通过数据进行分析。如果发现异常问题,则可以及时作出反馈。
2.1.5 操作和维护功能
该功能是为了维护数据采集系统的基本信息,如进出权限和系统时间等。系统基础信息完成设定后,该功能可以对这些数据进行存储。工作人员根据一定权限可以进行查询设置,管理设备、报表以及数据等,记录运行维护情况。
2.1.6 系统接口功能
数据采集系统要和营销系统、控制系统以及装配系统等进行连接,保证采集的数据可以在电力全系统内进行联通交互。其他模块也可以利用采集的数据开展工作,从而为电力系统的全业务提供数据支持[1]。
2.1.7 其他功能
除了以上功能,电能数据采集系统还要能够与其他应用程序互通互联,保证数据可以在程序之间进行传递和共享。通过功能设计,以保证终端数据采集的及时、准确以及高效,保证采集系统可靠,真实还原现场情况,然后将数据送达到控制中心完成数据处理。通过程序可以将控制中心的数据传递到各终端软件,以实现各种功能。整个系统的兼容性较好,可以引入IC卡和USB接口设备等进行数据转载。
2.2 终端软件设计
根据终端软件要实现的功能,完成了远程通信模块和主要任务控制模块的软件设计。
2.2.1 远程通信模块
终端数据采集系统完成数据采集后,要将数据以报文形式传送到控制中心。在报文上传下发过程中,远程通信模块不仅要保证支持报文数据传递,还要根据事件的重要性等级进行处理,即优先处理高等级事件。传递报文要求实时性强,送达准确。
2.2.2 主要任务控制模块
主要任务控制模块的工作流程,如图2所示。该模块属于多任务采集模块,在运行时刻使线程互相独立。该模块工作时,根据数据采集系统获得的数据将所有系统相关参数完成初始化,包括内存、采集周期以及事件队列等。根据事件优先级来排列数据项。在主任务进行过程中,要判断系统的各项参数。如果达到数据采集要求,则开始进行采集任务和数据传递工作。主任务进行过程中,数据采集软件要对控制中心下发的命令做出反馈和监控,如抄表命令。执行抄表命令是,当前任务会被中止,并在抄表命令完成后再开启中止的任务。整个任务周期完成后,要监测系统内所有参数,查看参数是否被更改过。若被更改,则进行初始化,完成初始化后进入下一任务周期[2]。
2.3 本地数据处理
基于ARM的数据采集终端系统经过多年的研究和实践,已经是较为成熟的系统,在硬件及软件兼容性方面较好,开放性强。该系统比较擅长进行数据的实时处理和传输,妥善处理多线程事件。电力系统中的电能数据可以通过本地数据处理系统进行妥善处理。本地数据处理系统一般由基本数据处理和总体数据处理两个模块组成,且两个模块各有进程。
2.3.1 基本数据处理模块
基本数据处理模块负责对数据采集点出现的异常数据进行分析,生成对应事件。模块在运行完成后,将信息队列、共享内存、采集点参数和系统参数均进行初始化再进入主任务。进入主任务后对数据进行采集和分析,分析与主任务是否符合。符合条件,则利用通信模块上传数据,采集终端的数据要和系统内的历史数据进行对比监测,如果数据有改动,则将历史数据上传到通信模块,由远程通信模块上传至主站。整个周期所有数据处理完成后,监测数据采集点的各个参数,监测事件发生的条件和事件生命周期等是否改变。如果改变,则对系统进行初始化后才可以开启下一个事件处理线程[3]。工作流程如图3所示。
2.3.2 总体数据处理模块
总体数据处理模块负责对总加组中的数据进行系统统计,待完成总加后,由存储模块接收相关的数据。存储模块工作任务完成后,要把各个系统参数进行初始化,包括事件队列、内存以及采集点等,然后进入下一个事件线程。总加组数据的计算有固定的公式,根据公式完成计算,完成采集数据与历史数据的对比检查工作,确定是否满足差动条件。如果满足差动条件,诱发差动事件,远程通信模块对这些数据进行存储和传输。控制中心在远程数据模块接收到信息后,完成采集数据与历史数据对比生成曲线。该曲线存储在数据存储模块,用以后续的数据分析。完成这一周期的数据处理后,对各个采集点的参数、工作周期、总加参数和差动事件进行监测,以确定这些数据都没有变化。若有变化,则重新启动并初始化,之后则进入下一周期的处理任务[4]。总体数据处理流程如图4所示。
除了上述功能以外,基于ARM数据采集终端的应用软件还包含其他功能,如采集状态量功能、对交流模拟量功能、直流模拟量进行采集功能、对脉冲量进行采集的功能、局部状态指示功能以及终端维护功能等[5]。
数据采集功能在整个系统中处于基础地位。当前,企业自动化和智能化水平不断提高,设备运行、维护的控制和对用户行为的检测都采用智能化系统,促使各类智能仪表、智能终端以及智能传感器得到了大量应用。所有控制功能均基于数据采集,而数据采集与全系统功能无缝结合,使得数据应用更加广泛,提升了数据采集的效率与经济性。
图2 主采集任务控制模块工作流程图
图3 基本数据处理模块工作流程
图4 总和数据处理模块工作流程
3 多线程技术
3.1 相关函数
在LINUX系统下开展多线程任务编程工作,需要将pthread.h和libpthread.a相连。
(1)pthread_create函数,用以创建多任务线程中的某个任务线程。函数原型为:
pthread_join函数,用以暂停当前线程,直至事件要求的另一个线程完成工作后,再将此线程开启。函数原型为:
这个函数是进行线程阻拦工作的。当调用该函数时,要将当前线程暂停,开始另一个事件要求的线程。待优先等级较高的线程完成后,中断的线程再重新开启。系统会将资源给到优先等级较高的线程,待返回到中断线程后,系统再将资源调回到该线程。
(3)pthread_exit函数,终止当前线程函数,原型为:
该函数作为线程返回码,当pthread_join函数的参数thread_return的值不为空时,则发生线程返回,函数终止。
3.2 多线程程序要求
对于不同的进程,要让各个进程存在于不同的空间并拥有自己的数据空间,通过通信方式传递数据是比较费时非自愿的方式。多线程的好处在于统一进程下的所有线程之间可以存在于同一个数据空间,共享数据。一个线程的数据,另一个线程在运行时也可以使用,更加省时省力、方便快捷、节省资源。线程运行中要对变量进行修改,但是部分变量不能被多个线程修改,因此要增加static函数确保线程可以修改部分变量。
基于ARM的电能数据采集终端需要处理的数据量较大,因实时性和准确性的需要,引入多线程事件管理技术,运用两个以上函数,充分实现事件线程之间的转换,合理分配系统资源,根据事件优先级进行处理,节省系统资源的同时,保证数据传输过程顺利进行。
4 结 论
基于ARM的电能数据采集终端可对实时采集电力传输网络的各类数据和用电负荷等信息加以准确检测,系统整体安全可靠、拓展性强、经济性较好、节省资源以及经济价值较高,可满足当前电力系统的服务要求。未来在电力领域的智能化发展中,ARM芯片必将发挥更大的作用,为电力事业发展提供强力技术支持,提高用电服务水平。