Intouch报表-EXCEL报表制作教程

合集下载

Intouc的报表制作

Intouc的报表制作

用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文件的命令,最后两个用于检查状态和错误。

intouch通过Excel制作报表

intouch通过Excel制作报表

如何把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报表

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教程

InTouch教程

打印设置
支持自定义打印参数,如纸张大小、打印方 向、页边距等,满足不同的打印需求。
打印日志记录
记录每次打印的详细信息,包括打印时间、 打印内容等,方便后续追溯和管理。
07
高级功能应用与拓展
Chapter
脚本编程实现复杂逻辑控制
01
使用InTouch内置脚本语言编写程序,实现复杂的逻 辑控制功能
02
可以设置多种触发条件,如单点 触发、多点触发、持续时间触发 等,以满足不同场景的报警需求 。
事件处理程序编写技巧
事件类型判断
在事件处理程序中,首先需要 判断事件的类型,以便执行相
应的处理逻辑。
数据获取与处理
根据事件类型,获取相关的数 据并进行处理,如读取模拟量 数值、开关量状态等。
报警信息生成
根据处理结果生成报警信息, 包括报警类型、报警点名称、 报警值、报警时间等。
05
报警与事件处理机制
Chapter
报警类型及触发条件设置
离散报警
当某个离散点的状态发生变化时 触发,如开关量输入、输出点的 状态变化。
系统报警
由系统内部产生的报警,如通讯 故障、硬件故障等。
01 02 03 04
模拟量报警
当模拟量点的数值超出设定范围 时触发,如温度、压力等模拟量 信号。
触发条件设置
通信协议配置方法
通信协议类型
InTouch支持多种通信协议,如OPC DA、OPC AE、 Modbus、DNP3等。用户可以根据实际需求选择合适的通 信协议。
配置步骤
配置通信协议需要先安装相应的协议驱动程序,然后在 InTouch中创建通信接口并配置相关参数,如服务器地址、 端口号、数据格式等。具体配置步骤可以参考InTouch的帮 助文档或相关教程。

HISTDATA

HISTDATA

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版)

intouch报表(access版)

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中写数据

用INTOUCH向EXCEL中写数据

用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中如何使用excel做报表

在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文件的命令,最后两个用于检查错误。

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

用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的宏的安全级别已设的最低。

相关文档
最新文档