工控網(wǎng)首頁
>

應用設計

>

Intouch報表制作方法

Intouch報表制作方法

2016/6/14 16:51:18

  Intouch自帶趨勢功能即可滿足日常報表功能制作,大體步驟: 1、在intouch中導入報表生成控件,生成初始報表.csv文件 2、在intouch中導入office插件,可以在intouch中顯示初始的報表csv文件; 3、將實際需要的報表模板,關聯(lián)到初始報表.csv文件當中去

一、intouch中導入報表生成控件 1.1 導入控件 新建報表窗口,命名隨便;

點擊向?qū)В愃颇Х钡膱D標)選擇趨勢下面的,歷史數(shù)據(jù)向?qū)В? 注意,導入這個插件的同時,會自動導入與這個插件相關的一些變量,到下一步寫腳本的時候就可以用到了,不需要自己建立相關內(nèi)存變量;如果第一次做實驗或者不熟悉這個插件,不建議自己手動建立相關變量。

1.2 編寫腳本 當腳本觸發(fā)是,intouch將會把腳本中的模擬量點按照自帶趨勢中的數(shù)值寫入預定的一個.csv文件當中去。 先將腳本全貌貼上,實際項目中報表需要的模擬量巨大,所以報表顯得有點長。。。=。=; HDWDataDir = "E:\HIS"; HDWDBDir = InfoInTouchAppDir(); HDWStartDate = Report_DB_Date; HDWStartTime = "00:00:00"; HDWFilename = "D:\Report.csv"; HDWTags ="$Date,$Time,PIT_1101,PIT_1102,PIT_1103,TIT_1101_R,PDIT_1101A_R,PDIT_1101B_R,FIQT_1101A_R,FIQT_1101B_R,+"; HDWTags1 = "PIT_1104,TIT_1102_R,PDIT_1401_R,PDIT_1402_R,PDIT_1403_R,FIQT_1401_R,FIQT_1402_R,FIQT_1403_R,PIT_1412_R,PIT_1413_R,PIT_1414_R,+"; HDWTags2 ="PIT_1202_R,TIT_1201_R,PIT_1201_R,PIT_1204_R,TIT_1202_R,PIT_1205_R,TIT_1203_R,PIT_1206_R,TIT_1204_R,PIT_1207_R,TIT_1205_R,+"; HDWTags3 ="PIT_1203_R,TIT_1206_R,PIT_1208_R,TIT_1207_R,PIT_1209_R,TIT_1208_R,PIT_1210_R,TIT_1209_R,+"; HDWTags4 ="TIT_1301_R,TIT_1302_R,TIT_1303_R,LIT_1302_R,LDIT_1301_R,TIT_1304_R,TIT_1305_R,TIT_1306_R,LIT_1306_R,LDIT_1305_R,+"; HDWTags5 = "TIT_1307_R,LIT_1309_R,TIT_1308_R,TIT_1309_R,TIT_1310_R,LIT_1313_R,LDIT_1312_R,TIT_1324_R,LIT_1340_R,TIT_1322_R,LIT_1334_R,+"; HDWTags6 ="TIT_1311_R,TIT_1312_R,TIT_1313_R,LIT_1317_R,LDIT_1316_R,TIT_1314_R,TIT_1315_R,TIT_1316_R,LIT_1321_R,LDIT_1320_R,+"; HDWTags7 ="TIT_1317_R,TIT_1318_R,TIT_1319_R,LIT_1325_R,LDIT_1324_R,TIT_1320_R,LIT_1328_R,TIT_1321_R,LIT_1331_R,TIT_1323_R,LIT_1337_R,+"; HDWTags8 ="LIT_1501_R,PIT_1415_R,PIT_1416_R,FIQT_1404_R,PIT_1417_R,PIT_1418_R,PIT_1401,PIT_1402,PIT_1403,+"; HDWTags9 = "PIT_1404,PIT_1405,PIT_1406,PIT_1407,PIT_1408,PIT_1409,PIT_1410,PIT_1411,LIT_3101_R,+"; HDWTags10 ="LIT_3105_R,LIT_3106_R,LIT_3201_R,FIQT_3201_R,FIQT_3203_R,LIT_3211_R,LIT_3212_R,FIQT_3202_R+"; HDWTags11 ="LIT_3208_R,LIT_3207_R,LIT_3210_R,LIT_3209_R,PIT_4101_R,LIT_2102_R,LIT_3103_R,+"; HDWTags12 ="FIQT_1101A_SUM,FIQT_1101B_SUM,FIQT_1404_SUM,FIQT_1401_SUM,FIQT_1402_SUM,FIQT_1403_SUM,FIQT_3203_SUM,FIQT_3202_SUM,FIQT_3201_SUM,+"; HDWTags13 ="ZQGL_A_01,ZQGL_A_02,ZQGL_A_03,ZQGL_A_04,ZQGL_A_05,ZQGL_A_06,+"; HDWTags14 ="ZQGL_B_01,ZQGL_B_02,ZQGL_B_03,ZQGL_B_04,ZQGL_B_05,ZQGL_B_06,+"; HDWTags15 ="ZQGL_C_01,ZQGL_C_02,ZQGL_C_03,ZQGL_C_04,ZQGL_C_05,ZQGL_C_06+"; HDWTags16 ="ZQGL_A_07,ZQGL_A_08,ZQGL_A_09,ZQGL_A_10,ZQGL_A_11,ZQGL_A_12,+"; HDWTags17 = "ZQGL_B_07,ZQGL_B_08,ZQGL_B_09,ZQGL_B_10,ZQGL_B_11,ZQGL_B_12+"; HDWTags18 ="ZQGL_C_07,ZQGL_C_08,ZQGL_C_09,ZQGL_C_10,ZQGL_C_11,ZQGL_C_12"; HDWInterval = "1H"; HDWDuration = "23H"; HDWWriteFile = 1; IF HDWStatus ==1 THEN #spreadsheet1.csvurl = "D:\Report.csv"; #spreadsheet1.refresh(); #spreadsheet1.displaytoolbar = "False"; #spreadsheet1.ViewOnlyMode = "True"; ENDIF;

