组态王HTconvertTime()函数的2020报表问题的解决方案

合集下载

用组态王做日历查询数据报表说明

用组态王做日历查询数据报表说明

组态王简单报表组态王目前我们应用的主要有两个版本:6.55和7.5.在2021年后基本应用7.5版本。

下面以先做一个日历控件日报制作简单说明。

准备工作:历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。

在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。

组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。

记录形式的定义通过变量属性对话框中提供的选项完成,需要查询到报表的变量都要进行记录设置,完成设置之后在数据词典中定义字符串变量“选择日期”用于日历控件的查询。

准备工作完成后开始设计报表。

一.因为组态王6.55版本自带HTconvertTime的函数,最大时间支持到2019,查函数手册如下所以组态王6.55版本的项目,2020年以后的报表数据无法通过日历控件查询,必须先更新HTconvertTime的函数。

组态王7.5版本的项目,不需要做此工作,6.55版本的项目更新方法如下:1、在命令语言里面,自定义函数命令里面新建一个函数。

2、函数声明里面选择LONG,后面的填NewHTconvertTime(long years,long months,long days,long hours,long minites,long seconds)。

(此名字随便起),填完名字把脚本拷贝粘贴进去。

(看不懂也没关系,粘进去就能用)脚本填写内容为:long rest;rest = 0;long yearsofdays; long monthsofdays; long ofdays;long ofminites; long utcyear;long utcmonth; long leapyears; long leapzt; yearsofdays = 0; monthsofdays = 0;utcyear = 1970;utcmonth = 1;leapyears = 0;while(utcyear < years){ if(utcyear % 4 ==0 && utcyear % 100 !=0 || utcyear % 400 ==0) leapyears = leapyears + 1;utcyear = utcyear + 1;}yearsofdays = (years - 1970) * 365 + leapyears;if (months == 1)if (months == 2)monthsofdays = 31;if (months == 3)monthsofdays = 59;if (months == 4)monthsofdays = 90;if (months == 5)monthsofdays = 120;if (months == 6)monthsofdays = 151;if (months == 7)monthsofdays = 181;if (months == 8)monthsofdays = 212;if (months == 9)monthsofdays = 243;if (months == 10)monthsofdays = 273;if (months == 11)monthsofdays = 304;if (months == 12)monthsofdays = 334;if (years % 4 ==0 && years % 100 !=0 || years % 400 ==0 && months >=3)ofdays = yearsofdays + monthsofdays + days;elseofdays = yearsofdays + monthsofdays + days - 1;if (hours >= 8)ofminites = ofdays * 24 * 60 + (hours - 8) * 60 + minites;if (hours < 8)ofminites = (ofdays - 1) * 24 * 60 + (hours + 16) * 60 + minites;//calculate resultszx;rest = ofminites * 60 + seconds;return rest;3、新建完成之后对于原来2020以前的项目,将以前用到的HTconvertTime函数替换成NewHTconvertTime不要漏掉(组态王7.5版本的项目,不需要做此工作),6.55版本新项目就直接用此函数。

组态王日报表例程

组态王日报表例程

组态王日报表的实现例程配置参考文档北京亚控科技发展有限公司技术部目录一、功能概述 (3)一、功能概述 (3)二、工程实例 (3)三、操作步骤: (3)1、定义设备: (3)2、定义变量: (3)3.制作画面: (4)3.1) 创建报表: (4)3.2) 创建日历控件: (6)4.进入运行系统: (12)四、注意事项 (13)图表图一报表 (5)图二报表设计 (5)图三日报表 (6)图四日历控件 (7)图五控件事件函数 (10)图六保存报表 (10)图七打印报表 (11)图八打印报表 (11)图九运行系统 (12)图十打印预览 (13)一、功能概述常规需求:很多工业现场会用到报表功能,而日报是其中最基本的一种报表形式。

日报表一般为每天整点的数据,每一个变量有24个数据。

组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对日数据的查询生成日报表。

组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。

二、工程实例我们举一个例子来说明日报表的实现方法。

在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,查询日报表数据时自动从历史数据中查询整点数据生成报表,并可以保存、打印报表。

下面就以此为例来演示完成这一要求的具体步骤。

三、操作步骤:1、定义设备:根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为”PLC”。

2、定义变量:在组态王中定义三个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO实数类型)。

压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。

记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。

用组态王报表

用组态王报表

用组态王报表实现显示设备启动、停止时间和运行时长的方法在对设备的状态进行监控中,往往要取得一些参数来记录和分析设备的运行状况。

