时间:2024-05-24
王 浩,郝凤琦,董振振,王茂励,唐勇伟
(1.青岛理工大学 信息与控制工程学院,山东 青岛 266520;2.齐鲁工业大学(山东省科学院),山东省计算中心(国家超级计算济南中心)/山东省计算机网络重点实验室,济南 250014)
《国民经济和社会发展第十三个五年规划纲要(草案)》提出,农业是全面建成小康社会和实现现代化的基础,必须加快转变农业发展方式,着力构建现代农业产业体系、生产体系、经营体系,提高农业质量效益和竞争力,走产出高效、产品安全、资源节约、环境友好的农业现代化道路[1]。高稳定性、高精度播种机的研发对粮食产量的影响举足轻重。以小麦小区播种为例(见图1),小区长度是否精准,各小区之间排列是否整齐,对通风、通光都会产生影响,直接关乎的最终产量。传统的小麦小区播机大多采用编码器测距方式,但这这种测距方式会受到作业环境、农机机械误差的影响,造成测量精度不足,产生累积误差,从而影响小区长度的准确性。中国北斗卫星导航系统(BeiDou Navigation Satellite System,BDS)是中国自行研制的全球卫星导航系统,由5颗静止轨道卫星和30颗非静止轨道卫星组成,是继美国全球定位系统(GPS)、俄罗斯格洛纳斯卫星导航系统(GLONASS)之后第3个成熟的卫星导航系统[2]。基于北斗卫星导航系统的开放性和高准确性,提出了一种采用北斗定位辅助播种的方法,通过实时采集播种机准确的经纬度,来控制小区长度,从而提高小麦小区播种的精度。本文选用的S7-200smart plc是西门子公司推出的一款性能优良的控制器,相比于其他控制器,在可靠性、稳定性、通用性和驱动能力方面更加出色,在工作环境较为恶劣的农田中能确保播种机正常工作。
图1 小麦小区播种机
小麦小区播种机主要由发动机、驾驶室、电控操作屏、变速箱传动装置、锥体格盘排种装置、投种座椅、整机机架、种盒支架、开沟器装置、作业指引架、前后桥转向机构、步进电机、直流电机、电磁铁、电控箱、显示屏及北斗天线等主要零部件组成。
系统工作流程如下:通过架设在播种机顶部的北斗天线,接收北斗信号报文,控制器解读报文,得到播种机实时坐标,实时计算两个坐标之间的距离差;按照比例,将距离差换算成输出给步进电机的脉冲数量,步进电机控制锥体格盘排种装置,使种子均匀分配;当触碰到限位开关时,电磁铁将手柄提起,使得存种筒内种子落下,从而实现倒种。系统组成结构如图2所示。
图2 系统组成结构
NMEA 0183是美国国家海洋电子协会为海用电子设备制定的标准格式,现在已经成为GPS导航设备统一的RTCM标准协议[3]。数据传输以“语句”的方式进行,每个语句均以“$”开头;然后是两个字母的“识别符”和3个字母的“语句名”;接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。
NMEA-0183的数据信息有十几种,本文使用的是输出GPS的定位信息的$GPGGA。$GPGGA数据格式为$GPGGS,hhmmss.ss,Latitude,N,Longitude,E,FS,NoSV,HDOP,msl,m,Altref,m,DiffStation*cs
表1 $GPGGA数据说明
续表1
PLC通过自由口接收到$GPGGA报文,由于PLC无法直接使用接收到的数据,因此需要通过程序对数据进行解析处理,提取出用户需要的时间、经度、纬度、南北东西半球等信息。解析过程如下:接收到字符串格式数据All_data后,使用STR_FIND指令从字符串中分别找到第1个和第2个”,”的位置Temp1、Temp2,计算第1个”,”后的第1位Temp1.1与第2个”,”的差值D12,通过SSTR_CPY指令从All_data的Temp1开始复制D12个字符,得到的字符串为UTC时间信息。通过以上办法,解析出经度、纬度、南北东西半球等信息,如图3所示。
图3 $GPGGA报文解析流程图
地球是一个近乎标准的椭球体,赤道半径6 378.140km,极半径6 356.755km,平均半径6 371.229km[4]。如果假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R[5]。如果以0°经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)[6]。设第1点A的经纬度为(LonA,LatA),第2点B的经纬度为(LonB,LatB),AB两点纬度差值和纬度差值分别为
diffLon=LonA-LonB
(1)
式中LonA—A点经度的弧度值;
LonB—B点经度的弧度值;
diffLon—A、B两点经度弧度值的差值。
diffLat=LatA-LatB
(2)
式中LatA—A点纬度的弧度值;
LatB—B点纬度的弧度值;
diffLat—A、B两点纬度弧度值的差值。
根据三角函数推导,可以得到计算两点距离的如下公式,即
L=2Rarcsin(a)
(3)
式中L—A、B两点间的距离(m);
R—地球平均半径(m)。
为了确保小区长度的准确性,计算距离的精度要达到厘米级,那么WGS84格式的经纬度在计算时需要保留到小数点后第6位。这就需要保证转换前的度分格式经纬度,至少要保留到小数点后第7位(dddmm.mmmmmmmm)。因此,浮点数的内存需达到16位有效数字,需要用双精度浮点数格式进行存储。但由于s7-200smart浮点数的内存格式为单精度浮点数,有效值只有8位,如果直接进行计算,超出的部分会四舍五入,那么截取到的度分格式的经纬度为dddmm.mm,小数点后只保留了两位,误差会达到米级别,这是完全无法容忍的。为了解决这一问题,提出了一种基于三角恒等式的数值分段法,来解决双精度浮点数转单精度浮点数的问题,极大地提高精度。
首先将dddmm.mmmmmmmm格式的经度划分3部分:Lon1=ddd,Lon3=Lon3*10-8,Lon3=mmmmmmm;纬度划分为Lat1=dd,Lat2=mm.m,Lat3=mmmmmmm。由于Lon3和Lat3最后1位原本处于小数点第8位,为了保持数值不变,Lon3=Lon3*10-8,Lat3=Lat3×10-8。通过划分可以保证在计算阶段能够读取到所有经纬度信息;然后,将度分格式的3部分经纬度转化为WGS84格式,再转化为弧度。将Lat2和Lat3相加构成Lat小数部分Lat*,将Lon2和Lon3相加构成Lon的小数部分Lon*,则
Lat*=Lat2+Lat3
(4)
式中Lat*—A、B两点纬度弧度值差值的小数部分;
Lat2—A、B两点纬度弧度值差值小数部分的高位;
Lat3—A、B两点纬度弧度值差值小数部分的低位。
Lon*=Lon2+Lon3
(5)
式中Lon*—A、B两点经度弧度值差值的小数部分;
Lon2—A、B两点经度弧度值差值小数部分的高位;
Lon3—A、B两点经度弧度值差值小数部分的低位。
通过以上步骤可以得到处理后A点经纬度为(LonA1+LonA*,LatA1+LatA*),B点的经纬度为(LonB1+LonB*,LatB1+LatB*),两点的经纬度差为(diffLon1+diffLon*,diffLat1+diffLat*),利用三角恒等式计算,即
=sin(diffLon1)cos(diffLon*)+
sin(diffLon*)cos(diffLon1)
(6)
=sin(diffLat1)cos(diffLat*)+
sin(diffLat*)cos(diffLat1)
(7)
cos(LonA)=cos(LonA1+LonA*) =cos(LonA1)cos(LonA*)- sin(LonA1)sin(LonA*)
(8)
cos(LonB)=cos(LonB1+LonB*) =cos(LonB1)cos(LonB*)- sin(LonB1)sin(LonB*)
(9)
(LonB)代入公式(3),计算得到L即为两点间距。
为了对计算结果进行验证,选择可以进行双精度数计算的Excel表格进行对两点间距进行计算,随机选取10组数据,每组数据有A、B两个点的经纬度,如表3所示。
为了清晰地展示三角恒等式的数值分段法的优势,直接将A、B两点的经纬度代入式(3)计算,分别得到10组数据,作为参照组,如表4所示。
表3 任意AB两点经纬度选取
表4 单精度浮点数直接计算结果
将同样的10组数据,按照三角恒等式的数值分段法分别对A、B两点的经纬度进行处理后,再代入式(3)进行计算,作为实验组,如表5所示。
经分析比较,直接使用PLC进行计算,10组数据中最大误差到达675.6cm,最小误差也有60.1cm。这样的误差量级,对于小区的长度影响极大,完全无法容忍。使用三角恒等式的数值分段法进行计算,10组数据中最大误差为0.0046cm,最小误差只有处于0.0012cm,属于微米级误差,对实际应用的影响可忽略不计。
表5 单精度浮点数处理后计算结果
以实际项目为背景,开发了基于西门子S7 -200 smart PLC的高精度小麦小区播种机。将目前国内热门的北斗定位,用于小麦小区播种机辅助播种,替代传统受限较多的编码器播种,确保小区长度的准确。该控制系统具有成本低、稳定性高、通用性好、精度可靠和易维修等特点。本文介绍的基于三角恒等式的数值分段法,亦可应用于其他精播机。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!