一种变压器内检机器人无线视频传输方法与流程

文档序号:20061882发布日期:2020-03-06 08:03阅读:777来源:国知局
一种变压器内检机器人无线视频传输方法与流程

本发明涉及一种视频传输方法,具体地说是一种变压器内检机器人无线视频传输方法。



背景技术:

在当今电力设备的运行和维护中,变压器不仅属于电力系统中最重要的和最昂贵的设备之一,而且也是导致电力系统出现事故较多的设备之一,它的可靠性直接关系到电网能否安全、高效、经济的运行。根据大型电力变压器的检修规程要求,每5年需要进行一次吊罩检修,采取吊罩拆箱的内检方法有着发现故障准确彻底的优点,但存在现场内检费用非常高且工期长等缺点。如果能够实现不进行吊罩拆箱也能获得变压器内部的有用信息,则是变压器检修的革命性变化。由于变压器内部环境复杂,容器内部具有很好的密闭性,传统的有线传输方式将难以实现,这就导致了变压器内检机器人在变压器内部采集得到的信息尤其是视频信息将难以传输到外界环境。

如何将变压器内部的内检机器人采集得到的视频信息传输到外界环境中,是一个亟需解决的关键问题。



技术实现要素:

本发明的目的就是提供一种变压器内检机器人无线视频传输方法,以解决变压器内检机器人在变压器内部采集得到的视频信息难以传输到外界环境的问题。

本发明是这样实现的:一种变压器内检机器人无线视频传输方法,包括以下步骤:

a.在变压器内设置内检机器人,并在内检机器人上设置下位机,在变压器外部设置上位机以及与上位机相连接的路由器,下位机包括核心控制器、图像采集模块、无线传输模块、电源模块、下位存储模块以及sdram模块,上位机包括控制模块、显示模块以及上位存储模块;

b.将mico系统移植到下位机的核心控制器中;

c.对mico系统进行初始化,并进入主程序循环;

d.调用子程序对sdram进行初始化;

e.调用子程序进行无线网络连接,使下位机的无线传输模块与路由器相连接,;

f.调用子程序为图像采集模块准备数据缓存的内存空间,在sdram上设置数据缓存区,并将该数据缓存区分为两个缓存区;

g.调用子程序对图像采集模块进行初始化,打开摄像头开始图像采集;

h.调用子程序创建tcp服务线程,并等待上位机控制模块通过路由器与下位机相连接;

i.上位机与下位机相连接,数据缓存区开启dam双缓存模式对来自图像采集模块的图像数据流进行缓存,并开始进行视频传输。

在每个子程序调用完毕后都对子程序返回是否错误进行判断,如果子程序返回错误,则通过串口输出状态信息,若子程序返回没有错误,则调用下一个子程序;在创建tcp服务线程子程序中,若返回正确,则通过串口输出tcp服务的ip地址和端口号,同时等待上位机连接。

步骤f中划分的两个缓存区分别为第一缓存区和第二缓存区;在步骤i中,开始视频传输后,首先使用第一缓存区存储数据,当第一缓存区填充满后,dma切换到第二缓存区,使用第二缓存区存储数据,此时,核心控制器的cpu读取第一缓存区中的数据,并通过无线网络将数据传输到上位机;当第二缓存区填充满后,dma切换到第一缓存区,使用第一缓存区储存数据,核心控制器的cpu读取第二缓存区中的数据,并通过无线网络将数据传输到上位机;不断重复上述过程,直到完成视频传输任务。

在步骤e中,由主程序调用wifi连接网络连接子程序,读取外接flash中预设的参数值,包括路由器名称和网络连接密码,初始化wlan参数和网络协议栈,然后进行网络连接,并判断是否连接成功,如果连接成功,将获取终端在当前网络的ip和端口号,并通过串口的透传模块上传到上位机,如果连接失败,通过串口输出连接失败的信息。

在步骤g中,首先调用摄像头子程序打开摄像头,配置中断、dma、dcmi相关初始化参数设置,配置摄像头参数,然后重启摄像头并读取摄像头id,判断是否读取成功,如果失败则输出错误信息,如果成功则配置摄像头输出数据的格式以及输出图像的分辨率,将核心控制器的dcmi摄像头接口设置为与摄像头输出相同的格式,接收摄像头传来的数据,开启dcmi连续捕获图像功能,使能dcmi接口,完成视频流的传输准备。

dam的数据填充算法如下:

设置dma计数器装载次数为1,根据dma一次传输的字节数计算填满缓存区所需计数器初值,如果所需计数器初值小于等于计数器的阈值,则装载一次计数器即可填满缓存区,如果所需计数器初值超过计数器阈值,则将所需计数器初值除以2,装载次数乘以2,将将所需计数器初值除以2得到的新的计数器初值与计数器阈值比较,不断重复上述过程直到计数器初值小于或等于计数器阈值为止。