这其中就包括设备的启动时间、停止时间和运行的时长。

当然,组态软件不会有这样的功能,让我们轻易实现。

不过,通过组态软件的报表功能,再通过二次开发,写一些脚本语言。

实现起来倒也不难。

以下,以组态王为例,是对操作过程的描述,希望能够对需要的人有一些帮助。

总体思路:以一个项目为例。

在这个工程中,有21台设备的运行状态需要记录,他们的运行状态依次记录在报表中。

报表中的每一行都表示,此设备的一个运行周期。

由于设备状态在报表中依次排列,因此需要相应的变量来保存该设备状态所在的行数。

这样,当停止该设备时,才能将“停止时间”和“运行时长”填充到正确的位置。

这样,就需要建立21个内存整形变量。

由于报表中的记录依次排列,因此还需要一个变量来保存报表中最后一条记录的行数,这样才能顺序填充记录。

1、新建报表,并命名为“报表1”。

2、创建内存整形变量。

21个内存变量分别保存21个设备状态所在的行数。

1个内存变量保存报表中最后一条记录的行数。

3、编写自定义函数,好处是减少代码量,修改方便。

脚本内容具体如下//"var"是变量的名称,"name"是要显示在报表中的字符串,"varRow"是保存记录的行数//用年月日,时分秒,系统变量来组合形成日期。

//不用日期变量,因为其格式长度不确定,在后来的分解中会很麻烦。

string strY=StrFromInt(\本站点$年, 10 );string strM=StrFromInt(\本站点$月, 10 );string strD=StrFromInt(\本站点$日, 10 );string strH=StrFromInt(\本站点$时, 10 );string strMi=StrFromInt(\本站点$分, 10 );string strS=StrFromInt(\本站点$秒, 10 );//确定日期的格式,并使长度和位置固定if(\本站点$月<10) strM="0"+strM;if(\本站点$日<10) strD="0"+strD;if(\本站点$时<10) strH="0"+strH;if(\本站点$分<10) strMi="0"+strMi;if(\本站点$秒<10) strS="0"+strS;//组合,定义格式string str=strY+"-"+strM+"-"+strD+" "+strH+":"+strMi+":"+strS;//启动设备时,将“序号”、“名称”、“启动时间”填充到报表中if(var==1){long num=报表当前行-1;string id=StrFromInt(num, 10 );ReportSetCellString("报表1", 报表当前行, 1, id);//序号ReportSetCellString("报表1", 报表当前行, 2, name);//名称ReportSetCellString("报表1", 报表当前行, 3, str);//开始时间varRow=报表当前行;//所在行=报表当前行报表当前行=报表当前行+1;}//停止设备时else{string startStr=ReportGetCellString("报表1", varRow, 3);//从报表中取得开始时间//开始时间转换秒 2011-05-06 12:23:34string midY=StrMid(startStr, 1, 4 );string midM=StrMid(startStr, 6, 2 );string midD=StrMid(startStr, 9, 2 );string midH=StrMid(startStr, 12, 2 );string midMi=StrMid(startStr, 15, 2 );string midS=StrMid(startStr, 18, 2 );long lY=StrToInt(midY);long lM=StrToInt(midM);long lD=StrToInt(midD);long lH=StrToInt(midH);long lMi=StrToInt(midMi);long lS=StrToInt(midS);long startTime= HTConvertTime(lY,lM,lD,lH,lMi,lS);long endTime= HTConvertTime(\本站点$年,\本站点$月,\本站点$日,\本站点$时,\本站点$分,\本站点$秒);//结束时间转换秒//计算时间差long timeLength=endTime-startTime;//单位秒//秒转换为小时//timeLength=timeLength/3600;string endStr=StrFromInt(timeLength, 10 )+"秒";//将“停止时间”和“运行时长”填充到报表中ReportSetCellString("报表1", varRow, 4, str);//结束时间ReportSetCellString("报表1", varRow, 5, endStr);//时间长度}4、建立设备启动或停止的运行事件命令。

组态王常见问题的解决方法

组态王常见问题的解决方法

组态王常见问题的解决方法-WORD格式--可编辑-组态王常见问题的解决方法组态王虽然国内用的很多,但他的问题也很多,有时候弄起来真的很麻烦,比如一个简单的开机自动运行都要自己设置,下面是我在网上查到的一些内容。

