一种基于车载充电桩的系统时间计时方法与流程

文档序号:34239169发布日期:2023-05-25 00:13阅读:145来源:国知局
一种基于车载充电桩的系统时间计时方法与流程

本发明涉及汽车电子,特别是一种基于车载充电桩的系统时间计时方法。


背景技术:

1、随着新能源电动汽车的快速发展,国内充电桩爆发式增长,同时,各区域定义了很多智能充电桩新要求,比如计时收费,需要充电桩具备计时功能,但由于充电桩外部输入电网,可能会掉电,导致控制器ecu内置的rtc时钟模块不能连续性计时工作,最终rtc计时时钟信息丢失,如果又不能及时联上网络同步网络时间的话,就使得充电桩系统只能从默认时间开始重新计时,和正确的时间不一致,导致订单开始时间和订单结束时间异常,引起用户的抱怨。

2、虽然市面上的充电桩已经出现了控制器ecu外挂硬件rtc的形式,可提供独立的电池,即使充电桩掉电,rtc可以使用电池供电继续计时,也能保证时间的正确性,但是,这会增加一些充电桩的硬件成本,而且电池长时间使用也会出现电池没有电或者电池坏掉不工作等情况,使得硬件rtc不能正常工作,最终使得充电桩系统计时时间错误,导致订单开始时间和订单结束时间异常,也会引起用户抱怨,并没有根本上解决问题。另外,rtc日期时间和utc时间转换的计算量比较大,因此,亟需对现有的算法进行改进,研发一种基于车载充电桩的系统时间计时方法,来解决系统时间的计时问题,以降低控制器ecu的负载,提升产品的性能。


技术实现思路

1、本发明的目的在于,提供一种基于车载充电桩的系统时间计时方法。本发明的计时方法在确保系统时间正确性的同时还能降低控制器ecu的负载,提升充电桩产品的性能。

2、本发明的技术方案:一种基于车载充电桩的系统时间计时方法,包括以下步骤:

3、步骤s1、充电桩系统启动,设置系统时间模块为开启状态,系统时间任务在系统周期任务中执行;根据充电桩系统时间模块的模式选择对应的处理,系统时间模块的模式包括空闲模式、校时模式和正常模式;如果模式为空闲模式,则进入步骤s2;如果模式为校时模式,则进入步骤s3;如果模式为正常模式,则进入步骤s4;

4、步骤s2、在空闲模式,如果系统时间模块为开启状态,则设置系统时间模块的模式为校时模式,返回步骤s1;

5、步骤s3、进入校时模式,根据时间校时方式分为无效时间校时方式、复位校时方式和网络时间校时方式三种情况进行处理;

6、步骤s4、进入正常模式,任务包括:系统时间更新、判断是否需要校时和定期存储系统时间;

7、步骤s5、定义一个起始年份,在系统启动时把起始年份之前的总时间秒数一次性计算出来,在每次时间转换的时候,从起始年份基础上进行计算;

8、步骤s6、判断年份是否为闰年;

9、步骤s7、对rtc日期时间的格式进行校验;

10、步骤s8、将ecu内置的rtc日期时间读取;

11、步骤s9、重置rtc日期时间,把系统时间秒转换成rtc日期时间,再对rtc日期时间的格式进行校验,校验通过后直接设置rtc相关寄存器。

12、与现有技术相比,本发明的有益效果体现在:本发明定义了无效时间校时方式、复位校时方式和网络时间校时方式,通过多种时间源对rtc进行校时,能有效确保系统时间正确性,同时,为了不影响系统性能,对rtc日期时间和utc时间转换算法做了优化,通过定义一个起始年份,把起始年份之前的总时间秒数一次性计算出来,在每次转换的时候,只需要在此基础上再累加,能有效降低控制器ecu的负载,提升产品的性能。

13、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s1中充电桩系统初始化时设置系统时间模块的模式为空闲模式,设置时间校时方式为无效时间校时方式。

