当前位置:文档之家› Intouch报表

Intouch报表

在InTouch中如何使用excel做报表在InTouch中有很多做报表的方法,本文介绍在InTouch中如何使用excel 来做报表。

首先在Wonderware InTouch 中使用历史数据导出工具histdata , 将Wonderware InT ouch 生成的历史数据导出到文本文件excel中。

然后您可以在excel中通过函数对这些数据进行处理生成您需要的数据,如流量、压力、液位等。

再通过intouch提供的DDE协议将excel中的数据在intouch中您制作的那个表格里显示出来。

以下是用histdata将intouch历史数据导出到excel中的一些步骤:1、在Wonderware InTouch 中配置访问名2、使用INTOUCH向导,打开向导的“趋势”组。

选择histdata向导,粘贴到窗口。

双击给其指定一个“历史趋势”型标记名。

3、使用histdata向导时,会自动创建histdata标记名。

进入标记名字典可以看到一些以HDW开头的io型标记名,如HDWDataDir。

Wonderware InTouch 自动生成需要的标记名,这些标记名说明如下:HDWDATADIR 消息型历史数据文件的目录的路径名例如HDWDataDir = HTGetLogDirectory(); HDWDBDIR 消息型InTouch 标记名字典的目录的路径名例如HDWDBDir = InfoInTouchAppDir(); HDWSTARTDATE 消息型与$DateString相同格式的数据采样开始日期HDWSTARTTIME 消息型使用24 小时时钟的HH:MM:SS 格式的数据采样开始时间HDWDURATION 消息型数据时间长度(报表时间总长度),可以用星期,天时,分,秒,等来表示下面是有效的字符:w 星期,d 天,h 小时,m 分,s 秒。

允许使用小数值例如.5s表示500 毫秒,若只需一个样本请将DURATION 设为0 零HDWINTERVAL 消息型采样间隔的时间长度,可以用星期日小时分和秒来表示例如1W 表示一星期允许使用小数值例如用.25d来表示6小时,有效字符与HDDURATION 相同,注意DURATION 和INTERVAL 允许的最大时间长度均为6周,这适用于所有请求类型日、秒等,例如如果使用日则最大值为42,7 天x 6 周= 42HDWTAGS 消息型历史数据的标记名列表(报表中需要的标记名),以TagA,TagB,……TagZ 格式输入,此外采样日期和或时间可以通过使用内部系统标记名$Date 和$Time 来请求,例如"$Date,TagA,TagB" 或"$Time,TagA,TagB" 或"$Date,$Time,TagA,TagB"HDWTAGS1, TAGS2,.... 消息型HDWTAGS 字符串在WindowViewer中的长度可以为131 个字符在Excel 中的长度可以为255 个字符字符串,可以通过迭加标记名项目Tags1Tags2 等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+"TAGS1="ReactLevel,Temp,GasLevel,+"TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称,例如,D:\report.csvHDWWRITEFILE 整型当设置为1时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS 为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查错误。

例如:在intouch的脚本QuickFunctions中生成一个日期由datestr规定,包括三个标记名“SDA001MD_AI, SDA001MP_AI,SDA001MN_AI”的日班报表。

复制、修改一下就可以形成所需的报表。

QuickFunctions中脚本名称“ReportGenerate”HDWDBDir = InfoInT ouchAppDir();HDWDataDir="D:\Hisdata";HDWStartDate = datestr;HDWStartTime = "00:00:00";HDWDuration = "23h";HDWFilename="D:\report.csv";HDWTags = "$date,$time, SDA001MD_AI, SDA001MP_AI,+";HDWTags1 = " SDA001MN_AI, +";HDWInterval="1h";HDWWriteFile = 1;HDWWriteFile = HDWWriteFile ;上面Tag中,有些项需要在生成.CSV文件之前赋值,其它项一般在设计时已确定。

4、然后可以在intouch中建立这样一个窗口;您可以在这里设置以下信息:a、报表文件#:HDWFilename;b、历史数据库文件所在路径#:HDWDataDir;c、选定报表的日期#:datestr;d、错误信息#:HDWError,可以提示您操作是否成功;e、正在写入文件:“HDWWriteFile==1 OR reportstatus==1”,状态条红色,正在写入,状态条绿色,写入完成;f、历史数据库状态:HDWStatus == 1,状态条绿色,历史数据库状态正常,状态条红色,历史数据库状态不正常;g、“生成报表”按钮的脚本:IF HDWStatus ==1 THENIF HDWWriteFile ==0 THENstryear=StringMid(datestr,3,2);strmonth_temp=StringMid(datestr,6,2);strmonth_temp1=StringMid(strmonth_temp,2,1);IF StringTest(strmonth_temp1,2) ==1 THENstrmonth=strmonth_temp;ELSEstrmonth="0"+StringMid(datestr,6,1);ENDIF;strday_temp=StringRight(datestr,2);strday_temp1=StringLeft(strday_temp,1);IF StringTest(strday_temp1,2)==1 THENstrday=strday_temp;ELSEstrday="0"+StringRight(datestr,1);ENDIF;histfilename="d:\Hisdata\"+stryear+strmonth+strday+"00.lgh";IF InfoFile(histfilename,1,1)==1 THENCALL ReportGenerate();reportstatus=1;{StartApp "D:\report\GF.exe";}ELSECY_MESSAGEBOX="无当天历史记录,请选择其它日期!";Show"错误提示";ENDIF;ELSECY_MESSAGEBOX="正在生成报表数据,不允许此操作!";Show"错误提示";ENDIF;ELSECY_MESSAGEBOX= "历史数据库状态不正常,请重新启动程序!";Show"错误提示";ENDIF;h、“查看日报”按钮的脚本:IF InfoAppActive( InfoAppTitle( "excel" ) ) == 1 THENActivateApp InfoAppTitle( "excel" );ELSEIF HDWWriteFile == 0 AND reportstatus==0 THENIF InfoAppActive( InfoAppTitle( "cf" ) ) == 1 THENActivateApp InfoAppTitle( "cf" );ELSEStartApp "D:\report\CF.exe";ENDIF;ELSECY_MESSAGEBOX="正在生成报表中,不允许查看!";Show"错误提示";ENDIF;ENDIF;根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV文件(逗号分隔文件,可用EXCEL打开)。

这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。

所以需要另设计一个空的EXCEL报表,再将.CSV文件的数据复制到报表中,形成完整的报表。

下面是INTOUCH形成的.CSV文件的例子在将数据导入到excel以后,您就可以在excel中进行您需要的处理。

另外,您可以通过EXCEL的宏打印报表,可以完成手动打印和定时自动打印。

如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。

相关主题