CN109617640B - 一种485总线自组网定时方法 - Google Patents
一种485总线自组网定时方法 Download PDFInfo
- Publication number
- CN109617640B CN109617640B CN201811452272.XA CN201811452272A CN109617640B CN 109617640 B CN109617640 B CN 109617640B CN 201811452272 A CN201811452272 A CN 201811452272A CN 109617640 B CN109617640 B CN 109617640B
- Authority
- CN
- China
- Prior art keywords
- time
- timer
- timing
- slave
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 11
- 238000012163 sequencing technique Methods 0.000 claims abstract description 5
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 6
- 238000003672 processing method Methods 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 239000013078 crystal Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241000282414 Homo sapiens Species 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种485总线自组网定时方法,首先定义数据结构,存储定时器需要响应的时间,以及到达时间后需要执行的处理函数;然后,定义队列,存储多个定时器信息,并按照时间的先后顺序进行排序;当用户向系统注册一个定时器时,将定时器加入到该队列的适当位置;当用户解注册一个定时器时,系统从队列中将该定时器删除;系统初始化时会开启一个实时时钟,并设置本地时间,然后,主机会定时查询网络时间,并在向从机下发定时命令时先进行对时命令,每隔一段时间便将本地时间与上述队列响应时间最早的定时器的时间进行对比,若当前时间已到达定时器规定的响应时间,则执行该定时器对应的处理函数;否则,等待下一个检验点继续进行时间的对比。
Description
技术领域
本发明属于自组网定时技术领域,更为具体地讲,涉及一种485总线自组网定时方法。
背景技术
定时器,从字面理解,就是一个时钟,在设定了定时时间之后,经历了设定的时间之后,就会通知设置定时器的人员,时间已经到了,可以进行下一步工作了,在日常生活中,我们经常能接触到定时器,1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。起初每周上一次发条,1918年使用电钟计时后,就不用上发条了。随着生活水平的提高,定时器的用途也越来越广泛。比如对开水机、热水器的定时控制,现在有了大功率定时器,定时开机、定时关机,实现节能、安全、健康的使用。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。
在嵌入式系统中,经常会使用到定时器进行一些周期性的处理任务,主要是利用实时时钟(RTC,Real-Time Clock)完成;实时时钟(Real-Time Clock)是利用晶振及相关电路组成的时钟电路的生成脉冲,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。可以通过配置寄存器设定RTC中断产生的周期,每次RTC中断即为一个检查点。但是,由于晶振电路的误差,RTC也会有误差,误差也会随着时间的增长而增长。
发明内容
本发明的目的在于克服现有技术的不足,提供一种485总线自组网定时方法,在不改动硬件的条件下,通过定时命令发送前增加对时命令,可在某种程度上减小晶振带来的误差,而且,定时命令是针对单个从机下发的,这么做能减少整个系统的负担。
为实现上述发明目的,本发明为一种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);从机按照时间先后顺序继续处理定时器队列中定时命令。
本发明的发明目的是这样实现的:
本发明一种485总线自组网定时方法,首先,定义数据结构,存储定时器需要响应的时间,以及到达时间后需要执行的处理函数;然后,定义队列,存储多个定时器信息,并按照时间的先后顺序进行排序;当用户向系统注册一个定时器时,将定时器加入到该队列的适当位置;当用户解注册一个定时器时,系统从队列中将该定时器删除;系统初始化时会开启一个实时时钟,并设置本地时间,然后,主机会定时查询网络时间,并在向从机下发定时命令时先进行对时命令,每隔一段时间便将本地时间与上述队列响应时间最早的定时器的时间进行对比,若当前时间已到达定时器规定的响应时间,则执行该定时器对应的处理函数;否则,等待下一个检验点继续进行时间的对比;本发明减少了多定时器动态开启关闭时对响应时间非最早的定时器的非必要查询,减少了CPU开销,提高了系统运行速度,并通过准确的网络对时减小了定时的误差。
附图说明
图1是本发明一种485总线自组网定时方法流程图;
图2是定时器队列的结构图;
图3是检查定时器是否到时的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明一种485总线自组网定时方法流程图。
在本实施例中,如图1所示,本发明提供一种485总线自组网定时方法,包括以下步骤:
S1、对定时器所需变量进行定义及初始化
S1.1、从机的数据结构初始化
定义从机定时器队列的数据结构struct timer并初始化,struct timer中又包括定时时间time、定时器时间到达后的处理方法fun、以及存储关于从机定时器队列前后成员信息queue;根据成员信息queue将所有从机定时器连接成定时器队列,从而为以后的定时器结构之间的链接做准备;在本实施例中,在系统的角度上看到的定时器队列的结构图,如图2所示;
S1.2、线程初始化
主机开启定时更新时间线程,每隔一段时间获取一次网络时间,并更新主机的本地时间,从而能保证主机的本地时间与准确的网络时间的误差在一个很小的范围。
S2、将定时器队列注册进入系统并等待命令及接收命令
S2.1、从机开启实时时钟,记录并定时更新一个从机的本地时间,然后将定时器队列的列头信息注册进入系统,再等待从主机方下发的定时命令;
S2.2、当主机收到外界对本自组网的定时命令后,解析该命令所指向的从机,并通过485总线以通信协议约定格式对外界命令所指向的从机发出对时命令,该对时命令将主机的本地时间发送至对应从机上,从而更新该从机的本地时间;
S2.3、主、从机对时完成后,主机继续转发定时命令,并再次通过485总线以通信协议约定格式将定时命令发送给外界命令所指向的从机;至此,主机的定时任务已完成,主机将继续监听外界下发的定时命令,直到下一次收到外界对本自组网的定时命令之前,主机不再进行定时任务。
S3、从机接收命令并处理
当自组网内的从机从485总线接收到主机下发的定时命令后,先解析定时命令,然后声明数据结构struct timer;
根据解析定时命令格式得到的数据初始化定时器的响应时间time以及对应的定时器时间到达后的处理方法fun;将上述数据结构初始化完毕之后,将他们注册进入系统,即将该数据结构链接到定时器队列中,并按照定时时间从早到晚进行排序;至后,从机随时监听485总线上是否有新的定时命令下发,若新的定时命令到达,则继续执行步骤S3;
S4、实时监测定时器时间是否已到达及实时定时器队列更新
从机间隔执行实时时钟的定时中断,判断定时器队列的列头定时器的定时时间是否已到达,如果队列头的定时器的定时时间到达,则执行对应的定时处理函数fun,然后将该定时器从队列中删除;否则,在下一次执行定时中断中,继续监测定时器队列的列头定时器;也就是说无论当前系统中是否有定时命令的下发,从机每隔一段时间都会检查从机的定时器队列中是否有新的定时器存在,以及队列头的定时器(即定时时间最早的定时器)的定时时间是否已到达。
如图3所示,判断定时器队列的列头定时器的定时时间是否已到达的方法为:从机从定时器队列中取出第一个结点,将第一个结点中的定时时间与从机的本地时间进行比较,如果定时时间大于本地时间,则定时时间已经到达,否则定时时间还未到达。
S5、循环监听
从系统上电那一刻开始,主机便实时监听外界下发的定时命令,并在定时命令到达时,返回步骤S2;而从机则按照时间先后顺序继续处理定时器队列中定时命令。
综述,本发明通过使用队列记录注册进入系统的定时器,并且按照定时时间从早到晚的顺序排序,在检查点检查时,只需要检查队列第一个定时器的时间是否到达,减少在系统有多个定时器时的非必要查询,减少了CPU开销,提高了系统的运行速度。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (2)
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);从机按照时间先后顺序继续处理定时器队列中定时命令。
2.根据权利要求1所述的一种485总线自组网定时方法,其特征在于,所述步骤(4)中,判断定时器队列的列头定时器的定时时间是否已到达的方法为:从机从定时器队列中取出第一个结点,将第一个结点中的定时时间与从机的本地时间进行比较,如果定时时间大于本地时间,则定时时间已经到达,否则定时时间还未到达。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811452272.XA CN109617640B (zh) | 2018-11-30 | 2018-11-30 | 一种485总线自组网定时方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811452272.XA CN109617640B (zh) | 2018-11-30 | 2018-11-30 | 一种485总线自组网定时方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617640A CN109617640A (zh) | 2019-04-12 |
CN109617640B true CN109617640B (zh) | 2019-12-27 |
Family
ID=66006591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811452272.XA Expired - Fee Related CN109617640B (zh) | 2018-11-30 | 2018-11-30 | 一种485总线自组网定时方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109617640B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11876885B2 (en) * | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
CN114168365B (zh) * | 2021-12-07 | 2023-06-20 | 中国船舶重工集团公司第七0七研究所 | 一种基于stm32f450处理器的实时数据录取方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859260B (zh) * | 2010-05-14 | 2012-12-12 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN101848051B (zh) * | 2010-05-19 | 2015-04-01 | 中兴通讯股份有限公司 | 一种设备之间进行时钟同步的方法和装置 |
CN102103520A (zh) * | 2010-12-14 | 2011-06-22 | 深圳市金宏威实业发展有限公司 | 一种定时器的实现方法和装置 |
CN104834347B (zh) * | 2015-04-29 | 2017-08-25 | 杭州东信捷峻科技有限公司 | 有利于低功耗的无累计误差的动态时长定时器实现方法 |
-
2018
- 2018-11-30 CN CN201811452272.XA patent/CN109617640B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN109617640A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708617B (zh) | 一种基于Service的应用进程保活系统及保活方法 | |
CN109617640B (zh) | 一种485总线自组网定时方法 | |
Li et al. | PRESTO: Feedback-driven data management in sensor networks | |
US7051219B2 (en) | System and apparatus for adjusting a clock speed based on a comparison between a time required for a scheduler function to be completed and a time required for an execution condition to be satisfied | |
US7961760B2 (en) | Method and system for network synchronization | |
Jung et al. | Sensor node lifetime analysis: Models and tools | |
CN103093059B (zh) | 一种实时高效的分布式半实物仿真系统构建方法 | |
CN106900042B (zh) | 一种树型传感器网络自组网的传感器节点 | |
CN100437433C (zh) | Java加速器环境中功率管理的系统和方法 | |
CN107878366A (zh) | 一种用于控制新能源汽车控制器工作状态的方法及装置 | |
CN105915328B (zh) | 对同步帧的接收处理方法和装置 | |
CN110286739A (zh) | 远程遥测终端的功耗控制方法和装置 | |
CN106020869B (zh) | 基于can总线的选择性烧录多个单片机节点程序的方法 | |
Biazi et al. | A dynamic TDMA-based sleep scheduling to minimize WSN energy consumption | |
US20150286271A1 (en) | System and method for predicting a central processing unit idle pattern for power saving in a modem system on chip | |
CN109753368B (zh) | 一种实时数据发送方法及系统 | |
Hauweele et al. | Toward accurate clock drift modeling in wireless sensor networks simulation | |
CN103458045A (zh) | 分布式集群的动态部署方法和系统 | |
CN108845872A (zh) | 一种用于嵌入式系统的软件定时器实现方法 | |
CN108230660A (zh) | 控制方法及控制装置、存储介质及遥控器 | |
CN110032115B (zh) | 一种利用近场连接实时交互的物联网控制系统及控制方法 | |
CN105528241B (zh) | 电子装置及其操作系统唤醒方法 | |
CN102368825B (zh) | 3d眼镜的节能控制方法 | |
US20190116557A1 (en) | Programmable Hardware Sleep Cycle Controller For 802.11 Wireless Devices Supporting Low-Power | |
CN113552921B (zh) | 一种软硬件互锁的系统时间同步方法及系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191227 |