免费论文查重: 大雅 万方 维普 turnitin paperpass

浅谈组态利用MicrootExcel实现组态软件复杂报表策略封面

最后更新时间:2024-01-25 作者:用户投稿原创标记本站原创 点赞:25419 浏览:110790
论文导读:和适用性,在组态软件实现复杂报表的应用中尤为广泛。利用MicrosoftExcel实现RSView复杂报表的方法主要有以下两种:第一种方法是利用RSView内置的VBA功能,在RSView画面或窗体代码中,调用Excel控件,利用其强大的制表功能,实现复杂报表的制作和打印。该方法不需要运行人员切换到MicrosoftExcel,从而实现无缝操作。第二种方
摘要:文章主要描述如何利用Microsoft Excel在组态软件中实现复杂报表中的方法,通过对各种实用方法的研究和比较,解决组态软件在实际应用中编制复杂报表功能不足的问题。文章以RSView为例进行描述,采用VBA、ActiveX等技术作为扩充的组态软件如iFix、Vijeo Citect等都可以借鉴。
关键词:Microsoft Excel RSView 组态软件复杂报表 ADO 研究
1007-9416(2013)02-0075-02
RSView是Rockwell Automation公司自动化集成架构可视化解决方案的重要组成部分,在统一开发环境、多人同时开发、与控制器使用相同标签、预制控制面板、审核工具、多种类型报警和事件的统一等方面在很大程度上减少了开发时间和成本,并且在系统安全性、服务器冗余能力、网络通讯能力、代码和画面复用等方面和传统组态软件相比也作了极大的改进。但是在报表组态方面,依然没有质的改进和提高,除了能实现基本的定时数据报表、状态记录报表和报警记录报表以外,任何稍微复杂的报表都必须借助组态软件的VBA功能或者利用第三方软件来实现,其中Microsoft Excel由于其普遍性和适用性,在组态软件实现复杂报表的应用中尤为广泛。
利用Microsoft Excel实现RSView复杂报表的方法主要有以下两种:第一种方法是利用RSView内置的VBA功能,在RSView画面或窗体代码中,调用Excel控件,利用其强大的制表功能,实现复杂报表的制作和打印。该方法不需要运行人员切换到Microsoft Excel,从而实现无缝操作。第二种方法是Microsoft Excel作为客户端软件,利用其内嵌的VBA功能调用RSView实时数据或通过ADO等技术访问RSView历史数据库,经数据处理后生成所需报表并进行打印。该方法需要运行人员切换到Excel进行操作,容易使运行人员访问操作系统或其它应用程序,对安全性不利。由于两种方法实现复杂报表的过程、访问数据库的方法都相类似,只是VBA的“宿主”不同,本文结合实际应用案例介绍第一种方法的实现过程。
1 RSView的数据访问机制
RSView数据有两种类型,一种是实时数据,另一种是历史数据。由于这两种数据的设计方式不同,因此它们的访问方法也不一样。RSView的VBA项目中提供诸如gProject、gTagDB、gCommand等摘自:毕业论文的格式www.7ctime.com
各种对象,利用这些对象可以在VBA中实现对RSView的各种操控和数据访问,例如可通过gCommand对象在VBA中执行RSView内置命令,通过gProject对象可访问工程属性或其它工程的信息,通过gTagDB对象可访问RSView实时数据库的标签并对其进行读写操作;而对于历史数据,组态软件一般都以dBaseIV、ODBC或其它类型数据库的形式保存,在VBA中通过ADO对象模型即可进行访问。如果是dBaseIV类型的数据,还可以在VBA中通过Excel对象的Workbooks、Worksheets等直接访问数据库。
2 RSView对Excel的访问机制
RSview对Excel进行访问的方式有两种,一是利用DDE动态数据交换技术,该方法数据交换速度低、效率差,应用不广泛,仅适用于小规模工程应用。二是利用RSView的VBA编辑器中引用Microsoft Excel Object Library对象,通过编写VBA程序直接操控和访问Excel,该方法速度快、效率高,适用于处理大批量数据的复杂报表的工程应用。
3 Microsoft Excel表格的使用效果及作用
首先,Microsoft Excel可迅速地构建各种专业级别的电子表格,并且具有改进的公式创建功能、增强的行列处理能力,计算速度快,具有必需的图库和样式模板,能满足各种规格、不同复杂程度的工程应用。
其次,Microsoft Excel内置的制图引擎能够快速地制作专业外观的图表和图形,利用该功能可以将各种数值报表转换成各种图形报表,以得到更直观、更有效的分析结果。
最后,Microsoft Excel可以实现与Office套装软件的资源共享并可连接到企业论文导读: 然后对ADO数据链接对象变量进行赋值:SetconQuery=NewADODB.Connection;创建ADO数据链接对象并赋值conQuery.Provider="Microsoft.Jet.OLEDB.4.0"conQuery.ConnectionString=gProject.Path&"\Status.mdb";“Status.mdb”为本例数据库名称,如果是SQLServer或Oracle数据库,则ADO数据链接对象的属性设置略有
数据,保持Excel电子表格和后台数据源之间的持久连接,这样就能在Excel里面深入分析更详细、更全面的信息。
4 应用案例分析
在组态软件中实现复杂报表的基本过程是:首先规划工程的报表类型;其次利用Microsoft Excel编辑功能制作静态报表模板,虽然也能通过RSView VBA操控Excel直接生成各种类型的表格,但编制报表模板可以大大减化VBA代码并提高效率,因此建议先制作静态报表模板;然后编写RSView VBA代码将实时数据和历史数据写入Excel各个单元格,生成数据报表;最后通过RSView VBA操控Excel或者直接操作Excel生成各种图形报表,并预览或者打印。下面针对上述步骤对主要技术点进行分析。

