本发明专利技术公开了一种485总线自组网定时方法,首先定义数据结构,存储定时器需要响应的时间,以及到达时间后需要执行的处理函数;然后,定义队列,存储多个定时器信息,并按照时间的先后顺序进行排序;当用户向系统注册一个定时器时,将定时器加入到该队列的适当位置;当用户解注册一个定时器时,系统从队列中将该定时器删除;系统初始化时会开启一个实时时钟,并设置本地时间,然后,主机会定时查询网络时间,并在向从机下发定时命令时先进行对时命令,每隔一段时间便将本地时间与上述队列响应时间最早的定时器的时间进行对比,若当前时间已到达定时器规定的响应时间,则执行该定时器对应的处理函数;否则,等待下一个检验点继续进行时间的对比。
【技术实现步骤摘要】
一种485总线自组网定时方法
本专利技术属于自组网定时
,更为具体地讲,涉及一种485总线自组网定时方法。
技术介绍
定时器,从字面理解,就是一个时钟,在设定了定时时间之后,经历了设定的时间之后,就会通知设置定时器的人员,时间已经到了,可以进行下一步工作了,在日常生活中,我们经常能接触到定时器,1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。起初每周上一次发条,1918年使用电钟计时后,就不用上发条了。随着生活水平的提高,定时器的用途也越来越广泛。比如对开水机、热水器的定时控制,现在有了大功率定时器,定时开机、定时关机,实现节能、安全、健康的使用。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器确实是一项了不起的专利技术,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。在嵌入式系统中,经常会使用到定时器进行一些周期性的处理任务,主要是利用实时时钟(RTC,Real-TimeClock)完成;实时时钟(Real-TimeClock)是利用晶振及相关电路组成的时钟电路的生成脉冲,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。可以通过配置寄存器设定RTC中断产生的周期,每次RTC中断即为一个检查点。但是,由于晶振电路的误差,RTC也会有误差,误差也会随着时间的增长而增长。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种485总线自组网定时方法,在不改动硬件的条件下,通过定时命令发送前增加对时命令,可在某种程度上减小晶振带来的误差,而且,定时命令是针对单个从机下发的,这么做能减少整个系统的负担。为实现上述专利技术目的,本专利技术为一种485总线自组网定时方法,其特征在于,包括以下步骤:(1)、对定时器所需变量进行定义及初始化(1.1)、从机的数据结构初始化定义从机定时器队列的数据结构structtimer并初始化,structtimer中又包括定时时间time、定时器时间到达后的处理方法fun、以及存储关于从机定时器队列前后成员信息queue;根据成员信息queue将所有从机定时器连接成定时器队列;(1.2)、线程初始化主机开启定时更新时间线程,每隔一段时间获取一次网络时间,并更新主机的本地时间;(2)、将定时器队列注册进入系统并等待命令及接收命令(2.1)、从机开启实时时钟,记录并定时更新一个从机的本地时间,然后将定时器队列的列头信息注册进入系统,再等待从主机方下发的定时命令;(2.2)、当主机收到外界对本自组网的定时命令后,解析该命令所指向的从机,并通过485总线以通信协议约定格式对外界命令所指向的从机发出对时命令,该对时命令将主机的本地时间发送至对应从机上,从而更新该从机的本地时间;(2.3)、主、从机对时完成后,主机继续转发定时命令,并再次通过485总线以通信协议约定格式将定时命令发送给外界命令所指向的从机;(3)、从机接收命令并处理当自组网内的从机从485总线接收到主机下发的定时命令后,先解析定时命令,然后声明数据结构structtimer;根据解析定时命令格式得到的数据初始化定时器的响应时间time以及对应的定时器时间到达后的处理方法fun;将上述数据结构初始化完毕之后,将他们注册进入系统,即将该数据结构链接到定时器队列中,并按照定时时间从早到晚进行排序;至后,从机随时监听485总线上是否有新的定时命令下发,若新的定时命令到达,则继续执行步骤(3);(4)、实时监测定时器时间是否已到达及实时定时器队列更新从机间隔执行实时时钟的定时中断,判断定时器队列的列头定时器的定时时间是否已到达,如果队列头的定时器的定时时间到达,则执行对应的定时处理函数fun,然后将该定时器从队列中删除;否则,在下一次执行定时中断中,继续监测定时器队列的列头定时器;(5)、循环监听主机实时监听外界下发的定时命令,并在定时命令到达时,返回步骤(2);从机按照时间先后顺序继续处理定时器队列中定时命令。本专利技术的专利技术目的是这样实现的:本专利技术一种485总线自组网定时方法,首先,定义数据结构,存储定时器需要响应的时间,以及到达时间后需要执行的处理函数;然后,定义队列,存储多个定时器信息,并按照时间的先后顺序进行排序;当用户向系统注册一个定时器时,将定时器加入到该队列的适当位置;当用户解注册一个定时器时,系统从队列中将该定时器删除;系统初始化时会开启一个实时时钟,并设置本地时间,然后,主机会定时查询网络时间,并在向从机下发定时命令时先进行对时命令,每隔一段时间便将本地时间与上述队列响应时间最早的定时器的时间进行对比,若当前时间已到达定时器规定的响应时间,则执行该定时器对应的处理函数;否则,等待下一个检验点继续进行时间的对比;本专利技术减少了多定时器动态开启关闭时对响应时间非最早的定时器的非必要查询,减少了CPU开销,提高了系统运行速度,并通过准确的网络对时减小了定时的误差。附图说明图1是本专利技术一种485总线自组网定时方法流程图;图2是定时器队列的结构图;图3是检查定时器是否到时的流程图。具体实施方式下面结合附图对本专利技术的具体实施方式进行描述,以便本领域的技术人员更好地理解本专利技术。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本专利技术的主要内容时,这些描述在这里将被忽略。实施例图1是本专利技术一种485总线自组网定时方法流程图。在本实施例中,如图1所示,本专利技术提供一种485总线自组网定时方法,包括以下步骤:S1、对定时器所需变量进行定义及初始化S1.1、从机的数据结构初始化定义从机定时器队列的数据结构structtimer并初始化,structtimer中又包括定时时间time、定时器时间到达后的处理方法fun、以及存储关于从机定时器队列前后成员信息queue;根据成员信息queue将所有从机定时器连接成定时器队列,从而为以后的定时器结构之间的链接做准备;在本实施例中,在系统的角度上看到的定时器队列的结构图,如图2所示;S1.2、线程初始化主机开启定时更新时间线程,每隔一段时间获取一次网络时间,并更新主机的本地时间,从而能保证主机的本地时间与准确的网络时间的误差在一个很小的范围。S2、将定时器队列注册进入系统并等待命令及接收命令S2.1、从机开启实时时钟,记录并定时更新一个从机的本地时间,然后将定时器队列的列头信息注册进入系统,再等待从主机方下发的定时命令;S2.2、当主机收到外界对本自组网的定时命令后,解析该命令所指向的从机,并通过485总线以通信协议约定格式对外界命令所指向的从机发出对时命令,该对时命令将主机的本地时间发送至对应从机上,从而更新该从机的本地时间;S2.3、主、从机对时完成后,主机继续转发定时命令,并再次通过485总线以通信协议约定格式将定时命令发送给外界命令所指向的从机;至此,主机的定时任务已完成,主机将继续监听外界下发的定时命令,直到下一次收到外界对本自组网的定时命令之前,主机不再进行定时任务。S3、从机接本文档来自技高网...
【技术保护点】
1.一种485总线自组网定时方法,其特征在于,包括以下步骤:(1)、对定时器所需变量进行定义及初始化(1.1)、从机的数据结构初始化定义从机定时器队列的数据结构struct timer并初始化,struct timer中又包括定时时间time、定时器时间到达后的处理方法fun、以及存储关于从机定时器队列前后成员信息queue;根据成员信息queue将所有从机定时器连接成定时器队列;(1.2)、线程初始化主机开启定时更新时间线程,每隔一段时间获取一次网络时间,并更新主机的本地时间;(2)、将定时器队列注册进入系统并等待命令及接收命令(2.1)、从机开启实时时钟,记录并定时更新一个从机的本地时间,然后将定时器队列的列头信息注册进入系统,再等待从主机方下发的定时命令;(2.2)、当主机收到外界对本自组网的定时命令后,解析该命令所指向的从机,并通过485总线以通信协议约定格式对外界命令所指向的从机发出对时命令,该对时命令将主机的本地时间发送至对应从机上,从而更新该从机的本地时间;(2.3)、主、从机对时完成后,主机继续转发定时命令,并再次通过485总线以通信协议约定格式将定时命令发送给外界命令所指向的机;(3)、从机接收命令并处理当自组网内的从机从485总线接收到主机下发的定时命令后,先解析定时命令,然后声明数据结构struct timer;根据解析定时命令格式得到的数据初始化定时器的响应时间time以及对应的定时器时间到达后的处理方法fun;将上述数据结构初始化完毕之后,将他们注册进入系统,即将该数据结构链接到定时器队列中,并按照定时时间从早到晚进行排序;至后,从机随时监听485总线上是否有新的定时命令下发,若新的定时命令到达,则继续执行步骤(3);(4)、实时监测定时器时间是否已到达及实时定时器队列更新从机间隔执行实时时钟的定时中断断,判断定时器队列的列头定时器的定时时间是否已到达,如果队列头的定时器的定时时间到达,则执行对应的定时处理函数fun,然后将该定时器从队列中删除;否则,在下一次执行定时中断中,继续监测定时器队列的列头定时器;(5)、循环监听主机实时监听外界下发的定时命令,并在定时命令到达时,返回步骤(2);从机按照时间先后顺序继续处理定时器队列中定时命令。...
【技术特征摘要】
1.一种485总线自组网定时方法,其特征在于,包括以下步骤:(1)、对定时器所需变量进行定义及初始化(1.1)、从机的数据结构初始化定义从机定时器队列的数据结构structtimer并初始化,structtimer中又包括定时时间time、定时器时间到达后的处理方法fun、以及存储关于从机定时器队列前后成员信息queue;根据成员信息queue将所有从机定时器连接成定时器队列;(1.2)、线程初始化主机开启定时更新时间线程,每隔一段时间获取一次网络时间,并更新主机的本地时间;(2)、将定时器队列注册进入系统并等待命令及接收命令(2.1)、从机开启实时时钟,记录并定时更新一个从机的本地时间,然后将定时器队列的列头信息注册进入系统,再等待从主机方下发的定时命令;(2.2)、当主机收到外界对本自组网的定时命令后,解析该命令所指向的从机,并通过485总线以通信协议约定格式对外界命令所指向的从机发出对时命令,该对时命令将主机的本地时间发送至对应从机上,从而更新该从机的本地时间;(2.3)、主、从机对时完成后,主机继续转发定时命令,并再次通过485总线以通信协议约定格式将定时命令发送给外界命令所指向的机;(3)、从机接收命令并处理当自组网内的从机从485总线接收到主机下发的定时命令后,...
【专利技术属性】
技术研发人员:邹见效,李喆,谢川,徐红兵,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。