数字媒体艺术 计算机科学与技术 软考报名 信息处理技术员 行业资讯 考试大纲 直播动态 网络安全 网络管理 通信技术 OpenHarmony 计算机与网络 企业信息化 软件工程 Linux 嵌入式Linux开发基础(ARMAtom) 离散数学 操作系统 C++程序设计 Java 语言程序设计 智能感知与无人系统 机器学习算法与人工智能 Python 软考资讯
通信技术的发展推动了农业智能化的蓬勃发展,智能化重型拖拉机不再是传统的纯机械式的拖拉机,它集成了众多电控单元,各个单元相互协作共同完成对重型拖拉机的控制。为实现对重型拖拉机运行状态的监控,实时获取重型拖拉机的运行状态,及时发现异常状态并进行处理,开发一套基于Linux的智能重型拖拉机监控系统非常有必要。文献[1]中基于Fescale 9S12X128芯片研究了电控拖拉机远程监控系统,通过控制器局域网络(controller area network,CAN)总线采集拖拉机的运行数据,通用无线分组业务(general packet radio service,GPRS)网络将数据发送到Internet,但此系统受控制芯片处理能力,局限较大,而且可移植性较差。
本文中采用具有先进处理性能和多内核处理器的IMAX6Q芯片,该芯片可搭载嵌入式Linux系统,嵌入式Linux系统具有开源、多体系、多驱动的优点,并且具有定制化功能,使设计的监控系统具有高效、稳定以及处理能力强大的优点,系统结合GPRS和全球定位系统(global positioning system,GPS)模块使用,能够实时高效地监控智能重型拖拉机的运行状态。
图1 远程监控系统总体设计图
基于嵌入式Linux的智能重型拖拉机远程监控系统总体方案如图1所示。由图1可知:重型拖拉机的整车控制器(vehicle control unit,VCU)通过CAN总线与监控系统相连接,监控系统接收来自VCU的CAN报文并根据文献[2]协议对接收到的CAN报文进行解析[3-5],获取当前拖拉机运行的状态信息;监控系统的GPS模块接收到来自卫星的信息,由监控系统选取所需的数据进行提取,获取当前拖拉机的位置信息;然后监控系统将采集到的重型拖拉机的运行数据通过传输控制协议/网际协议(transmission control protocol/Internet protocol,TCP/IP)进行打包处理[6-7],并通过4G模块将打包好的数据发送到移动基站,转发至Internet,上传到云服务器,在云服务器将数据包进行解析,后台监控端访问服务器获取数据,从而实现对重型拖拉机行驶状态的远程监控。
CAN模块的使用在整个智能重型拖拉机远程监控系统中至关重要,因此重点对CAN模块进行程序设计。本文中智能重型拖拉机远程监控系统开发时,由于所用的Ubuntu系统缺少使用CAN模块所必须的库文件,因此首先应设计CAN模块的库文件并挂载到Ubuntu系统,将设计的库文件设置为普通用户级读写权限,将库文件生成链接文件,确保程序能够正常运行。CAN模块的程序设计及数据收发过程的流程如图2所示。
图2 CAN模块收发数据流程图
设计CAN模块程序时,应将CAN模块禁止,将波特率设置为500 kbits/s。Linux系统中,CAN设备被当作网络设备进行管理,所以需要设计专用于CAN通信的套接字来实现CAN通信,分配CAN设备,设计CAN模块的连接程序,进入接收或发送数据状态[8]。CAN模块接收数据程序时,首先在can_filter结构体中定义接收 CAN节点的报文ID和掩码(MASK),设计该结构体,并进入接收状态,read函数读取can_frame结构体中的报文信息。
将监控系统的CAN_H和CAN_L用双绞线连接到智能重型拖拉机VCU的CAN_H和CAN_L上完成硬件连接[9],通过CAN总线获取重型拖拉机的车速、发动机转速、动力输出轴(power take off,PTO)转速、差动锁状态、行驶里程、剩余油量等信息[10]。
2.2.1 串口初始化
由于IMAX6Q开发板中外扩了GPS模块,利用GPS模块可以实现全球范围内的定位,满足实时监测智能重型拖拉机位置的需求。Linux内核中安装了相应的驱动,GPS模块对应的文件名为/dev/ttymxc,GPS模块通过串口进行数据传输,程序设计流程如图3所示。
图3 GPS串口程序设计流程图
Linux系统中设备是以文件的方式进行读写,因此首先在程序中设置串口的文件句柄用于打开文件”/dev/ttymxc”,将串口设为阻塞状态,并检测是否为终端设备,获取串口对应终端的相关参数并在程序中将其初始化,然后设置串口的波特率、初始位、停止位、奇偶校验位和处理未接收的字符。串口初始化函数是串口初始化的通用函数,其它需要使用的模块可直接移植调用。
2.2.2 数据解析
由于GPS的数据$GPRMC为结构体格式,因此首先定义一个结构体data[ ],用于存放GPS数据,然后定义buffer[ ]数组作为缓冲数组存放从串口中读到的数据[11]。读取数据时,从文件句柄 fd 中读取一个字符存放在buffer[ ]数组中,并将该数据连接至dest[ ]的尾部。GPS数据解析流程如图4所示。
对该组数据进行解析的软件流程如图5所示。首先定义一个标志位变量 SectionID,用于标识数据组的不同信息,然后通过判断$GPRMC 数据组中的字符串是否是“,”来区分不同的数据信息。每当检测到一个“,”,则 SectionID加1,通过 switch 语句根据 SectionID判别该字符属于哪个数据,并根据不同的数据(如时间、经纬度等)进行相应的计算,将信息存储到 data[ ]数组里,便于打印或传输。
图4 GPS数据解析流程图 图5 GPS_$GPRMC组数据提取流程图
2.3.1 USB驱动架构
图6 USB驱动架构
设计时选用EC20模块用于4G通信,由于IMAX6Q开发板中没有EC20模块的驱动程序,导致无法识别该设备,因此需要向 Linux 内核源码中添加EC20模块驱动程序,再编译生成Ubuntu系统文件后烧录到开发板,才能使用EC20模块与服务器进行数据传输[12]。EC20模块驱动程序设计完成后,在Ubuntu下作为通用串行总线(universal serial bus,USB)设备使用。USB是分级的总线结构,通过USB模块实现USB设备与主机之间的数据传输。USB驱动程序的体系结构如图6所示。
Linux USB主机驱动程序包括USB主机控制器驱动程序、USB 内核和 USB 设备驱动程序3部分。USB主机控制器驱动程序是架构的底层,直接与硬件交互;USB内核是整个USB主机驱动程序的核心,负责管理USB总线、USB总线设备和USB总线带宽,为USB设备驱动程序提供接口,应用程序可以通过接口访问USB系统文件;USB设备驱动程序与应用程序交互,主要提供访问特定USB设备的接口。
2.3.2 Linux内核源码修改
将EC20模块连接到USB串口即设置成USB串口设备,并将EC20模块的厂商识别码和产品识别码添加到设计程序中,Ubuntu系统会自动识别该设备,但应在相关文件中删除和EC20冲突的USB驱动的代码。设计修改内核源码时,添加回调代码,用来恢复由于Linux系统进入挂起或休眠模式时部分USB主机控制器或USB集线器的断电或复位。完成上述设计后进入内核目录下,修改环境变量ARCH为arm、交叉编译器为arm-none-linux-gnueabi,输入相关命令使能USB驱动,完成后输入加载驱动的命令并重启Ubuntu。
2.3.3 Ubuntu系统文件编译
Ubuntu系统包括引导文件、内核文件、文件系统3个文件。因此,设计完成 EC20 的内核驱动后,应交叉编译生成上述3个文件。在源码文件夹下的引导文件目录中,编译脚本build_uboot.sh,编译该文件即可在该文件夹下生成uboot.bin文件,即引导文件。在内核文件目录中,编译脚本文件build_qt_kernel.sh,生成uImage文件即内核镜像。将Ubuntu系统压缩包上传至虚拟机并进行解压,可以在解压后的文件中进行修改,实现相应的功能。源码修改完成后,再压缩生成.tar.gz文件,即为 Ubuntu 的文件系统。
2.3.4 Ubuntu系统烧录
将引导文件、内核文件和文件系统使用飞思卡尔烧写工具Mfgtools烧录至开发板,并根据开发板的型号进行相应的屏幕参数设置。烧录成功的Ubuntu系统,使用ls /dev/ttyUSB*命令可以看到系统中已存在ttyUSB 0~4共5个文件。其中,ttyUSB1用于GPS信息的输出接口,ttyUSB2用于终端设备与PC应用之间的连接与通信指令(attention,AT)的输入接口,ttyUSB3既可以用于AT指令的输入接口,也可以作为点到点协议连接的接口。
2.3.5 EC20 数据传输软件设计
EC20模块的驱动设计安装完成后,对其进行数据传输的软件设计。EC20模块的初始化程序设计流程为:首先给模块上电,通过“AT + CPIN?”指令查询SIM卡的状态,如果返回“READY! OK”,则进行下一步,否则重新启动该模块。继续使用“AT + CREG?” “AT + CGREG?”指令查询相关初始状态值;在查询状态为全部正常后,使用“AT + QIAT=<contextID>”指令激活相应的报文ID;使用“AT+QIACT?”可以查询到本机IP;然后使用“AT + QIOPEN”指令进行服务器的连接,在参数<access mode>中可以设置数据传输方式[13-14]。
图7 系统总体程序流程图
远程监控系统所需要的各个模块的程序设计完成后,需要在Linux开发环境下对系统总体程序进行开发设计,程序设计流程如图7所示。首先要Linux开发环境下分别对CAN设备、GPS串口、EC20模块进行初始化,然后向Linux系统内核注册中断,最后对程序的主函数进行设计,主函数设计包括将GPS数据采用轮询方式采集,CAN总线数据采用中断方式采集,并且设置每隔一段时间对采集的GPS和CAN总线信息进行数据处理和打包,通过4G模块发送至远程服务器端[15-16]。
将开发板作为CAN总线的一个节点,挂载在重型拖拉机的CAN总线网络,然后将开发板设置为可以接收所有的报文信息。来自重型拖拉机VCU的报文经开发板传送到监控端,开发板与车载端连接,在 PC 机上登录监控后台界面,通过访问远程服务器,实现车载端与PC端的连接,客户端工作界面如图8所示。部分监控系统端采集到的报文信息及其解析如表1所示,其中报文信息为车速、整车状态(“1”为运行状态,“0”为停止状态)、纬度、经度信息,经解析后转化为重型拖拉机的车速、发动机转速、PTO转速、差动锁状态、行驶里程、剩余油量、地理位置等信息。
图8 PC端客户端工作界面
表1 部分报文数据解析表
由图8和表1可知,来自监控系统端的CAN报文能够通过开发板传送至服务器端,再通过服务器传到后台客户端。重型拖拉机的车速、发动机转速、PTO转速、差动锁状态、行驶里程、剩余油量、地理位置等数据均可以在监控界面实时显示,达到设计要求。
基于嵌入式Linux操作系统研究开发了智能重型拖拉机远程监控系统,包括CAN模块、GPS模块、4G通信模块及控制软件,并对开发的监控系统进行了测试。
1)设计了智能重型拖拉机远程监控系统的总体方案。
2)在Linux开发环境下设计CAN通信模块程序,通过CAN总线将监控系统挂载到重型拖拉机的控制器上,实现数据采集。通过Linux系统自带GPS驱动,将GPS模块作为USB设备在Linux系统中进行程序设计并获取位置信息,针对4G通信模块,修改了Linux内核驱动及相关文件,对修改后的 Linux 内核进行编译,4G模块程序设计完成后能够将数据上传到服务器端。
3)对开发的基于嵌入式Linux的智能重型拖拉机远程监控系统进行试验测试,远程监控端能够接收到来自重型拖拉机的车速、发动机转速、PTO转速、差动锁状态、行驶里程、剩余油量、地理位置等数据,满足设计要求。
[1]陈霞,黄志付,姚云委.嵌入式Linux远程监控系统的设计与开发[J].科技风,2020(12):121.
[2]Society of Automotive Engineers.Serial control and communications heavy duty vehicle network:SAE J1939[S].[S.l.]:SAE International,2005.
[3]沈翔.基于硬件TCP/IP协议的物联网网关设计[J].物联网技术,2019,9(10):35-37.
[4]吕焦盛.基于TCP/IP协议的网络通信服务器设计与实现[J].赤峰学院学报(自然科学版),2019,35(9):50-52.
[5]董小辉,胡锦波,黄浩,等.基于SAE J1939的商用车智能车载终端系统设计[J].计算机测量与控制,2019,27(7):209-213.
[6]付衍法,崔冬梅,马乾.基于SAE J1939协议的发动机离线诊断软件开发[J].建筑机械化,2019,40(4):57-59.
[7]张建舟.电动拖拉机远程监控系统的研究[D].镇江:江苏大学,2017.
[8]王培金,李军伟,孙辉安,等.基于S12XDP512双核微处理器的拖拉机整机控制器CAN节点开发[J].中国农机化学报,2018,39(4):63-67.
[9]崔晓琳,周静,王健,等.双轮驱动电动汽车CAN总线通信协议[J].农业装备与车辆工程,2010(2):17-20.
[10]曹学自,李军伟,王培金,等.精密播种机终端及监控系统设计[J].现代电子技术,2019,42(20):17-20.
[11]贾海云,余庚.GPS传感器中数据解析电路的设计[J].长春师范大学学报,2018,37(6):96-100.
[12]柯建兴,薛曼玉,田召宝.基于MKL16Z128VFM4和EC20的4G通信系统设计[J].通信电源技术,2019,36(9):1-4.
[13]丁若婷,孙越,汪毅雄,等.基于4G移动通信的实时车辆监控管理系统[J].信息通信技术,2015,9(5):27-325.
[14]邹龙,王德志,刘忠诚,等.Linux系统下4G终端模块驱动的实现[J].电脑知识与技术,2015,11(27):206-209.
[15]胡宁.基于嵌入式Linux的T-BOX车联网应用软件的设计与开发[D].西安:长安大学,2018.
[16]李晃.基于ARM的电动汽车远程监控系统设计与研究[D].武汉:武汉理工大学,2015.
© 2019-2021 All rights reserved. 北京转创国际管理咨询有限公司 京ICP备19055770号-1
Beijing TransVenture International Management Consulting Co., Ltd.
地址:佛山市金融高新区京华广场
北京市大兴区新源大街25号院恒大未来城7号楼1102室
深圳市福田区华能大厦
深圳市南山区高新科技园南区R2-B栋4楼12室
梅州市丰顺县留隍镇新兴路881号
汕头市金平区华坞村七巷三楼
长沙市芙蓉区韶山北路139号文化大厦
欢迎来到本网站,请问有什么可以帮您?
稍后再说 现在咨询