1.2.1 第一部分是常規(guī)設置部分 HDWDataDir = "E:\HIS"; HDWDBDir = InfoInTouchAppDir(); HDWStartDate = Report_DB_Date; HDWStartTime = "00:00:00"; HDWFilename = "D:\Report.csv";

這一部分五個參數(shù)其中三個非常關鍵,第一個hdwdatedir,這個要匹配當下工程的歷史趨勢的路徑。路徑查詢辦法見下圖。

第二個參數(shù)默認即可; 第三個參數(shù)這是一個自己建的中間變量,類型是內(nèi)存消息。這個就是選擇的報表日期,我將這個值,賦給hdwstartdate的時候,就將報表定在這一天了。這里日期賦值可能有些麻煩,在本文最后寫個專題。 第四個默認即可,從0點開始寫,一行一行的。 第五個,是你的初始報表的路徑,這個需要自己手動建立一個CSV文件,空的就行,放在這個路徑里,當報表運行的時候,這個文件不能處于編輯模式; 這五個參數(shù)決定了報表的成敗。

1.2.2 報表賦值部分 總腳本的第二部分是報表點寫入部分,就是報表的列部分,將我們需要產(chǎn)生報表的標記點,一個一個寫進去,這一部比較繁瑣。但沒什么難點。 HDWTags ="$Date,$Time,PIT_1101,PIT_1102,PIT_1103,TIT_1101_R,PDIT_1101A_R,PDIT_1101B_R,FIQT_1101A_R,FIQT_1101B_R,+"; 寫入辦法就是賦值,HDWTags = “XX,XX,XX,XX”;XX是點名,注意格式雙引號,逗號即可。這里需要特別說明的是,HDWTags顯然是一個消息類型的內(nèi)存點,intouch消息類型最多只能寫131個字,所以一般來說不足以滿足我們需要的數(shù)量,就是寫不開的。類比上例,可以用字符串銜接的辦法寫入長的字符串,類似上面加入HDWTags1、HDWTags2,不夠了就加,在末尾寫個+,然后下面一個消息變量繼續(xù)寫,以滿足我們實際需要; 導入插件的時候系統(tǒng)自動給3個,不過大都還是不夠,繼續(xù)自己手動添加即可,沒有上限。 直到寫到最后一個,不要再帶加號了。