组态王使用常见问题1、变量设定中最大(小)值及最大(小)原始值的意义?[最大(小)值是变量在现实中表达的工程值(如:温度、压力等)的大小,而最大(小)原始值是采集设备中[寄存器] 数字量的最大(小)值(如板卡中的819-4095 等)。

一般对于板卡设备此值为物理量经AD 转换之后的值,如12BitAD 此值范围0~4096 、16BitAD 为0~65535,对于PLC 、智能仪表、变频器,其本身已将物理值转换为工程值所以此时最大(小).值与最大(小)原始值在设置时是一致的、为什么变量无法删除,如何删除变量?2在组态王中,只有未使用的变量才能被删除,因此在删除变量之前,必须去掉在画面[在工程浏览器中执行工具或命令语言、控件引用处,等处与之有关的连接,如果还是无法删除,更新变量计数命令,重新统计变量,在变量使用报告中可以查询变量是否还在某些地-删除未用变量将变量删除。

方使用,将其连接断开后,利用工具-、工程运行时,显示通讯协议组件失败?3、在开发状态下从新连接设备,如果还是有错2[设备驱动安装错误:1、安装新的驱动]误,请联系驱动部索要新的驱动程序、光盘上的典型案例无法打开?4将工程拷贝到硬盘上将属性改为存档即可[、如何在打开机器时自动进入组态王?5程序[将touchview 快捷方式拷贝到系统开始启动中、怎样把工程文件变小?6 [可以删除*.AL2 (报警信息文件),*.REC (历史记录文件),*.111文件(*.pic文件的备份文件)的文件。

、如何在线增删用户及用户密码和权限?7函数(用户权限需大于[使用editusers() ])9008、在定义变量的基本属性时状态栏中的保存数值、保存参数是什么意思?[保存参数:在系统运行时,修改变量的域的值(可读可写型),系统自动保存这些参数值,系统退出后,其参数值不会发生变化。

组态王教学-命令语言与函数解读

组态王教学-命令语言与函数解读

组态王KINGVIEW 6X命令语言与函数-常见问题解答北京亚控科技发展有限公司2009年07月目录1. 我希望用户能在不退出组态王运行软件的情况下启动一个其他的软件做其他处理,如何实现? (1)2. 我注意到组态王的命令语言窗口中能够写入的编程命令是有限制的,我的编程命令比较长,命令窗口中无法写下,请问如何解决? (1)3. 请问我在事件命令语言中编程同一时刻处理多项任务,会造成冲突吗? (1)4. 请问组态王能否显示十六进制的数据? (1)5. 请问如何编程来在组态王软件中生成一个随机的数据? (1)6. 请问如何编程能够方便地统计一项工序的运行时间?直接采用组态王的年月日时分秒做运算比较麻烦? (1)7. 能否在组态王画面上做一个按钮,实现键盘ctrl+shift切换输入法的功能?28. 在定义数据改变命令语言和事件命令语言时,能不能使用远程变量来作为触发脚本执行的条件? (2)9. 组态王能否实现在运行时调用一个函数,实现类似键盘的“Print Scr een SysRq”屏幕硬拷贝功能? (2)10. 用VarRefAddress()函数实现普通变量间的引用,引用的变量是否可以读写? (2)1. 我希望用户能在不退出组态王运行软件的情况下启动一个其他的软件做其他处理,如何实现?针对这种需求,组态王软件专门提供了一个StartApp()函数来实现此功能,具体请参照此函数的使用说明。

2. 我注意到组态王的命令语言窗口中能够写入的编程命令是有限制的,我的编程命令比较长,命令窗口中无法写下,请问如何解决?针对这种需求,组态王软件提供了自定义命令语言功能。

用户可以先将你的整个编程命令语言进行划分(比如按子功能块),然后每个子功能块都单独的在自定义命令语言中编写,最后在你要用到的命令语言窗口中象调用组态王提供的函数一样调用你自定义的函数来实现功能即可。

3. 请问我在事件命令语言中编程同一时刻处理多项任务,会造成冲突吗?同一时刻处理多项任务,会造成计算机软件在某一时刻负担过重,从而导致系统繁忙无法及时响应用户的操作。

解决组态王2020年报表不显示问题

解决组态王2020年报表不显示问题

解决组态王2020年报表不显示问题作者:陈力群来源:《西部论丛》2020年第07期摘要:本文主要介绍了解决解决供排水厂供水系统和DN1600引水工程系统报表不能显示问题的过程。

找到系统报表不能显示的原因,是PLC系统软件组态王的HTconverTime()时间函数本身的问题,针对问题原因通过系统版本升级、HTconverTime()时间函数重新定义和HTconverTime()时间函数的优化成功解决了问题。

关键词:组态王;HTconverTime()函数引言我厂使用的供排水厂供水系统和DN1600引水工程系统的日报表、月报表及自定义报表就2020年1月1日后不显示数据。

通过对软件的研究组态王6.55版本帮助的研究发现TConvertTime()时间函数说明中介绍函数使用范围1970-2019年。

1、解决HTconverTime()的问题组态王6.55版中报表处理机制,分为不同的文件,存储在硬盘上,然后通过格林威治时间,进行管理。

如果将原有的HTConvertTime()函数给替换掉,就能实现系统的正常运行。

以下是报表画面没有数据:1.1 PLC组态王升级版本解决时间函数问题升级组态王版本,经过研究和咨询组态王系统厂家亚控科技,确定组态王7.55sp1版解决了时间函数问题,可以提供升级服务,因为我厂的应用系统非亚控科技开发,不保证系统正常使用。

为了测试新版本是否能正常运行我厂的系统,先建立测试环境,安装组态王7.5sp1版,然后将我厂的系统了安装并接入工控网络环境进行测试,系统不能运行。

此方法不可行。

1.2重新编写时间函数解决系统时间函数问题重新定义时间函数来替代原来的时间函数来解决问题。

组态王提供自定义函数的功能,在系统中重新定义一个时间函数。

长整型long变量的取值范围是-2147483647~+2147483647,但HTConvertTime函数按照2019年1月1日0时0分0秒,转换出的最大值为1577721600,还未达到长整型变量的最大值,因此可以通过编写自定义函数,替换原来的时间函数。

1.1 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)?

1.1组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)?针对报表中的数据统计需求功能,组态王提供了sum(),average(),max(),min()函数来实现相应的需求。

如:在报表的某一单元格写入=sum('a1:a100')此功能为对从A1到A100的连续的单元格进行求和,其他的函数的应用,请参照组态王的函数使用手册。

1.2在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值?组态王6.53 2008年版本新增加了求历史库中某段时间的最大值、最小值、平均值的功能,使用此函数可以在组态王画面上得到指定变量在一段时间内的最大值、最小值和平均值。

函数使用方法如下:RealResult=GetHistMaxData(TagName,StartTime,EndTime); //获取某段时间的最大值RealResult=GetHistMinData(TagName,StartTime,EndTime); //获取某段时间的最小值RealResult=GetHistAveData(TagName,StartTime,EndTime); //获取某段时间的平均值参数描述:TagName:所要查询的变量的名称,类型为字符串型,即带引号。

StartTime:数据查询的开始时间,该时间是通过组态王HTConvertTime函数转化的以1969年12月31日16:00:00为基准的长整型数,所以用户在使用本函数之前,应先将查询起始时间转换为长整型数值。

EndTime:数据查询的结束时间,类型同StartTime。

返回值:返回一个实数值。

调用方法如下:long time1;long time2;time1=HTConvertTime(2008,10,17,17,07,35);time2=HTConvertTime(2008,10,17,17,09,35);\\本站点\最大值=GetHistMaxData("\\本站点\仿真变量",time1,time2);\\本站点\最小值=GetHistMinData("\\本站点\仿真变量",time1,time2);\\本站点\平均值=GetHistAveData("\\本站点\仿真变量",time1,time2);需要更新文件实现。

组态王使用常遇到问题

组态王使用常遇到问题组态王使用常遇到问题1 关于Microsoft Date and Time Picker控件,我按你说的做。

在大部分情况下可以查到数据了。

但是如果是小于10的时间数,就又不对了。

比如在“Microsoft Date and Time Picker"控件中输入08:15:10 则按钮下命令语言执行完报警查询起始时间=hour1+"时"+minute1+"分"+second1+"秒"; 后得到的是8时15分10秒而不是所需要的08时15分10秒。

少了一个0字就又查不到数据了。

请赐教,该如何解决之。

用IF语句做一下判断若小于10时在前面加“0”3 兰精灵关于设置模拟量参数输出不稳定的问题?急!关于设置模拟量参数输出不稳定的问题?我的一段程序使用6.02开发的前端使用的是三菱fx2n,通讯和采集数据都正常,但是我设置一个地址比如“d120”为最大值时,模拟量输出时是最大值但很快就掉到零,然后又恢复到最大值。

输出就不停这样变换,我要的是一个稳定输出最大值,未何会掉到零。

(去掉组态王后,只看plc输出是对的)。

最大值和最大原始值要一样最小值和最小原始值要一样请检查具体设置4 为什么VIEW的时候会提示:“创建协议组件失败”??我从别人这COPY了一个工程,但VIEW的时候会提示:“创建协议组件失败”是的工程不能在线运行!请问有什么方法可以解决这问题?!请安装组态王提供的硬件驱动程序5 怎么不能驱动呀[求助] 我问下啊,下载的驱动程序是哪个版本的呀?我现在用的是6.01版的,我怎么驱动不上啊如果驱动程序不分版本,请问怎么驱动呀?我是双机后,点搜索,可是怎么装不上呢?先把组态王提供的驱动程序包(至少应该包括以下几个文件:××.Dll,DEVLST.DAT,××.REG)拷入除组态王路径外的任一路径下安装驱动程序:“搜索亚控产品”选中搜索到的再安装驱动程序最好安装网站上提供的最新驱动6 如何使用KVDBGrid实现数据查询?当要查询数据库的AlarmDate,输入为:grid.Where=“AlarmDate=”+\\本站点\查询日期7 组态王6.03"创建协议组件失败",是何错误,如何处理!您查看一下您所用的设备的驱动程序是否安装,如果没有安装的话,可能会出现这种情况8 再问一个关于实时报表的问题我按着组态王提供的example自己做的例子,语句和例子里的差不多,但是在运行的时候实时报表无法显示当前时间段里的变量变化情况。

组态王常见问题的解决方法

-WORD格式--可编辑-组态王常见问题的解决方法组态王虽然国内用的很多,但他的问题也很多,有时候弄起来真的很麻烦,比如一个简单的开机自动运行都要自己设置,下面是我在网上查到的一些内容。

组态王使用常见问题1、变量设定中最大(小)值及最大(小)原始值的意义?[最大(小)值是变量在现实中表达的工程值(如:温度、压力等)的大小,而最大(小)原始值是采集设备中[寄存器] 数字量的最大(小)值(如板卡中的819-4095 等)。

一般对于板卡设备此值为物理量经AD 转换之后的值,如12BitAD 此值范围0~4096 、16BitAD 为0~65535,对于PLC 、智能仪表、变频器,其本身已将物理值转换为工程值所以此时最大(小).值与最大(小)原始值在设置时是一致的、为什么变量无法删除,如何删除变量?2在组态王中,只有未使用的变量才能被删除,因此在删除变量之前,必须去掉在画面[在工程浏览器中执行工具或命令语言、控件引用处,等处与之有关的连接,如果还是无法删除,更新变量计数命令,重新统计变量,在变量使用报告中可以查询变量是否还在某些地-删除未用变量将变量删除。

方使用,将其连接断开后,利用工具-、工程运行时,显示通讯协议组件失败?3、在开发状态下从新连接设备,如果还是有错2[设备驱动安装错误:1、安装新的驱动]误,请联系驱动部索要新的驱动程序、光盘上的典型案例无法打开?4将工程拷贝到硬盘上将属性改为存档即可[、如何在打开机器时自动进入组态王?5程序[将touchview 快捷方式拷贝到系统开始启动中、怎样把工程文件变小?6[可以删除*.AL2 (报警信息文件),*.REC (历史记录文件),*.111文件(*.pic文件的备份文件)的文件。

、如何在线增删用户及用户密码和权限?7函数(用户权限需大于[使用editusers() ])9008、在定义变量的基本属性时状态栏中的保存数值、保存参数是什么意思?[保存参数:在系统运行时,修改变量的域的值(可读可写型),系统自动保存这些参数值,系统退出后,其参数值不会发生变化。

组态王教学常见问题解答

数据词典常见问题解答北京亚控科技开展2009年7月目录1. 我注意到组态王软件是按软件点数来收费的,请问这个点数是如何计算的? (1)2. 我想删除一个指定的变量,但数据词典中该变量的删除选项灰色,不允许操作,怎么解决? (1)3. 我注意到组态王的数据词典里有一个系统自带的“$新报警〞变量,请问此变量是如何使用的? (1)4. 组态王的数据变量的采集频率采用什么规那么?有什么考前须知? (1)5. 在工程比拟庞大的情况下,请问我如何能快速的找到某个变量都在那里使用了呢? (2)6. 我注意到组态王的变量的属性页中有最大值最小值最大原始值最小原始值几个设定项,请问具体怎么来应用? (2)7. 在定义变量的根本属性时状态栏中的保存数值、保存参数是什么意思? (3)8. 我需要组态王能记下我运行状态下设定的参数,每次启动时都能按最后一次设定的参数运行,请问如何来做? (3)9. 我的现场设备的信号采集与变换是非线性的,请问在组态王中我需要如何设置? (3)10. 请问变量定义时变量的优先级、平安区是如何设置的?如何工作? (3)11. 请问组态王的报警优先级配置是如何设置的? (3)12. 请问变量定义中的生成事件如何使用? (4)13. 请问什么是内部局部变量?如何使用? (4)14. 组态王在运行系统中如何修改变量的原始值和工程值? (4)15. 如果设备中有的数据不需要按采集频率读取,按需要读取,在组态王中如何实现? (4)16. 在组态王运行环境中能够实现控制变量记录的功能? (5)17. 在组态王文本框中连接变量的时候,单击问号按钮,没有反响,弹不出变量列表框,为什么,应如何解决? (5)18. 在组态王数据词典中能否成批修改变量的根本属性? (6)19. 在组态王中能否实现对变量的操作记录下来? (6)20. 在组态王中如何实现变量的累加计算? (6)21. 组态王中的内存字符串变量无法保存到组态王历史数据库中,应如何解决? (6)22. 在组态王运行环境中通过变量域改变报警限值,但是回到开发环境中看到还是原来设置的值,应如何同步修改开发环境中的设定值? (7)23. 在删除未用变量列表里,我已经选择全部删除,为什么还有些未用变量没有被删除? (7)1. 我注意到组态王软件是按软件点数来收费的,请问这个点数是如何计算的?组态王软件是按点数收费的,这里讲的点数不是用户在工程设计时设计的采样点的数目,而是组态王数据词典中定义的所有变量〔不包括软件本身自带的21个变量〕,因为在组态王的数据词典中除了要定义采样点外,还需要定义一局部内存变量来实现软件的逻辑控制动画连接等,所以用户在软件选型时要留有一定的点数余量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于组态王HTconvertTime()函数的报表问题的解决方案
第一步:在命令语言里面,自定义函数命令里面新建一个函数。

第二步:函数声明里面选择LONG,后面的填NewHTconvertTime(long years,long months,long days,long hours,long minites,long seconds)。

第三步:在下面的函数编辑框下面粘贴上下面的代码,然后点击确定按钮。

long rest;
rest=0;
long yearsofdays;
long monthsofdays;
long ofdays;



return rest;
详细脚本可加991658512
第四步:新建完成之后将以前用到的HTconvertTime函数前面加个New即可,即NewHTconvertTime。

第五步:运行程序。

这里只是提供一种思路,函数脚本还有很多种写法。

当然最方便的还是问厂家索要补丁文件。

第二种思路参考:解决组态王HTConvertTime()函数到2020年报错的方法HTConvertTime()
此函数将指定的时间格式(年,月,日,时,分,秒)转换为以秒为单位的长整型数,转换的时间基准是UTC(格林尼治)1970年1月1日00:00:00。

例:北京为东八区,那么转换的时间基准为1970年1月1日8:00:00。

语法使用格式:
HTConvertTime(Year,Month,Day,Hour,Minute,Second);
参数:
Year:年,整型,此值必须介于1970和2019之间
Month:月,整型,此值必须介于1和12之间
Day:日,整型,此值必须介于1和31之间
Hour:小时,整型,此值必须介于0和23之间
Minute:分钟,整型,此值必须介于0和59之间
Second:秒,整型,此值必须介于0和59之间
返回值:整型
以上是函数帮助文档中的解释,年份在1970和2019之间。

第一步,新建自定义函数。

myHTConvertTime(long y,long m,long d,long h,long mi,long s)第二步,代码如下。

//
long var=0;//总天数
long m2=0;//2月份的天数
//不同的年份需要定义一下,2月份的天数,以此类推
if(y==2020)m2=29;
if(y>2023)var=var+365;
//按此规律依次添加更多的年份,一年天数和2月天数查万年历
//下面的代码固定,不用修改
if(m>1)var=var+31;
if(m>2)var=var+m2;
if(m>3)var=var+31;
if(m>4)var=var+30;
if(m>5)var=var+31;
if(m>6)var=var+30;
if(m>7)var=var+31;
if(m>8)var=var+31;
if(m>9)var=var+30;
if(m>10)var=var+31;
if(m>11)var=var+30;
第三步,确定完成。

第四部,引用就可以了。

图就不上了,其实仔细想想挺简单,发出来与大家一起分享。

相关文档
最新文档