4.1 规划工程的报表类型

首先进行需求分析,确认工程所需的报表类型和数量,常用的报表按数据源分有操作记录报表、报警记录报表、定时数据记录报表和分析报表,按时间跨度分有班报、日报、周报、月报或年报,按表达形式分有数值报表、图形报表等。

4.2 制作Excel静态报表模板

利用Excel强大的编辑功能,制作一个静态报表模板文件如Report.xls,文件中每个工作表对应一个报表的模板如Sheet1为DailyReport、Sheet2为MonthlyReport等等。使用Excel报表模板可实现满足各种要求的复杂报表,提高报表与VBA 程序之间的独立性,减少VBA代码的复杂性,便于维护。

4.3 获取实时数据和历史数据

如前文所述,实时数据的访问可通过gTagDB对象源于:毕业论文致谢词www.7ctime.com
完成,如iValue=gTagdb.GetTag(“TagName”).Value即表示将标签“TagName”的值赋给变量iValue。
对于以dBASEIV数据库,由于Excel直接支持dBaseIV数据库文件,因此可以通过RSView VBA操控Excel直接打开相应的dBASEIV数据库文件,然后通过访问Excel单元格数据的形式获取历史数据并将所需的数据经处理后写入报表模板对应的单元格中。
对于以ODBC或其它关系数据库保存的历史数据,可以在RSView VBA中使用ADO对象来访问历史数据库并读/写其中数据。下面的代码以小型数据库Microsoft Access为例,实现数据库连接和数据查询功能。
首先定义ADO数据链接的对象变量:
Private conQuery As ADODB.Connection;定义ADO数据链接对象
Private recQuery As ADODB.Recordset ;定义ADO记录集
然后对ADO数据链接对象变量进行赋值:
Set conQuery=New ADODB.Connection ;创建ADO数据链接对象并赋值
conQuery.Provider="Microsoft.Jet.OLEDB.4.0"
conQuery.ConnectionString=gProject.Path & "\Status.mdb";“Status.mdb”为本例数据库名称,如果是SQL Server或Oracle数据库,则ADO数据链接对象的属性设置略有不同
conQuery.Open ;链接数据库成功则继续,否则需转故障处理代码
最后在数据库链接成功后利用SQL查询获取满足条件的数据记录集:
Set recQuery=New ADODB.Recordset
recQuery.Open sSQL,conQuery,adOpenStatic,_ adLockOptimistic;按sSQL指定的查询条件获取数据库中相应表格的记录集recQuery
至此,可以利用记录集的MoveFirst、MoveNext等方法选择记录,并利用Fields获取所需记录的字段值如sValue = recQuery.Fields(“DateAdnTime”)表示将当前记录的字段“DateAdnTime”的值赋给变量sValue。

4.4 打开并访问预制的Excel报表模板

