进入到2020大家都会发现,用组态王组态的工程,到了2020年的日报表,月报表或者是自定义报表就不能查询使用了。关于这个问题,是因为一个组态王HTconvertTime的函数有时间的现在造成的。在官方范例中,对报表文件的介绍,是使用了一个HTConvertTime()函数,来计算当前时间查询历史数据。而这个函数的说明中,写明了这个函数只能在1970-2019年使用。我们查看这个函数的说明,1970.1.1,其实就是格林威治时间,组态王自己的格式把数据按天,分为不同的文件,存储在硬盘上,然后通过格林威治时间,进行管理,只要我们能自己写程序,转换下格林威治时间,就可以把原有的HTConvertTime()函数给替换掉,从而实现正常运行的功能。那剩下就简单了。
组态王提供了自定义函数的机制,在命令语言/自定义函数命令语言,定义一个LONG型的函数:CYL_HTConvertTime(long Year,long Month,long Day,long Hour,long minites,long sends),名字可以随意起的,这个是在原有名字上加个前缀,便于替换原函数。然后里面可以计算了。当然你前面要获得当前的年、月、日、时、分、秒信息。下面就是计算格林威治时间了,网上算法很多。规则也简单,每三个平年跟一个闰年,平年365天,2月份28天;闰年366天,2月份,29天。则算法基本就是下面:
1.计算当前年份与1970之间,有多少个4年,每个就是365×4+1天;
2.计算当前年份与1970的间隔除4,看余几年,判断是否闰年,加对应时间;
3.计算当前月份,如果是闰年,过了2月份就加1天;如果不是闰年,就按大小月,排布天数,当然了,要把当天刨掉,因为只算整天;
4.最后把天数都加起来 天数×24×60×60,再把后面的小时、分钟、秒,统一折算秒数,然后都相加返回,即可。
5.然后,在你的报表脚本中,一切都不变,只把原来语句中的HTConvertTime前面加个前缀,改为CYL_HTConvertTime,全部保存就完事了。
附件文档我上传了自编脚本和使用步骤,欢迎大家分享交流!
楼主最近还看过