14、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s3具体包括以下子步骤:

15、s301、如果时间校时方式为无效时间校时方式,则进入步骤s302;如果时间校时方式为复位校时方式,则进入步骤s310;如果时间校时方式为网络时间校时方式,则进入步骤s311;

16、s302、读取eeprom模块中存储时间队列中数据,设置查询序号为0,进入步骤s303;

17、s303、如果查询序号小于存储时间队列最大序号数,则进入步骤s304;否则,进入步骤s305;

18、s304、读取eeprom模块中存储时间队列中查询序号对应的存储时间数据,如果存储时间数据大于系统配置最小时间且存储时间数据小于系统配置最大时间,而且当前存储时间变量小于存储时间数据,则当前存储时间变量等于存储时间数据,存储时间队列序号等于查询序号,设置当前存储时间状态为1;查询序号加1,返回步骤s303;

19、s305、读取rtc时间秒,读取ecu复位源,如果ecu复位源等于掉电复位重启或者读取rtc时间秒状态不等于成功,则进入步骤s306;否则,进入步骤s307;

20、s306、复位rtc时钟模块,如果当前存储时间状态为1,则使用当前存储时间变量重置rtc时间,设置rtc校时时间源为存储时间源,设置记忆rtc时间秒等于当前存储时间,设置系统时间等于当前存储时间;如果当前存储时间状态不为1,使用系统配置最小时间重置rtc时间,设置rtc校时时间源为默认时间源,设置记忆rtc时间秒等于系统配置最小时间,设置系统时间等于系统配置最小时间;进入步骤s312;

21、s307、如果当前存储时间状态为1,则进入步骤s308;否则,进入步骤s309;

22、s308、如果rtc时间秒大于当前存储时间变量加上31536000的和或者rtc时间秒小于当前存储时间变量,则使用当前存储时间重置rtc时间,设置rtc校时时间源为存储时间源,设置记忆rtc时间秒等于当前存储时间,设置系统时间等于当前存储时间;进入步骤s312;

23、s309、如果系统配置最小时间大于rtc时间秒或者系统配置最大时间小于rtc时间秒,则使用系统配置最小时间重置rtc时,设置rtc校时时间源为默认时间源,设置记忆rtc时间秒等于系统配置最小时间,设置系统时间等于系统配置最小时间;进入步骤s312;

24、s310、复位rtc时钟模块,再使用系统时间重置rtc时间,进入步骤s312;

25、s311、使用系统时间重置rtc时间,进入步骤s312;

26、s312、重置成功后,设置定时授权模块的模式为正常模式,结束。

27、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s4具体包括以下子步骤:

28、s401、在周期为1秒任务中,1分钟计时器加1,再获取网络时间返回状态赋值给网络时间更新状态;如果网络时间更新状态为1,则进入步骤s402;如果网络时间更新状态为0,则进入步骤s406;

29、s402、如果1分钟计时器大于等于60秒或者rtc校时时间源不等于网络时间源时,则读取rtc时间秒;如果读取rtc时间秒状态为成功,则进入步骤s403;如果读取rtc时间秒状态为失败,则设置系统时间模块的模式为校时模式,设置时间校时方式为复位校时方式,进入步骤s404;

30、s403、如果rtc时间秒大于网络时间,则时间绝对值等于rtc时间秒减去网络时间;否则,时间绝对值等于网络时间减去rtc时间秒;如果时间绝对值大于rtc校时最小时间阈值,则设置系统时间模块的模式为校时模式,设置时间校时方式为网络时间校时方式;进入步骤s404;

31、s404、如果rtc校时时间源不等于网络时间源,设置rtc校时时间源为网络时间源;如果系统时间大于网络时间,时间绝对值等于系统时间减去网络时间,设置网络校时方向为网络校时减少;否则,时间绝对值等于网络时间减去系统时间,设置网络校时方向为网络校时增加;如果时间绝对值大于系统校时最小时间阈值,则设置周期存储计时器等于存储间隔时间,设置1分钟计时器等于60秒;进入步骤s405;