本发明通过内检机器人进入变压器内部进行图像采集与处理,然后将数据通过无线网络传输到上位机,上位机将下位机采集到的图像信息显示出来,从而实现变压器内部视频的无线实时传输。将嵌入式技术与物联网技术相结合,利用mico物联网实时操作系统实现在复杂情况下的无线视频传输。采用模块化设计,分为上位机控制端和下位机数据采集端,实现了下位机进行视频数据的采集、处理与传输,上位机进行视频的接收与显示。为了保证mico系统在核心控制器上能够稳定运行,外扩了一枚sdram芯片。本发明使用dam双缓存模式缓存数据,dam负责填充数据缓存区,cpu负责网络数据传输,实现数据采集和输出的并行操作,大大减小了处理器的负荷。

本发明能够在密闭金属屏蔽环境下实现对密闭环境内的图像视频信息的无线实时传输。

附图说明

图1是本发明视频传输系统的示意图。

图2是本发明的视频传输流程图。

图3是本发明网络连接的流程图。

图4是本发明图像采集的流程图。

图5是本发明tcp传输服务流程图。

图6是本发明dma双缓存模式的流程图。

图7是本发明dma数据填充算法的流程图。

具体实施方式

本发明包括以下步骤:

a.在变压器内设置内检机器人,并在内检机器人上设置下位机,在变压器外部设置上位机以及与上位机相连接的路由器,下位机包括核心控制器、图像采集模块、无线传输模块、电源模块、下位存储模块以及sdram模块,上位机包括控制模块、显示模块以及上位存储模块;

b.将mico系统移植到下位机的核心控制器中;

c.对mico系统进行初始化,并进入主程序循环;

d.调用子程序对sdram进行初始化;

e.调用子程序进行无线网络连接,使下位机的无线传输模块与路由器相连接,;

f.调用子程序为图像采集模块准备数据缓存的内存空间,在sdram上设置数据缓存区,并将该数据缓存区分为两个缓存区;

g.调用子程序对图像采集模块进行初始化,打开摄像头开始图像采集;

h.调用子程序创建tcp服务线程,并等待上位机控制模块通过路由器与下位机相连接;

i.上位机与下位机相连接,数据缓存区开启dam双缓存模式对来自图像采集模块的图像数据流进行缓存,并开始进行视频传输。

如图1所示,本发明首先提出了一种变压器内检机器人视频传输系统,该系统包括上位机、下位机以及路由器。上位机为无线传输系统的软件空控制中心,对下位机终端传输来的视频数据进行解算。下位机为视频采集终端,与上位机之间无线连接,实时检测变压器内部环境并将视频信息传输到上位机,从而实现对变压器内部的检查。

其中,上位机包括:

控制模块,负责上位机与下位机建立连接并接收下位机返回的状况信息;

显示模块,对下位机传输过来的视频信息进行实时的显示;

上位存储模块,对接收到的信息进行存储。

下位机包括:

核心控制器,具体采用stm32f429igt6单片机,负责驱动图像采集模块进行图像采集和处理;

图像采集模块,通过stm32f4系列单片机特有的dami接口与核心控制器连接,实时采集变压器内部环境的图像信息;

无线传输模块,通过sdio接口与主控芯片连接,用于上位机与下位机进行远程数据传输通信;

电源模块,包括转换模块,为核心控制器、无线传输模块以及图像采集模块供电;

sdram模块,为stm32f4系列单片机外扩一枚sdram芯片,用于数据的缓存,具体型号为is42s16400j。

本发明无线传输模块选用的是sdio接口的wifi模块,传统的wifi模块采用串口转wifi的数据传输方式,其速度只有普通串口的传输速度,适用于数据少,实时性低的场合,而sdio接口的wifi模块数据传输速度最高可达24mb,满足视频传输速度的要求。

本发明使用的是mico物联网实时操作系统,需要先在变压器内检机器人视频传输系统上移植mico系统,具体步骤如下:

步骤1,进行准备工作,准备micokit套件、keil5开发软件以及相关硬件设备;

步骤2,对存储空间进行分配,将flash划分为bootloader区、application区以及rf固件区;

步骤3,移植bootloader,在micokit里添加一个新硬件平台,根据下位机终端硬件参数修改对应代码使bootloader与我们终端硬件相匹配;

步骤4,移植application,根据实际应用来选择移植的应用程序,移植application和新建工程类似,包括创建文件、芯片选型、头文件路径选择、flash存储空间分配等相关参数配置。

如图2所示,本发明的传输方法主要包括:

步骤1,下位机终端上电后,在主控芯片的控制下完成对mico系统、外设等外接设行初始化,主要包括spi、sdio、usart、看门狗的配置;

步骤2,初始化完成后,系统进入主程序循环,对sdram进行初始化,通过mico系统提供的api子程序判断sdram初始化是否正常,如果子程序初始化出现错误,主程序通过串口输出相关信息;

步骤3,sdram初始化完成后,然后通过子程序返回值判断是wifi芯片是否已经连接到指定的无线网络,不管设备是否成功连接到路由器,串口都将输出连接状态的相关信息;

步骤4,为摄像头准备数据缓存的内存空间,建立两个数据缓冲数组并清空缓存,获取缓存区地址以便后续写入视频流数据;

