Intouch报表-EXCEL报表制作教程
- 格式:doc
- 大小:1.60 MB
- 文档页数:13
用EXCEL制作打印报表1.原理首先根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV 文件(逗号分隔文件,可用EXCEL打开)。
这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。
所以需要另设计一个空的EXCEL报表模版,再将.CSV文件的数据复制到报表中,形成完整的报表。
通过INTOUCH可以自动产生.CSV,再通过EXCEL的宏程序打印报表,可以完成招呼打印和定时自动打印。
如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。
大致步骤如下:2.生成.CSV文件Step1: 自动生成需要的标记名在INTOUCH开发环境中,将向导库中\趋势\历史趋势向导(HistData)放入窗口。
这将自动形成若干标记名(Tag)。
有关标记名以HDW开头加上它们的DDE的ITEM命名。
这些标记名说明如下: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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+"TAGS1="ReactLevel,Temp,GasLevel,+"TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称例如,C:\INTOUCH\HDFILE.CSV HDWWRITEFILE 整型当设置为1 时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS 为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查状态和错误。
如何把i n t o u c h里的数据通过S Q L s e r v e r在E x c e l里实现报表功能一.需要安装的软件:Intouch、OPClink8.0、MicrosoftSQLServer2000、MicrosoftOfficeEXCEL、数据源ODBC软件(Windows自带)二.实现的步骤:1.建立Topic。
在下位机的相关软件里(DDE/OPC相关选项)建立一个Topic,用于和OPClink连接;如下图所示,给出了PLC建立的一个Topic:2.定义OPClink。
如图:建立一个与上位机通讯用的Topic(huanghua_opc),注意下图中的OPC[huanghua]就是在上图中建立的topic。
注意:OPClink建立的Topic(huanghua_opc)必须与intouch中的访问名一致3.定义ODBCDSN。
定义用户DSN,注意选择正确的SQLserver服务器与该服务器下定义的数据库。
4.在intouch中的SQL访问管理器中建立绑定列表。
如下图建立的列表“FIT_report”这个表给出了将要在报表里做记录显示的标记以及描述。
注意:这个表里的列名顺序必须和后面提及的数据库中建立的表格中的烈名顺序一致5.在SQLserver中建立数据库与表。
打开SQLserver中的“企业管理器”,在数据库中新建一个数据库“new”,在“表”中新建一个表注意上表中的列名必须和intouch绑定列表“FIT_report”里的列名顺序一致。
完成后保存,会提示给这个表提供一个表名。
6.在intouch中做一个报表窗口。
建一个报表窗口,如下图所示,做三个按钮:①“产生报表”脚本:鼠标左键/键按下时:ResultCode=SQLConnect(ConnectionId,"DSN=TEST1");ResultCode=SQLInsert(ConnectionId,"report","FIT_repor t");鼠标左键/键放开时:ResultCode=SQLDisconnect(ConnectionId);②“消除数据库”脚本:鼠标左键/键按下时:ResultCode=SQLConnect(ConnectionId,"DSN=TEST1");ResultCode=SQLClearTable(ConnectionId,"report");鼠标左键/键放开时:ResultCode=SQLDisconnect(ConnectionId);③“流量日报表”脚本:鼠标左键/键按下时:DIR_REPORT="C:\ProgramFiles\MicrosoftOffice\OFFICE11\Excel.exe";DIR_REPORT=DIR_REPORT+InfoInTouchAppDir();DIR_REPORT=DIR_REPORT+"\流量日报表.xls";StartAppDIR_REPORT;鼠标左键/键放开时:ResultCode=SQLDisconnect(ConnectionId);此外,如果定义数据为周期采集的话,应该在intouch的“数据改变”中注入控制脚本ResultCode=SQLConnect(ConnectionId,"DSN=TEST1");ResultCode=SQLInsert(ConnectionId,"report","FIT_report");ResultCode=SQLDisconnect(ConnectionId);如下图所示:至此,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文件的命令,最后两个用于检查错误。
HISTDATA在InTouch中如何使用excel做报表在InTouch中有很多做报表的方法,本文介绍在InTouch中如何使用excel来做报表。
首先在Wonderware InTouch 中使用历史数据导出工具histdata , 将Wonderware InTouch 生成的历史数据导出到文本文件excel中。
然后您可以在excel中通过函数对这些数据进行处理生成您需要的数据,如流量、压力、液位等。
再通过intouch提供的DDE协议将excel 中的数据在intouch中您制作的那个表格里显示出来。
以下是用histdata将intouch历史数据导出到excel中的一些步骤:1、在Wonderware InTouch 中配置访问名2、使用INTOUCH向导,打开向导的“趋势”组。
选择histdata 向导,粘贴到窗口。
双击给其指定一个“历史趋势”型标记名。
3、使用histdata向导时,会自动创建histdata标记名。
进入标记名字典可以看到一些以HDW 开头的io型标记名,如HDWDataDir。
Wonderware InT ouch 自动生成需要的标记名,这些标记名说明如下: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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2 等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+"TAGS1="ReactLevel,Temp,GasLevel,+" TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称,例如,D:\report.csv HDWWRITEFILE 整型当设置为1时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查错误。
Intouch报表作法(access版)一.将电脑的时间格式设为如下二.如果电脑没有dtpicker控件,可将mscomct2.ocx控件拷贝到“C:\WINDOWS\system32”目录下,在开始-运行中输入“mscomct2.ocx”进行注册,即可用。
(注册方法:regsvr32 mscomct2.ocx)。
三.做excel报表模板REPORT.xls,如下1.做报表模板,设置每一列的数据格式(字体和小数位数等)。
2.在“工具\宏\visual basic编辑器”进入VB环境插入窗体如下图如果工具箱没有没有dtpicker控件,在工具箱空白处鼠标右键-附件控件中找。
3.“工具\控件”菜单下添加如下引用。
四.Intouch安装时选上intouch自带的SQL安装包。
1.在intouch“特别\SQL访问管理器\绑定列表(B)”下添加列表(可见多个列表)。
绑定列表名为REPORT1。
如下图:2.在“控制面板”-管理工具-数据源(ODBC)下“系统DSN选项卡”中创建数据源。
本例中数据源名为INTOUCHDSN,“创建”-保存在某一目录下。
(本例中在“E:\REPORT\TEMPLAT”目录下,文件名为MYREPORT.mdb)3.打开MYREPORT.mdb,第一项“使用设计器创建表”,分别配置字段(字段名和intouch绑定列表中的“列名”对应,注意大小写),配置字段的数据类型(数字),属性表中配置字段大小为“小数”或“双精度”。
保存为TABLE1.4.INTOUCH-“应用程序脚本”中输入如下函数STA TUS=SQLConnect( ConnectionID, "Provider=MSDASQL;DSN=INTOUCHDSN;UID= ;PWD= " );INTOUCH-“数据改变脚本”中输入如下函数STA TUS=SQLInsert( ConnectionID,"TABLE1","REPORT1" );STA TUS=0表示没有错误。
用INTOUCH向EXCEL中写数据,然后在EXCEL中用VBA对数据进行处理自动生成日报表下面是INTOUCH中条件程序,条件为:$minute==2(整点后第2分钟写数据):m1=StringFromIntg( $Hour, 10 )+",";m1=m1+StringFromReal(PT,2,"f" )+",";m1=m1+StringFromReal(NTU,2,"f" )+",";m1=m1+StringFromReal(CHL,2,"F")+",";m1=m1+StringFromReal(FLOW,0,"F")+",";IF pump_state1.02 THEN m1=m1+"工频运行"+","; ENDIF;IF pump_state1.03 THEN m1=m1+"变频运行"+","; ENDIF;IF pump_state1.02==0 AND pump_state1.03==0 THEN m1=m1+"停机"+","; ENDIF;IF pump_state1.07 THEN m1=m1+"工频运行"+","; ENDIF;IF pump_state1.08 THEN m1=m1+"变频运行"+","; ENDIF;IF pump_state1.07==0 AND pump_state1.08==0 THEN m1=m1+"停机"+","; ENDIF;IF pump_state1.12 THEN m1=m1+"工频运行"+","; ENDIF;IF pump_state1.13 THEN m1=m1+"变频运行"+","; ENDIF;IF pump_state1.12==0 AND pump_state1.13==0 THEN m1=m1+"停机"+","; ENDIF;IF pump_state2.02 THEN m1=m1+"工频运行"+","; ENDIF;IF pump_state2.03 THEN m1=m1+"变频运行"+","; ENDIF;IF pump_state2.02==0 AND pump_state2.03==0 THEN m1=m1+"停机"+","; ENDIF;m1=m1+StringFromReal(HZ,0,"F")+",";m1=m1+StringFromReal(LT,2,"f" )+",";IF mw1_00.15 THEN m1=m1+"运行"+",";ELSE m1=m1+"停机"+",";ENDIF;IF mw1_01.15 THEN m1=m1+"运行"+",";ELSE m1=m1+"停机"+",";ENDIF;m1=m1+StringFromReal(chol1_flow,2,"f")+",";m1=m1+StringFromReal(chol2_flow,2,"f")+",";m1=m1+StringFromReal(chol1_wei,0,"f")+",";m1=m1+StringFromReal(chol2_wei,0,"f")+",";m1=m1+StringFromReal(chem1_lev,2,"f")+",";m1=m1+StringFromReal(chem2_lev,2,"f")+",";m1=m1+StringFromReal(chem1_freq,0,"f")+",";m1=m1+StringFromReal(chem2_freq,0,"f")+",";m1=m1+StringFromReal(chem_flow,0,"f")+",";IF mw1_00.02 THEN m1=m1+"运行"+",";ELSE m1=m1+"停机"+",";ENDIF;IF mw1_00.06 THEN m1=m1+"运行"+",";ELSE m1=m1+"停机"+",";ENDIF;IF mw1_00.10 THEN m1=m1+"运行"+",";ELSE m1=m1+"停机"+",";ENDIF; FileWriteMessage( "e:\shiye\report\day\day.csv",-1,m1,1 );m1是内存消息型变量。
在InTouch中如何使用excel做报表在InTouch中有很多做报表的方法,本文介绍在InTouch中如何使用excel 来做报表。
首先在Wonderware InTouch 中使用历史数据导出工具histdata , 将Wonderware InTouch 生成的历史数据导出到文本文件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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2 等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,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文件的命令,最后两个用于检查错误。
用EXCEL打印报表1.原理首先根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV文件(逗号分隔文件,可用EXCEL打开)。
这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。
所以需要另设计一个空的EXCEL报表模版,再将.CSV文件的数据复制到报表中,形成完整的报表。
通过INTOUCH可以自动产生.CSV,再通过EXCEL的宏程序打印报表,可以完成招呼打印和定时自动打印。
如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。
大致步骤如下:2.生成.CSV文件Step1: 自动生成需要的标记名在INTOUCH开发环境中,将向导库中\趋势\历史趋势向导(HistData)放入窗口。
这将自动形成若干标记名(Tag)。
有关标记名以HDW开头加上它们的DDE的ITEM命名。
这些标记名说明如下: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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+"TAGS1="ReactLevel,Temp,GasLevel,+"TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称例如,C:\INTOUCH\HDFILE.CSV HDWWRITEFILE 整型当设置为1 时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS 为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查状态和错误。
excel制作报表的方法
Excel制作报表的方法如下:
1. 设计报表的呈现内容和形式。
需要呈现哪些数据,以什么形式呈现,如表格或图表,以及是否需要插入图像等。
2. 设计报表的逻辑。
比如如何实现自动化,需要用到哪些函数等。
3. 建立数据源表。
添加数据源,比如销售额、销售量、订单数、同比和环比等数据。
4. 建立数据转化表。
即动态变化的表格,可以使用辅助列等方式来建立。
5. 按照设计好的格式,逐个添加报表元素。
6. 调整格式。
查看最终的形式,数据源表和数据转化表是否符合要求,是否需要调整格式。
7. 保存文件并打印预览。
完成以上步骤后,就可以保存文件并预览打印效果了。
此外,还可以使用Excel的图表功能来辅助报表的制作,如散点图、柱状图、饼图等。
总之,通过以上步骤,就可以制作出精美的Excel报表了。
intouch报表简介intouch报表是一种数据可视化工具,用于呈现和分析数据。
通过使用intouch报表,用户可以将复杂的数据转化为易于理解和决策的报表形式。
该文档将介绍intouch报表的基本概念、使用方法和常见功能。
概念在开始使用intouch报表之前,让我们先了解一些基本概念:•数据源:intouch报表需要从一个或多个数据源中获取数据。
数据源可以是数据库、Excel文件或其他支持的数据源。
•数据集:数据集是指从数据源中检索的一组数据。
数据集通常包含多个列和行,每列代表一项数据,而每行代表一个数据记录。
•报表:报表是数据集的可视化呈现形式。
通过使用图表、表格、图像和其他可视化工具,报表可以帮助用户更好地理解和分析数据。
使用方法下面是使用intouch报表的一般步骤:1.连接数据源:首先,需要连接到所需的数据源。
这可以通过选择合适的数据源类型和提供必要的连接信息来完成。
2.创建数据集:一旦连接到数据源,就可以创建数据集。
在创建数据集时,您可以选择所需的列和行,并可以通过筛选器和排序规则来定义数据的范围。
3.设计报表:在创建数据集后,可以开始设计报表。
intouch报表提供了丰富的报表设计工具,包括各种图表和图像,以及对数据进行格式化和布局的选项。
4.编辑报表:在设计报表后,您可以随时编辑报表。
您可以更改图表类型、添加新的图表元素、调整布局和样式等。
5.保存和导出报表:一旦完成报表设计,您可以保存报表并导出为各种格式,如PDF、PNG和Excel等。
常见功能intouch报表提供了许多强大的功能,使用户能够更好地分析和展示数据。
下面介绍一些常见功能:•图表类型:intouch报表支持各种图表类型,如柱状图、饼图、折线图、散点图等。
根据数据类型和需求,可以选择合适的图表类型来展示数据。
•筛选器:intouch报表允许用户使用筛选器来过滤数据。
通过设置合适的筛选条件,可以选择性地展示特定数据。
Excel使用技巧如何使用数据表制作交互式报表Excel使用技巧:如何使用数据表制作交互式报表Excel是一款强大的电子表格软件,广泛应用于办公、数据分析等领域。
其中,数据表的制作是Excel的重要功能之一。
本文将介绍如何使用Excel的数据表功能来制作交互式报表。
一、数据准备在使用Excel制作交互式报表之前,首先需要准备好所需的数据。
这包括收集、整理以及录入数据等环节。
确保数据的准确性和完整性对于后续的报表制作至关重要。
二、创建数据表1. 打开Excel软件,在工作簿中选择一个工作表作为数据表的基础。
2. 将准备好的数据按照一定的规则输入到Excel工作表中。
确保数据表的结构清晰、有序。
3. 在数据表的第一行中,为每一列设置合适的标题,以便于后续的数据分析和报表展示。
三、设置数据表样式为了让报表更加美观,可以设置数据表的样式。
Excel提供了丰富的样式和格式选项,可以根据需要自定义数据表的外观。
1. 选中数据表中的一部分或全部数据。
2. 在Excel的菜单栏中,找到“开始”选项卡,进入“样式”组。
3. 在样式组中,可以选择不同的样式、颜色和字体,也可以设置边框、背景色等样式选项。
四、使用数据透视表进行数据分析数据透视表是Excel中用于数据分析的重要工具,可以对大量的数据进行透视分析,从而生成具有交互性的报表。
1. 在Excel工作簿中选中需要进行数据分析的数据表区域。
2. 在Excel的菜单栏中,找到“插入”选项卡,进入“表格”组。
3. 在表格组中,选择“数据透视表”选项,弹出“数据透视表和数据透视图向导”。
4. 在向导中,可以选择数据透视表的源数据和布局。
根据需要,可以选择特定字段作为行、列和值,生成适合的报表布局。
5. 根据需要可以对数据透视表进行设置,如排序、筛选、样式调整等。
五、制作交互式报表通过设置数据透视表之后,可以制作具有交互性的报表。
交互式报表可以根据用户的需要进行数据筛选、排序和切换,提供更灵活的数据展示方式。
如何通过INTOUCH组态软件做EXCEL报表(含代码)报表功能是自控系统经常用的一个功能,用过报表功能,我们能用表格的方式,查询到历史数据,也能通过报表分析、统计,并根据报表调整工艺配方等等。
以往组态软件,对报表支持力度上都不是很友好,数据不能自定义的编写,或者格式不是特别美观,又或者不能直接打印报表等等诸多因素。
我们萌发了,能否利用EXCEL强大的报表做出我们需要的表格呢。
经过摸索,我们顺利做出了EXCEL报表。
01如何将intouch数据插入到SQL数据库1:首先先在SQL数据库建立一张表,这里我们使用SQL2008版本,其他版本操作雷同。
建立过程不详细描述,如图所示,我们新建了一张表,并且完成表的设计,新增了列名和数据类型。
2:在SQL server配置管理器中开启TCP/IP,开启后,方便我们同过IP进行读写数据库,否则只能本地读数据库读写。
3:通过INTOUCH软件新增标签名,确保标签名能和PLC通讯成功。
4:在INTOUCH的SQL访问管理器中建立绑定列表。
5:在绑定列表中配置字段信息,INTOUCH的绑定列表列名和SQL数据库中的列名,必须一致(一字不差),否则无法插入数据库。
6:在INTOUCH中新建一个插入数据库的代码7:运行INTOUCH,触发按钮。
并且熟悉数据库就能看到数据插入成功了。
另外,如果需要每个整点插入数据库,只需要在INTOUCH条件中,插入相应代码就行了。
我这里通过,每个整点分钟为0的时候,插入数据库一次。
个别业主需要一天24小时的数据,我们这里,再23:59分的时候再插入一次数据。
02如何通过EXCEL表格查询到SQL数据库如图所示,可以点击日期控件,可以刷新当前日期所对应的数据内容到EXCEL中。
本文安装EXCEL2013为例,具体步骤如下:1:先安装日期控件,我们这里用的是的samradapps_datepicker。
官方地址 /datepicker/安装方法把下载和解压缩后得到的.xlam文件,放到Excel安装目录下的xlstart文件夹。
在InTouch中如何使用excel做报表在InTouch中有很多做报表的方法,本文介绍在InTouch中如何使用excel来做报表。
首先在Wonderware InTouch 中使用历史数据导出工具histdata , 将Wonderware InTouch 生成的历史数据导出到文本文件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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2 等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+" TAGS1="ReactLevel,Temp,GasLevel,+" TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称,例如,D:\report.csv HDWWRITEFILE 整型当设置为1时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查错误。
2021年2月基于的报表系统的实现张文卫(新余钢铁集团有限公司自动化部,江西新余338000)【摘要】第二炼钢厂转炉区域能源介质多,并且需要进行抄表计量,抄表内容较多,每次抄表时都要人工将这些数字一个一个输入表格。
这个过程不仅要花费较长时间,而且由于抄表人员的失误或疏忽大意造成数据出错的可能。
为了解决这个问题,本文介绍了如何利用InTouch 与Microsoft Excel 建立链接,将能源计量数据一键记录并保存至本地Microsoft Excel 表格中。
【关键词】InTouch ;DDE 协议;Excel ;报表【中图分类号】TP3【文献标识码】A 【文章编号】1006-4222(2021)02-0283-020前言InTouch 是由Wonderware 公司开发的面向工业控制的人机对话界面(HMI )开发工具,新钢公司第二炼钢厂转炉炼钢控制中就广泛使用了这一软件。
InTouch 支持动态数据交换(DDE ),能够用作DDE 和SuiteLink 通信协议的客户和服务器,通过DDE 和SuiteLink 协议,InTouch 能与其他Windows 程序、Wonderware I/O 服务器和第三方I/O 服务器程序实现通信。
InTouch 中制作报表有多种方法,本文是利用Excel 通过InTouch 的DDE 接口与InTouch 进行数据通信,从而实现一键记录能源计量数据,避免造成各种人为错误导致炼钢成本提高的可能。
1InTouch 与Excel 的通讯方法(1)在本地计算机上创建一个Excel 表格。
如在D 盘新建一个名为zzz.xlsx 的Excel 表格。
(2)配置InTouch 访问名。
运行InTouch 软件,新建一个项目,打开该项目配置访问名,访问名名称可自己定义(如Ex 原cel ),应用程序名输入Excel ,主题名输入新建好的Excel 表格的完整路径D :\zzz.xlsx ,通信协议选择DDE 接口(见图1)。
WINCC INTOUCH Excel 报表制作流程南京疆拓自动化科技有限公司前言:主要介绍Intouch10和Wincc6制作Excel报表的流程,分为2部分,一部分是数据录入,一部分是数据查询。
数据录入根据使用的软件不同,录入方法也不同,而查询可以用同一个模板。
数据库:前提条件:假设我们需要录入三个变量 A B C数据库准备:使用SQLServer,服务器名字如下图所示:打开数据库管理器,在Master数据库里面,新建一个表格,第一个用于存储日期,例如(2013-03-02 11:23:50),后面三个字段用于存储变量的值,变量多就增加相应的字段。
数据表存储为DongTRU:至此,数据库已经创建完毕。
Intouch数据录入。
1)首先建立三个变量A B C的标签。
(这里以内部变量代替)A B C完全一致。
再建立一个标签riqi用于存储当前的日期数据(Intouch日期和时间变量是分开的),数据类型为内存消息型。
添加一个数据改变程序,变量为$Second,目的是每秒钟获取一个当前的系统时间,如下图:变量处理完毕后,就需要建立绑定列表了,将Intouch的变量标签和数据库表格里面的字段一一对应起来。
2)创建绑定列表这样就创建了一个绑定列表LIST。
3)连接数据库,进行数据的插入首先在应用程序脚本里面(启动)写脚本,连接数据库ResultCode=SQLConnect(ConnectionID,"driver=sqlserver;server=PC-20121027HGMX\WINCC;DATABASE=Master;uid=haha;pwd=haha"); 代码解释如下:ResultCode:内存整形变量,查看连接成功与否;ConnectionID:连接ID,系统会为每个连接自动分配一个ID。
SQLConnect:是Intouch提供的连接数据库的函数。
PC-20121027HGMX\WINCC:SQLSERVER服务器的名字。
用EXCEL实现INTOUCH报表功能2008NO.31甄而而dTechnologyInnovationHeraLd用EXCEL实现INTOUCH报表功能郭棣刘晓军周铭(克拉玛依华澳石油化工进出口有限公司新疆克拉玛依834000)工程技术摘要:本文介绍了如何利用Excel通过DDE接口与InTouch进行数据通讯,/tL~InTouch定时打开和关闭Excel,利用Excel中的宏功能生成报表,制作过程简单灵活.-关键词:InTouchDDEExcel宏报表中图分类号:TP3文献标识码:A文章编号:1674—098X(2008)ll(a)-OlO0—02 1引言Intouch是工业过程控制中广泛使用的组态软件,它是由美国WONDERWARE公司开发的面向工业控制的人一机对话界面(HMI)开发工具,,曾连续多年被国际过程控制协会评为最佳软件.INTOUCH提供了组态环境WindowMaker和运行环境WindowViewer.在组态环境下定制系统,进行数据库组态,画面组态,定义系统的数据采集和控制任务.在运行环境中通过执行InTouchQuickScripts来实施这些任务,进行报警和运行历史数据的记录和报告,并将数据实时传输给本站的其它任务和网上其它工作站.InTouch支持动态数据交换(DDE),能够用作DDE和SuiteLink 通讯协议的客户和服务器.通过DDE和SuiteLink,InTouch能与其他Windows程序,WonderwareI/O服务器和第三方I/0服务器程序实现通讯.在Intouch中制作报表可以有多种方法,本文介绍的是使用Excel通过DDE接I:1与InTouch进行数据交换,利用Excel的宏以实现报表功能.实现过程简单,报表样式可以根据自己的需要灵活设计.2DDE接口Intouch组态软件支持DDE接口,提供DDE动态数据交换(DDEClient)模块用于与其它应用软件之闻进行实时数据和历史数据交换;通过DDEServer实现实时数据库与报表软件之间的数据交换.DDE是Windows环境下应用程序之间使用的数据交换协议.Windows提供DDE通信管理库函数,应用程序调用这些库函数,请求DDE通信服务.应用程序之间进行数据交换叫做”对话”,发起对话的一端叫做”客户”,而对客户做响应的一端叫做”服务器.建立DDE对话的三大要素是:a.应用名(Applications).DDE对话应用名,如TCApp.Windows的DDEML管理许多DDE对话,用应用名来区别.b.对话主题(Topics):服务器所支持的对话话题.一个DDE应用名下可以有多个对话话题,用于区别对话的类型.c.项目(hems):对话话题下的数据项名.服务器发送数据到客户:在数据库的组态中,定义输入数据点的类型和设备地址,驱动类型是DDE,这样当Intouch软件转入运行方式时,就会向DDEML申请服务,与服务器TCApp建立连接,一个DDE会话活动开始了.会话连接建立后,每当有数据变化,服务器TCApp就会将数据发送给客户.客户发送数据到服务器:在数据库的组态中,定义输出数据点的类型和设备地址,驱动类型是DDE,这样当Intouch软件转入运行方式时,就会向DDEML申请服务,与服务器TCApp建立连接.:DDE会话活动开始后,每当有输出点数据有变化,Intouch就会将输出点数据的值发送给服务器.以上两种方式都是热链接(HotLink).在Intouch程序中有一个DDEc~entTasR,我们可以用它来监视和管理DDE客户任务,查看是否有错误发生.还可以用它来改变与服表1日报表100科技创新导报ScienceandTechnologyInnovationHerald 务器TCApp的连接方式,建立一个冷链接,每隔一定时间向服务器发送一次数据请求.3EXCEL的宏功能EXCEL提供一个VisualBasic编辑器,打开Visua1.Basic编辑器,其中有一工程属性窗口,点击右键菜单的”插入模块”,则增加一个“模块1”,在此模块中可以运用VisualBasic语言编写函数和过程并称之为宏.其中,EXCEL有两个自动宏:一个是启动宏(SubAutoOpen()),另一个是关闭宏(SubAuto—Close()).它们的特性是:当用EXCEL打开含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏.但是通过VB的自动化功能来调用EXcEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros(xlAutoOpen)~xlBook.RunAutoMacros(xiAutoClose)来运行启动宏和关闭宏.4InTouch与Excel数据通讯方法4.IInTouch访问Excel(1)配置Intouch访问名,应用程序名输入excel,主题名输入excel的完整路径,比如D: \1.xls,如果要使用sheet2表里的数据,那么主题名就输入D:\1.xls\sheet2.(2)建立标记名的时候,项目选择阿《才的访,比如IO 问名,注意标记名类型必须是IO型实型,IO离散等.项目名输入rlcl,这表示第一列第一行,也就是A1,如果输入r2cl那么就是第一行第二列,也就是A2,依次类推.(3)在与excel进行数据交换得时候必须得先打开对应的excel表(也就是DDE的服务端),否则会提示无法打开项目名”EXcEL.4.2Excel访问InToueh在表格中输入==viewltagname!tag“view”是应用程序的名称;”t agname是项目名;”tag是InTouch中实际的组态工位名.5报表的制作下面以一个日报表为例介绍制作一个日报表的完整过程及EXCEL中函数的写法.要求每小时记录一次数据,每天打印一次,打印时间是00:00.工程技术Q:i! ScienceandTechnologyInnovationHerald 在InTouch中编写脚本定时打开和关闭Excel,利用Excel中的宏功能,运用Visual Basic语言编写相应的函数,可以实现定时从InT0UCh中取数据,以及数据的记录,打印,保存等功能,报表的样式可以按照实际需求进行灵活的设计.具体制作报表的过程如表l.5.1在InTouch中定时打开和关闭Excel打开Excel:条件:$TimeString==“hh:mm:ss”语句:StartAPPd,Programfiles\office2003\officel1\Excel”;关闭Excel:,条件:$TimeString语句:wwcontrol(InfoAppTnle (“Excel”),”Close”);5.2Excel打开后自动打开指定的报表模板有两个方法:(1)利用宏功能:SubWorkbook—Open() OnErrorResumeNextWorkbooks.OpenFfleName:D:\报表\Example.xls”EndSub在Excel启动宏中执行Workbook_Open 函数即可打开指定文件.(2)把指定的模板文件放在:\}$}}\MiCrosoftOfficeXOffice\XLStart的目录下.模板文件需要提前制作好,主要是根据实际需求设计报表的样式.5.3Excel获取InTouch的数据在第4部分中讲述了Excel访问InTouch 数据的方法,下面是具体的程序语句: (1)在启动宏中进行时间的判断: Subauto_open()Application.OnTimeTimeValue (“hh:mm:ss”),”write” Application.OnTimeTimeValue(….hh:mm:SS”),”write_value” EndSub(2)满足条件后首先执行从InTouch中读取数据的宏”write”: Subwrite()Application.Range(“ptacel”1=“-viewltagname[tag1”Application.Range(“place2”)“=viewltagname!tag2”EndSub“placel,place2”为工作表中要写入”B8,C8”,”tag1, 表达式的位置,如tag2”为InTouch中实际组态的工位号,如Til01,PI102.(3)读出数据后再将数值写入表格,保存之后关闭:Subwrite_value()Application.Range(,?placelI)=Application.Range(…placell11.Value Application.Range(“place2”)=Application.Range(“place2??).Value ActiveWorkbook.Save ActiveWorkbook.CloseEndSub5.4打印并保存取得一天24个小时的数据后打印报表,然后将报表保存到指定的报表文件存储目录, 文件以当前日期命名,之后清空模板文件中的内容并关闭Excel.(1)打印报表在启动宏中对时间进行判断: Subauto—open()Application.OnTimeTimeValue(“00:0l:o0”),”print—Report” EndSub满足条件后执行打印宏:SubPrint—Report()ActiveW0rkb00k.ActiveSheet.PrintOutCopies:1,Collate: =TrueEndSub(2)将文件保存到指定的历史报表存储目录,此处为”D:\报表”SubSave—Report()0nErrorGoTolir伦27Dimfj1e_nameAsStringfile_name=Range(“A32.1ActiveWorkbook.SaveAsFflename:=file_name ActiveWOrkbOOk.CloseSaveChanges:=TrueIfError=TrueThenline27:msg=MsgBox(“!请先建立报表保存路径”,vbInformation,”目标路径不存在”)?EndIfEndSub其中”A32”中放置的是当前文件存放的路径及文件名表达式,用以取得当前文件的完整保存路径及文件名,文件名以当天的日期命名:=\”&TEXT(TODAY “D:\报表0,”YYYYMMDD”)&”.XLS”(3)历史报表文件保存操作完成后再打开模板文件,并清空模板文件中的数据,然后关闭文件.Workbooks.OpenFfleName:=“D:\报表\Exampl e.xls”Range(“placex:placey”).Select Selection.ClearContents ActiveWorkbook.SaveActiveWilldow.CloseActiveWindow.Close“placex:placey”为选定的要清空数据的单元格范围.6在InTouch中关闭Excel至此,一个完整的报表制作过程即结束了.如果要对InTouch中的历史数据进行访问,可以借助于InTouch提供的历史数据管理程序Hisdata,下面对其的使用作一个简单介绍.Hisdata能够作为InTouch日志文件(.1gh)的DDE服务程序,从历史数据中检索出需要的历史数据,供其内部的数据库使用或转换成逗号分隔变量(.csv)文件,供Excel或其它程序使用.Hisdata有它自己的内部数据库,其内部数据库的项是用来指定要访问的历史数据起始时间,延续及采样间隔等,数据库结构如下图所示:在应用程序中,建立一个以Hisdata为服务器的DDE类型报表访问名Report,分别以Hisdata数据库字段名建立相应的DDE访问项(数据类型相同).则在WindowsViewer运行过程中,当应用程序向服务器(Hisdata)发送请求数据指令时,Hisdata会根据用户所提供的数据库字段值从历史数据库的相应文件中提取满足要求的数据.根据本文介绍的方法制作报表不需要借助专用的报表及趋势分析软件,制作过程简单灵活,已在某油田公司天然气站进行了实际的应用.参考文献【1】Wonderware公司.InTouch用户指南【2]Wonderware公司.NetDDEforWin—dowsuser?sGuide[3](美)沃肯巴赫.Excel2003高级VBA编程宝典.电子工业出版社,2005.10.科技创新导报ScienceandTechnologyInnovationHeraldi01。
本教程的目的:定时(时间可以自由设置)读取intouch上的数据并导出到EXCEL表格中。
导出后的表格见下图(小编懒省事随便弄了一下,可以根据需要设置):第一步开始:安装SQL2000。
安装C:\SQLEVAL autorun.exe安装SQL server2000组件安装数据库服务器本地计算机点下一步,如果出现要重启电脑,去注册表regedit。
删除下面的选项。
继续安装SQL2000创建新的SQL server服务器和客户端工具使用本地系统账户混合模式密码123456下一步完成安装。
在程序中打开Microsoft SQL Server企业管理器在G盘建立文件夹SQLData新建数据库:名称intouch,分别在数据文件和事务日志中位置找到刚建立的SQLData文件。
Intouch中表新建表,第一行右键设置主键,其它如下。
点击保存表命名为Report。
打开intouch、安装包。
将安装在本地硬盘驱动上INTOUCH表里面都有才行。
新建ConnectString脚本-应用程序ConnectString="Provider=SQLOLEDB.1;User ID=sa; Password=123456;Initial Catalog=Intouch;Data Source=.;"; ResultCode=SQLConnect(ConnectionId,ConnectString);在关闭时:附件里面可以找到下面函数SQLDisconnect(ConnectionId);插入-标记名-$MinuteResultCode=SQLInsert(ConnectionId,"Report","Report"); ErrorMsg=SQLErrorMsg(ResultCode);运行INTOUCH安装Microsoft Office mscomct2控件包把MSCOMCT2.OCX复制到C:\WINDOWS\system32文件里面运行-cmd-regsvr32MSCOMCT2.OCX在INTOUCH中找到可用的ACtivex控件中:如下控件。
用EXCEL打印报表1.原理首先根据报表要求,用INTOUCH的附件HISTDATA软件形成一个有规定数据的.CSV 文件(逗号分隔文件,可用EXCEL打开)。
这个.CSV文件是英文的,不符合一般报表的要求,只能提供数据。
所以需要另设计一个空的EXCEL报表模版,再将.CSV文件的数据复制到报表中,形成完整的报表。
通过INTOUCH可以自动产生.CSV,再通过EXCEL的宏程序打印报表,可以完成招呼打印和定时自动打印。
如果有多个报表,需要形成多个.CSV文件和设计多个EXCEL报表。
大致步骤如下:2.生成.CSV文件Step1: 自动生成需要的标记名在INTOUCH开发环境中,将向导库中\趋势\历史趋势向导(HistData)放入窗口。
这将自动形成若干标记名(Tag)。
有关标记名以HDW开头加上它们的DDE的ITEM命名。
这些标记名说明如下: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 个字符字符串,可以通过迭加标记名项目Tags1 Tags2等来延长以适应更长字符串的要求,如果标记名需附加额外的标记名文本请在字符串末输入一个加号(+)例如,TAGS="$Date,ProdLevel,ProdTemp,+"TAGS1="ReactLevel,Temp,GasLevel,+"TAGS2="MotorStatus"注意不允许使用重复标记名,每个标记字符串的最大长度为512字节HDWFILENAME 消息型规定生成的.CSV文件的路径和名称例如,C:\INTOUCH\HDFILE.CSV HDWWRITEFILE 整型当设置为1 时HistData 会将请求数据写入由FILENAME 项目名指定的文件,当文件更新完成后WRITEFILE 会自动重置为0零STATUS 离散型显示最后一次操作的状态1 表示成功,0 零表示出错ERROR 消息型包含上次错误说明的字符串,如STATUS 为1 则显示无,如STATUS 为0 零则显示错误消息字符串前9个TAG规定数据的内容,HDWWRITEFILE=1是写.CSV文件的命令,最后两个用于检查状态和错误。
写脚本时应注意:●HDWDBDir、HDWDataDir这两个标记名是规定路径的,可以用函数赋值。
可以写在应用程序脚本内。
●HDWFilename这个标记名是规定.CSV文件的路径和文件名。
如果只打一种报表,也可以写在应用程序脚本内,否则应在形成.CSV文件前指定。
●HDWTags和后续的HDWTags1、HDWTags2这些标记名是规定.CSV文件的包含的标记名。
如果只打一种报表,也可以写在应用程序脚本内,否则应在形成.CSV文件前指定。
●HDWStartDate、HDWStartTime这两标记名是规定.CSV文件数据的起始日期和起始时间的。
如果是招呼打印报表,人工输入时格式一定要正确。
如果是自动打印报表可以计算得到,一般可以在条件脚本内规定。
●HDWInterval、HDWDuratione这两标记名是规定.CSV文件的数据时间间隔和数据时间的总长度,如日报表分别为:1H(小时)和1D(1天)。
●HDWWRITEFILE =1为生成.CSV文件,只有上述标记名义赋值后,才执行他。
●ERROR这个标记名可以显示生成.CSV文件时是否有错误,调试时非常重要。
例如:下面脚本生成一个日期由StartDate1规定,包括两个标记名PI-101,TI-101,日报表。
可以复制在你的脚本中,修改一下就可以形成所需的.CSV文件。
HDWStartDate =StartDate1;HDWStartTime =”00:00:00”;HDWDBDir = InfoInTouchAppDir();HDWDataDir = HTGetLogDirectory();HDWFilename = "C:\REPORT.csv";HDWTags ="$Date,$Time,PI-101,TI-101";HDWInterval = "1H";HDWDuration = "1D";HDWWRITEFILE=1;HDWDataDir = HTGetLogDirectory();HDWDBDir = InfoInTouchAppDir();HDWStartDate = #DTPicker1.Value; 时间控件名称HDWStartTime ="00:00:00"; 开始时间HDWFilename = "C:\REPORT.csv";HDWTags ="$Date,$Time,zj_AO1,zj_AO2";HDWInterval = "1H";HDWDuration = "1D";HDWWRITEFILE=1;Step2: 招呼打印报表的情况如果是招呼打印(不定期打印,人工输入打印日期和时间的报表打印),则可以在INTOUCH中开一个窗口输入HDWStartDate1,HDWStartTime,HDWInterval,HDWDuration 的参数。
并做一个按钮,在动作脚本中给固定的参数赋值和最后令HDWWRITEFILE=1;脚本的例子形成的.CSV文件的例子Step3: 定时自动打印的情况如果是定时自动打印,需要在条件脚本(或数据改变脚本)中写代码完成。
这里需要特别注意起始日期和时间。
如:日报表示在0点以后打印的,所以需要通过计算得到前一天的日期,可以用下面语句HDWStartDate =StringFromTime( ($Date - 1)*86400, 1 )。
举例:Step4: 运行INTOUCH,检查生成的.CSV文件。
3.建立EXCEL报表Step1: 设计一个报表格式。
例如:先画出报头在EXCEL导入相应.CSV文件。
找到相应.CSV文件,一步步导入选逗号分割,指定导入区域起点单元,为了更直观,可以用EXCEL的功能加一个趋势图。
Step2: 做一个宏选菜单工具\宏\录制新宏,起一个宏名(如mr1),确认。
●由于EXCEL不允许在有数据的区域导入数据,所以先删除前面导入的数据。
选择数据区,按Del键●在EXCEL重新导入相应.CSV文件。
重复刚才的步骤●打印和保存(报表需要打印时)或另存(报表不需要打印时)。
●停止记录宏写VBA脚本,让宏自动执行●菜单工具\宏\VB编辑器●双击ThisWorkBook●在代码区选WorkBook●在Private Sub _Open()函数中,加入Run(“宏名”)Application.Quit关闭VB编辑器,返回Workbook,确定报表的路径和文件名(如c:\report1.xls) ,保存报表。
这样,我们的报表就完成了。
一打开这个报表,就会执行宏,然后退出。
在调试时,可以迅速按Atrl+Break键停止宏执行。
注:在另存的情况下,在宏中找到另存的路径和文件名,用date,tim等变量加到文件名中。
Step3: 用INTOUCH打开报表在INTOUCH的相应脚本中加一条语句,启动EXCEL:StartApp "C:\Program Files\Microsoft Office\Office\excel.exe c:\report1.xls";这里,C:\Program Files\Microsoft Office\Office\excel.exe 是EXCEL的路径和文件名,注意EXCEL的版本不同路径不一样。
c:\report1.xls是报表的路径和文件名,之间有一个空格。
一个日报表的例子。
语句说明:1)规定报表起始日期,2)规定报表起始时间,3)InTouch的路径,4)存储历史数据文件的路径,5).CSV文件的路径和文件名,6)报表包含的标记名,7)报表的采样间隔,8)报表的时间总长度,9)生成报表,10)启动相应的EXCEL文件。
4.参考应用程序的使用●将文件REPORT.CSV和report1.xls复制到C盘根目录下。
●测试时可以用Ctrl+Brack,停止EXCEL的宏程序执行,以便观察宏程序是如何写的。
●为了顺利运行EXCEL报表,EXCEL的宏的安全级别已设的最低。