32、s405、设置系统时间等于网络时间,设置离线计时器为0;进入步骤s410;

33、s406、如果1分钟计时器大于等于60秒,则进入步骤s407;否则,进入步骤s410;

34、s407、读取rtc时间秒,如果读取rtc时间秒状态为成功,则进入步骤s408;如果读取rtc时间秒状态为失败,则设置系统时间模块的模式为校时模式,设置时间校时方式为复位校时方式,进入步骤s409;

35、s408、如果rtc时间秒大于等于记忆rtc时间秒加上1分钟最小阈值的和且rtc时间秒小于记忆rtc时间秒加上1分钟最大阈值的和,则系统时间等于rtc时间秒;否则,设置系统时间模块的模式为校时模式,设置时间校时方式为复位校时方式;进入步骤s409;

36、s409、离线计时器加1,如果离线计时器大于等于离线超时时间阈值,则设置rtc校时时间源为系统时间源,设置离线计时器为0;进入步骤s410;

37、s410、如果1分钟计时器大于等于60秒,设置记忆rtc时间秒等于rtc时间秒,设置1分钟计时器等于0,周期存储计时器加1;如果周期存储计时器大于等于存储间隔时间,则把当前系统时间存储到当前存储时间队列序号对应地址中,设置存储时间队列序号加1,设置周期存储计时器等于0;如果存储时间队列序号大于等于存储时间队列最大数,则设置存储时间队列序号为0;进入步骤s411;

38、s411、如果系统时间模块为关闭状态,则设置系统时间模块的模式为空闲模式;进入步骤s412;

39、s412、结束。

40、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s5具体包括以下子步骤:

41、s501、定义一个起始年份,在系统启动时,计算出非闰年一年的总秒数为31536000,设置年份序号等于1970,设置从1970年的历史总秒数为0,进入步骤s502;

42、s502、判断年份序号是否小于起始年份,如果满足,则进入步骤s503;如果不满足,则进入步骤s504;

43、s503、从1970年的历史总秒数等于从1970年的历史总秒数加上31536000,再判断年份序号对应的年是否为闰年,如果为闰年,则从1970年的历史总秒数等于从1970年的历史总秒数加上86400;再对年份序号加1,返回步骤s502;

44、s504、完成从1970年开始的历史总秒数的计算。

45、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s6具体包括:首先,年份对4求余,如果大于0,说明不是4的整数倍,则不为闰年;如果等于0,说明年份是4的整数倍,再使用年份对100求余,如果大于0,说明年份不是100的整数倍,则为闰年,如果等于0,说明年份是100的整数倍,则继续用年份对400进行求余,如果等于0,说明年份是400的整数倍,则为闰年,否则都不为闰年。

46、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s7具体包括以下子步骤:

47、s701、定义两个数组,第一个数组为非闰年每个月天数,第二个数组为非闰年每个月累计天数;首先计算当前月的最大天数,如果rtc日期时间的月等于2且rtc日期时间的年为闰年,则本月的最大天数等于非闰年每个月天数数组中对应rtc日期时间的月对应的天数加1;否则,本月的最大天数等于非闰年每个月天数数组中对应rtc日期时间的月对应的天数;进入步骤s702;

48、s702、判断rtc日期时间的年是否大于等于起始年份,如果满足,则进入步骤s703;否则,校验失败,进入步骤s706;

49、s703、判断rtc日期时间的月是否大于等于1且小于等于12,如果满足,则进入步骤s704;否则,校验失败,进入步骤s706;

50、s704、判断rtc日期时间的天是否大于等于1且小于等于本月的最大天数,如果满足,则进入步骤s705;否则,校验失败,进入步骤s706;