步骤5,调用子程序对摄像头初始化,其中包括摄像头接口初始化、配置摄像头输出格式等相关参数设置。

步骤6,创建tcp服务线程,主程序判断子程序是否有错误,如果有错误串口输出错误信息,如果没有错误主程序串口输出tcp服务的ip地址和端口号。此时下位机终端便成了一个tcp服务器等待远程用户即上位机控制端的连接并提供视频传输服务。

主程序运行过程中,在每个子程序调用完毕后都对子程序返回是否错误进行判断,如果子程序返回错误,则通过串口输出状态信息,若子程序返回没有错误,则调用下一个子程序。

如图3所示,本发明的网络连接流程如下:

步骤1,下位机控制主程序调用wifi网络连接子程序,创建一个结构体数组用来存储无线网络连接所需的参数;

步骤2,读取外部flash的预设参数值,包括路由器名称和网络连接密码;

步骤3,初始化wlan参数,设置wifi芯片相关参数包括,信道选择、安全模式、station或ap模式以及连接失败所需等待时间和重连尝试时间;

步骤4,初始化网络协议栈;

步骤5,连接网络,判断是否连接成功,如果连接成功程序将获取终端在当前网络ip和端口号并通过串口外接透传模块上传到上位机。如果连接失败,将通过串口输出连接失败的信息。

如图4所示,本发明使用jpeg压缩编码格式作为摄像头采集数据的输出格式,在主程序中通过调用摄像头子程序来对摄像头进行配置和使用,其步骤包括:

步骤1,调用摄像头子程序配置和打开摄像头;

步骤2,进入子程序配置中断、dma、dcmi相关初始化参数设置,包括时钟、gpio、工作模式等;

步骤3,配置摄像头参数,初始化摄像头sccb总线,验证mcu与摄像头能否正常通信;

步骤4,重启摄像头,读取摄像头id号,通过与官方提供的id信息对比,判断是否读取成功;

步骤5,配置摄像头输出数据的格式;

步骤6,设置摄像头输出图像分辨率;

步骤7,将核心控制器的dcmi摄像头接口设置成jpeg格式,接收摄像头传来的数据;

步骤8,将dcmi接口设置为连续捕获模式用于数据接收;

步骤9,使能dcmi接口,下位机图像采集可以与上位机进行视频流的传输。

如图5所示,本发明的tcp传输服务流程如下:

步骤1,主程序通过调用mico系统提供的api创建一个tcp服务线程;

步骤2,读取wlan连接的本地ip地址和预设端口号,创建一个socket套接字;

步骤3,绑定获取的ip地址和端口号;

步骤4,完成上述操作后,服务器进入监听状态等待上位机发来的握手请求;

步骤5,连接成功后,终端开始视频采集;

步骤6,tcp服务器线程从缓存区读取数据,经过无线网络传送至上位机,经过上位机软件解码后将采集到的视频信息显示出来。

在进行视频传输时,将数据从摄像头中读取出来,每次都需要经过核心控制器的cpu的处理和储存后再经过wifi芯片发送出去,这样会导致处理器的负荷大大增加,如果使用dma双缓存模式缓存数据就可以很好的解决这个问题,其中dma负责填充数据缓冲区,cpu负责网络数据的传输,这样就实现了数据采集和输出的并行操作。本发明应用的是双缓存机制对采集的视频数据进行缓存,同时设计了stm32f4系列单片机dma的缓存填充相关算法,可以实现在线调整终端缓存区的大小。

如图6所示,本发明dma双缓存模式如下:

步骤1,数据采集端外扩一个8mb的sdram用作数据缓存区,由于使用双缓存机制,将其分成两个4mb的缓存区,分别为第一缓存区data_buff1和第二缓存区data_buff2。

步骤2,在stm32f429上开启dma双缓存模式,将寄存器dma_sxcr的dbm位设置成1,此时dma控制器也将自动激活循环模式;

步骤3,开启视频传输后,dma从dcmi接口接收ov2640发送的数据流,首先使用data_buff1来储存数据,当其填充满后,dma切换到data_buff2,此时,cpu读取data_buff1中的数据通过无线网络传输到上位机;

步骤4,当data_buff2填充满后,dma又切换到data_buff1进行数据存储,此时,cpu读取data_buff2中的数据通过无线网络传输到上位机。

如图7所示,第一缓存区或第二缓存区的填充是通过算法控制的,本发明dma数据填充算法如下:

步骤1,设定缓存区大小的初值,设置dma的fifo缓存器一次性传输16位数据,即2字节;

步骤2,用缓存区大小(以字节为单位)除以2取整计算缓存区填满所需要的次数;

步骤3,比较填满缓存区次数是否超过65535次,如果没有,说明只需一次即可将缓存区填满,而且寄存器初值已通过缓存区大小除以2得到;

步骤4,如果填满缓存区次数超过65535,则说明装载一次寄存器的值无法填满缓存区,那么再除以2,重新转载次数乘以2,然后把得到的寄存器初值与65535比较,依次类推直至计算出来的寄存器初值小于或等于65535为止,可以得到ma_sxndtr寄存器初值和重新装载次数。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1