首先尝试获取Excel应用程序对象,如果失败,则创建对象:
On Error GoTo CreateExcel
Se论文导读:n(gProject.Path&"\Report.xls")SetwbReport=objxls.Workbooks("Report.xls")ResumeNext;上述代码仅表示访问Excel对象的过程,在实际应用时需作适当补充。最后将报表模板中的工作表赋给wsReport对象:SetwsReport=wbReport.Worksheets("DailyReport")至此,就可以通过访问wsReport对象的Ranges、
t objxls=GetObject(,"Excel.Application")
On Error GoTo ErrHandler
GoTo Num1
CreateExcel:
Set objxls=CreateObject("Excel.Application")
Resume Next
接着判断报表模板文件“Report.xls”是否已经打开,如果已经打开,则将其赋给wbReport对象,否则先打开报表模板文件“Report.xls”。
Num1:
On Error GoTo OpenWorkbook
Set wbReport=objxls.Workbooks("Report.xls")
On Error GoTo ErrHandler
GoTo Num2
OpenWorkbook:
objxls.Workbooks.Open (gProject.Path & "\Report.xls")
Set wbReport=objxls.Workbooks("Report.xls")
Resume Next ;上述代码仅表示访问Excel对象的过程,在实际应用时需作适当补充。
最后将报表模板中的工作表赋给wsReport对象:
Set wsReport = wbReport.Worksheets("DailyReport")
至此,就可以通过访问wsReport对象的Ranges、Cells等访问报表模板Report.xls工作表“DailyReport”中的数据范围或单元格内容。

4.5 将实时数据和历史数据写入Excel报表

写入实时数据的过程:
WsReport.Cells(nRow,nColumn)=Tagdb.GetTag(“TagName”).Value
写入历史数据的过程:
WsReport.Cells(nRow,nColumn)=recQuery.Fields(“DateAdnTime”)

4.6 在RSView中操控Excel的常用方法

除了读写数据以外,在RSView VBA中经常需要对报表模板进行格式调整、打印或打印预览、保存、复制等操作,语句如下:
ws.Range("A5:A25").NumberFormat="yyyy-mm-dd hh:mm:ss";调整格式
ws.Range("A5:C25").HorizontalAlignment=xl HAlignCenter;水平居中ws.Range("A5:C25").Borders(xlEdgeLeft).LineStyle= xlContinuous;左边线连续
ws.Activate;激活ws工作表
objxls.Visible=True;Excel可见
objxls.Se;保存Excel工作簿
objxls.PrintPreview;打印预览
除了上述常用Excel操控方法,还可以通过RSView VBA生成各种形式的图形报表,读者可以参阅Microsoft Excel相关书籍,本文不再赘述。
5 利用Microsoft Excel实现组态软件复杂报表过程中应注意的问题

5.1 及时释放对象变量

由于访问Excel和数据库大都通过对象变量进行,访问结束后,应及时通过Set objxls=Nothing语句释放对象变量。

5.2 在VBA中访问Excel时需注意重复创建Session

由于在VBA中访问Excel的方法众多,如果先前的Excel没有退出就直接创建Excel对象变量,会造成同时运行多个Session造成运行速度缓慢乃至其它不可预见问题。
6 结语
通过上述讨论,可以通过VBA利用Microsoft Excel强大的制表功能来完成复杂报表的编制。同样地,也可以利用Microsoft Excel的内置VBA功能,通过访问RSView对象的实时数据和dBaseIV、ODBC历史数据摘自:硕士论文答辩技巧www.7ctime.com
库完成各种复杂报表的编制,其过程和RSView VBA类似。
另外iFix、Vijeo Citect等组态软件与RSView一样,具有较强的画面组态、网络通讯、冗余备份等功能,但报论文导读:EditionUser'sGuide.RockwellAutomation公司.宋勇江,陈庆文,陈建等.组态软件RSView与VB、Excel结合的复杂生产报表解决方案.自动化技术与应用,2010,22(09):53-5

5.上一页1234

表生成、处理能力较弱,也可以通过VBA或类似VBA编程利用Excel完成复杂报表的组态。
参考文献
俞旭明等.VISUAL BASIC

6.0 网络开发技术.北京:人民邮电出版社,1999.

RSView Supervisory Edition User's Guide.Rockwell Automation公司.
[3]宋勇江,陈庆文,陈建等.组态软件RSView与VB、Excel结合的复杂生产报表解决方案.自动化技术与应用,2010,22(09):53-55.