這里我喜歡將第一列和第二列分別寫入日期和時間,就是系統(tǒng)內(nèi)部點,有了這個原始報表也好看些,等第三步的時候自己查詢看著都方便。反正無限的,加兩列很舒服。 這里需要注意的是,標記名一定要寫對!一定不能有重復標記名!一定不能超131!格式!就這些。OK了就行。

1.3 顯示部分的腳本 第三部分是顯示部分的腳本 HDWInterval = "1H"; HDWDuration = "23H"; HDWWriteFile = 1; IF HDWStatus ==1 THEN #spreadsheet1.csvurl = "D:\Report.csv"; #spreadsheet1.refresh(); #spreadsheet1.displaytoolbar = "False"; #spreadsheet1.ViewOnlyMode = "True"; 這里大多參數(shù)比較直觀,例如寫入數(shù)據(jù)周期,寫入觸發(fā)變量HdwStatus,刷新等等,不用多數(shù),諸位不熟悉可以除了.csv的路徑這一行之外,其他照抄即可。

二、導入office控件做顯示 2.1、添加插件 特別—配置—向?qū)О惭b 

彈出選項卡

選擇第二個選項卡,然后下面一大堆,翻一翻不難找,找到這個Microsoft Office Spreadsheet 11.0 點擊安裝,然后關閉即可。這里可能因為諸位的office版本與我不同稍有出入,本人使用的是2007。 安裝完成后點擊向?qū)弊?,在ActiveX插件中就多了一個sheet。

雙擊導入的插件

紅色圈出部分要注意一下,這里的sheet后面的數(shù)字,要跟你前面的腳本匹配。導入多次后這個數(shù)字會自加1.注意一下即可。

到這一步報表寫入就結(jié)束了。 初始報表的生成工作就完成了,如果成功的話,運行你的腳本,就會將你所有的點寫入report.csv,并且在intouch當中顯示了。

三、將實際的報表模板,關聯(lián)到初始報表.csv文件當中去

先說原理,原理就是使用excel從report.csv里面讀數(shù),寫入實際的報表模板里,所以腳本是寫在Excel里的。即EXCEL去另一個EXCEL讀數(shù),并且存儲到對應單元格。 先說個笨辦法:

右鍵sheet,查看代碼。進入腳本編輯器。

Private Sub 讀取數(shù)據(jù)_Click() ‘定義按鈕,不用動’ Dim xlApp AsApplication ‘聲明,不用動,’ Dim book AsExcel.Workbook ‘聲明,不用動’ Dim sheet AsExcel.Worksheet ‘聲明,不用動’ Dim StrB(20000) AsString ‘定義一個數(shù)組,字符串類型’ Dim StrDate As Date Dim A As Integer Dim B As Integer Set xlApp = NewExcel.Application Set xlApp =CreateObject("Excel.Application") xlApp.Visible =True Set book =xlApp.Workbooks.Open("D:\Report.csv") Set sheet =book.Sheets("Report") sheet.Activate StrDate = sheet.Range("A2").Value StrB(1) =sheet.Rang(“B2”).Value xlApp.Quit Set sheet = Nothing Set book = Nothing Set xlApp = Nothing Range("R69").Value = StrDate Range(“R23”).Value= StrB(1) End Sub

第二步讀取數(shù)據(jù) StrDate = sheet.Range("A2").Value StrB(1) =sheet.Rang(“B2”).Value 很明顯就是將report的A2賦值到StrDate這個數(shù)里面了,把B2賦值到數(shù)組B的第一位了。 第三步寫入數(shù)據(jù) Range("R69").Value = StrDate Range(“R23”).Value= StrB(1) 很明顯就是把StrDate的數(shù)寫入自己的R69里面了,把數(shù)組B的第一位寫入R23了。 這就很簡單了,逐個查詢在report里面的位置,然后用這種賦值兩次的辦法寫進來就可以了。

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機械的智能化轉(zhuǎn)型

新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會

派拓網(wǎng)絡被Forrester評為XDR領域領導者

智能工控,存儲強基 | ??低晭砭手黝}演講

展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會