技术领域
[0001] 本
发明涉及一种用于智能照明系统的开关状态控制方法,尤其涉及一种用于智能照明系统的基于周模式的开关自动切换控制方法。
背景技术
[0002] 智能照明系统是指利用
物联网技术、有线/无线通讯技术、电
力载波通讯技 术、
嵌入式计算机智能化信息处理技术以及节能控制等技术组成用于对照明设 备进行智能化控制的照明系统。智能照明系统中有多种涉及时间设置的器件, 比如集中
控制器、时间控制器、
开关控制器等相关产品,该类产品内部具有时 钟系统,具有通过远程或本机设置时间点的功能,并实现在一定时间段内开关 状态切换的功能。
[0003] 传统智能照明系统的开关状态设置和控制方式,大多采用设置时间点的模式完成输出控制,即系统设置不同的时间,在不同的时间点响应不同的状态,即当某个点触发时启动相应的动作。这也是传统闹钟采用的时间设定和控制方式。
[0004] 上述传统智能照明系统的开关状态设置和控制方式存在如下问题:在已经设置好某个时间点如何控制开关的情况下,如果重新调整时间或者系统重启,都有可能导致该时间点不能被识别,从而需要用户手动控制,降低了自动控制的精准度,导致口控制错误。
[0005] 比如,当前设备系统时间为10:00,标准时间(如中国北京时间)为10:10分,设置的开灯时间为10:05,关灯时间为10:20;当前设备状态为关灯状态。此时通过其他外部方式将设备系统时间调整为标准时间10:10后,由于系统时钟没有经过开灯时间10:05这个点,所以设备会一直处于关灯状态,从而漏过10:05开灯的指令,导致控制错误。此时,用户必须手动调整状态为开,不能实现精确的自动控制。
[0006] 再比如,当前设备系统时间为10:00,设置的开灯时间为10:05,关灯时间为10:20;当前设备状态为关灯状态。此时通过其他外部方式将设备开灯时间调整为09:50后,由于系统时钟已经跨过9:50,没有经过开灯时间这个点,所以设备会一直处于关灯状态。此时,用户必须手动调整状态为开,不能实现精确的自动控制。
[0007] 另外,系统为保证开关状态的正常连续运行,必须实时存储设备当前的开关状态,如果系统重启,则有可能导致开关状态错误。
[0008] 综上,传统智能照明系统的开关状态设置和控制采用时间点判断的方式,具有不连续性;在正常情况下下,设备系统时间是连续的,但是在特殊情况下,如手动调整开灯时间,或手动调整系统时间,或系统重启情况下,则不能完全自动切换,需要人为干预。
[0009] 另外,传统智能照明系统的设备程序空间将设置的所有时间参数统一存储并实时放在程序存储空间中,如设置了8组定时时间,无论这8个时间是否有效或使用,都会对其完成存储和判断,延长了主程序的时间,降低了效率。若按照只存储时、分、秒、输出状态、使能,则需要5×8×2×7共560个字节,这里的5代表5个参数,8代表8组定时时间,2代表每组定时时间有开、关两个时间点,7代表一周7天;这样,需要大于560个字节的
存储器,一般选择1024个字节的存储器提高了芯片的
硬件需求和成本。
发明内容
[0010] 本发明的目的就在于为了解决上述问题而提供一种用于智能照明系统的基于周模式的开关自动切换控制方法本发明通过以下技术方案来实现上述目的:
一种用于智能照明系统的基于周模式的开关自动切换控制方法,包括以下步骤:
步骤1、在存储器设置存储空间,用于存储7×N×2个长整型时间数据,N为控制时间组数,每一组控制时间包括一个开灯时间和一个关灯时间;这里的7代表一周7天,2代表一组时间有开、关两种状态;
步骤2、将所有时间的缓存改成大于10080的值,这里的10080代表一周7天的总分钟数,即10080=7天×24小时×60分;
步骤3、将所有设置的时间全部转换为分钟数,并放在对应的长整型存储空间中,转换方法为:按每周星期一至星期七、每天24小时制,转换所得分钟数=(星期数-1)×24×60+小时数×60+分钟数;任何转换后的分钟数都必然小于10080,比如,星期五的开灯时间为10:
00,则转换后的分钟数为(5-1)×24×60+10×60+0=6360;
步骤4、采用冒泡法将所有转换后的分钟数从小到大的方式排序并存储;冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序
算法,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来,走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成;
步骤5、每一次控
制模式被设为自动模式后,将当前系统时间转换为分钟数,转换方法与所述步骤3相同;比如,当前是星期四9:00,则转换后的分钟数为(4-1)×24×60+9×60+0=4860;
步骤6、将所述步骤4中的所有设置时间分钟数与所述步骤5中的系统时间分钟数进行对比,找出比系统时间分钟数小且接近系统时间分钟数的设置时间分钟数,取出该时间对应的开、关状态,并设置当前状态为该状态;如果找不到比系统时间分钟数小的设置时间分钟数,则找出小于10080的最大值,取出该时间对应的开、关状态,并设置当前状态为该状态;如果仍然找不到,表示没有设置任何时间,则设置当前状态为关状态;直到下一次控制模式被设为自动模式后,重复步骤5和步骤6。这里的比较原理是:对于重新设置时间的情形,如果设置时间小于当前系统时间,则必然是最接近当前系统时间的设置时间为最新的设置时间,如果设置时间大于当前系统时间,则必然是最大的时间为最新的设置时间。
[0011] 作为优选,所述步骤1中,N为8。
[0012] 本发明的有益效果在于:本发明通过将所有时间转换为统一格式的分钟数,并依据最新设置时间的判断原理找出最新设置时间并直接输出对应开、关状态,避免了因重设时间漏过相应时间点控制的控制错误问题,用户仅需要设置时间和控制模式就可以得到需要的结果,而不需要先手动调整到正确的输出,无论手动调整开灯时间,或手动调整系统时间,或系统重启情况下,都能完全自动切换,不需要人为干预;本发明降低了硬件成本,以设置8组时间为例,存储器共需
7×8×2×2=224个字节的存储空间,选用156字节的存储器即可,而传统方式则需要1024个字节的存储器;本发明还缩短了主程序的时间,提高了效率。
具体实施方式
[0013] 下面结合
实施例对本发明作进一步说明:实施例:
下面以设置8组开、关状态时间为例,对本发明所述用于智能照明系统的基于周模式的开关自动切换控制方法进行具体说明:
一种用于智能照明系统的基于周模式的开关自动切换控制方法,包括以下步骤:
步骤1、在存储器设置存储空间,用于存储7×8×2=112个长整型时间数据,8为控制时间组数,每一组控制时间包括一个开灯时间和一个关灯时间,7代表一周7天,2代表一组时间有开、关两种状态;
步骤2、将所有时间的缓存改成大于10080的值;
步骤3、将所有设置的时间全部转换为分钟数,并放在对应的长整型存储空间中,转换方法为:按每周星期一至星期七、每天24小时制,转换所得分钟数=(星期数-1)×24×60+小时数×60+分钟数;
步骤4、采用冒泡法将所有转换后的分钟数从小到大的方式排序并存储;
步骤5、每一次控制模式被设为自动模式后,将当前系统时间转换为分钟数,转换方法与所述步骤3相同;比如,当前是星期四9:00,则转换后的分钟数为(4-1)×24×60+9×60+0=4860;
步骤6、将所述步骤4中的所有设置时间分钟数与所述步骤5中的系统时间分钟数进行对比,找出比系统时间分钟数小且接近系统时间分钟数的设置时间分钟数,取出该时间对应的开、关状态,并设置当前状态为该状态;如果找不到比系统时间分钟数小的设置时间分钟数,则找出小于10080的最大值,取出该时间对应的开、关状态,并设置当前状态为该状态;如果仍然找不到,表示没有设置任何时间,则设置当前状态为关状态;直到下一次控制模式被设为自动模式后,重复步骤5和步骤6。
[0014] 上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的
基础上实现的技术方案,均应视为落入本发明
专利的权利保护范围内。