51、s705、如果rtc日期时间的小时小于24、rtc日期时间的分小于60且rtc日期时间的秒小于60,则校验成功;否则,校验失败;进入步骤s706;

52、s706、结束。

53、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s8具体包括以下子步骤:

54、s801、首先,设置读取rtc时间状态为失败,接着读取ecu内置rtc日期时间,再对rtc日期时间的格式进行校验,如果校验成功,则进入步骤s802;否则,进入步骤s806;

55、s802、根据年份计算rtc时间秒,计算公式为:rtc时间秒=从1970年的历史总秒数+(rtc日期时间的年-起始年份)*31536000,再设置年份序号等于起始年份,进入步骤s803;

56、s803、判断年份序号是否小于rtc日期时间的年,如果满足,则进入步骤s804;如果不满足,则进入步骤s805;

57、s804、判断年份序号对应的年是否为闰年,如果为闰年,则rtc时间秒=rtc时间秒+86400;再对年份序号加1,返回步骤s803;

58、s805、判断当前年是否为闰年,且月份是否大于2,如果rtc日期时间的年为闰年且rtc日期时间的月大于2,则rtc时间秒=rtc时间秒+86400;根据非闰年每个月累计天数数组得出当前rtc日期时间的月对应的累计天数,再计算rtc时间秒:rtc时间秒=rtc时间秒+rtc日期时间的月对应的累计天数*86400;再计算这个月的天数对应的时间秒,计算rtc时间秒:rtc时间秒=rtc时间秒+(rtc日期时间的天–1)*86400;再计算小时、分和秒对应的秒,计算rtc时间秒:rtc时间秒=rtc时间秒+rtc日期时间的小时*3600+rtc日期时间的分*60+rtc日期时间的秒,设置读取rtc时间状态为成功;进入步骤s806;

59、s806、返回读取rtc时间状态,结束。

60、前述的一种基于车载充电桩的系统时间计时方法中,所述步骤s9具体包括以下子步骤:

61、s901、首先,对rtc日期时间的年设置初始值,rtc日期时间的年等于起始年份,再计算所有秒数:所有秒数=系统时间秒-从1970年的历史总秒数;再计算所有天数和剩余秒数:所有天数=所有秒数/86400,剩余秒数=所有秒数%86400;再计算rtc日期时间的小时和剩余秒数:rtc日期时间的小时=剩余秒数/3600,剩余秒数=剩余秒数%3600;再计算rtc日期时间的分和rtc日期时间的秒:rtc日期时间的分=剩余秒数/60,rtc日期时间的秒=剩余秒数%60;再计算一年的天数,如果rtc日期时间的年为闰年,则一年的天数等于366,否则,一年的天数等于365;进入步骤s902;

62、s902、如果所有天数大于等于一年的天数,则进入步骤s903;否则,进入步骤s904;

63、s903、rtc日期时间的年加1,所有天数=所有天数-一年的天数,再计算一年的天数,如果rtc日期时间的年为闰年,则一年的天数等于366,否则,一年的天数等于365;返回步骤s902;

64、s904、所有天数=所有天数+1,再计算rtc日期时间的月,设置循环序号为1,进入步骤s905;

65、s905、如果循环序号小于等于12,则进入步骤s906;否则,进入步骤s907;

66、s906、计算一个月的天数,一个月的天数等于非闰年每个月天数数组中循环序号对应的天数,如果循环序号为2且rtc日期时间的年为闰年,则一个月的天数加1;如果所有天数小于等于一个月的天数,rtc日期时间的月等于循环序号,进入步骤s907;否则,所有天数=所有天数-一个月的天数,循环序号加1,返回步骤s905;

67、s907、rtc日期时间的天等于所有天数,再对计算出来的rtc日期时间格式进行校验,如果校验成功,则直接使用rtc日期时间设置rtc相关寄存器,设置重置rtc日期时间状态为成功;如果校验失败,则设置重置rtc日期时间状态为失败;进入步骤s908;

68、s908、结束。

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