包含fixdynamics的词条

iFIX用VB脚本编的登录界面窗体怎么连接Access数据库,要具体的VB语句,在线等。。。

Private Sub 历史报表Btn_Click()

成都创新互联是一家专注于成都网站建设、做网站与策划设计,长泰网站建设哪家好?成都创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:长泰等地区。长泰做网站价格咨询:18980820575

'注释: 1。该程序需要安装ADO 2.0目标库并在本机注册

' 2。Microsoft ActiveX Data Objects 2.1 Library 必须被引用 (Office 2000)

' 3。Microsoft Excel 9.0 object libraries 必须被引用 (Office 2000)

' 4。划===处可根据具体报表修改

Dim strQuery As String

Dim c, i As Integer

Dim r As Integer

Dim Rpt_xls As Excel.Application

Dim dnm(4) As String

Dim MyDate, MyMonth, MyDay, MyHour, MyMinute, MySecond

Dim stDate, stMonth, stDay, stHour, stinute, stSecond, sttime As String

Dim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String

'++===================================================================

'报表中的 TAG

Dim Items As Integer

dnm(1) = "AI1"

dnm(2) = "AI2"

dnm(3) = "AI3"

dnm(4) = "AI4"

'从历史库中取得域项, 2 - DATATIME, VALUE, TAG 共三项

'--====================================================================

stDate = Date$

sttime = Time$

StartTime = stDate " 00:00:00"

EndTime = stDate + " " + sttime

Set Rpt_xls = New Excel.Application

Rpt_xls.Visible = True

'++============================================================================

'打开的报表文件名

Dim OutReportFile As String

Dim Rpt_f2 As String

Rpt_f2 = "d:\Dynamics\App\HIST"

Rpt_xls.Workbooks.Open Rpt_f2 ".XLS"

Rpt_xls.Sheets("Sheet1").Select

Range("e1").Select

Selection.NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"

Cells(1, 4).Value = stDate "-" sttime

' Rpt_xls.ActiveWorkbook.SaveAs (Rpt_f2 stDate)

'++==========================================================================

Dim cnADO As New ADODB.Connection

Dim rsADO As Recordset

Set cnADO = New ADODB.Connection

cnADO.ConnectionString = "DSN = FIX Dynamics Historical Data; UID =; PWD = ;"

cnADO.Open "FIX Dynamics Historical Data", "", ""

'============================================================================

'查询,根据报表修改。注意,在“Select VALUE FROM mynd“中,mynd是当前SCADA节点名。

For i = 1 To 4

r = 3

strQuery = "Select VALUE FROM mynd " _

"WHERE (TAG='" dnm(i) "'and " _

"INTERVAL = '00:30:00' and " _

"DATETIME = {ts '" StartTime "'} and " _

"DATETIME = {ts '" EndTime "'})"

'--===========================================================================

MsgBox (strQuery)

Set rsADO = New ADODB.Recordset

rsADO.Open strQuery, cnADO, adOpenForwardOnly, adLockBatchOptimistic

rsADO.MoveFirst

Rpt_xls.Columns("a").Select

Selection.NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"

While rsADO.EOF True

' MsgBox ("有记录")

Cells(r, i + 1).Value = rsADO.Fields(0)

Cells(r, i + 1).NumberFormatLocal = "0.00"

r = r + 1

rsADO.MoveNext

Wend

MsgBox (r)

Next i

Set cnADO = Nothing

' Rpt_xls.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape

' Rpt_xls.ActiveSheet.PageSetup.PaperSize = xlPaperA4

' Rpt_xls.ActiveSheet.PrintOut

' Rpt_xls.DisplayAlerts = False

Rpt_xls.ActiveWorkbook.Save

' OutReportFile = Rpt_f2 "_00" MyMonth MyDay

' Rpt_xls.ActiveWorkbook.SaveAs OutReportFile

Rpt_xls.ActiveWorkbook.SaveAs (Rpt_f2 stDate)

Rpt_xls.Quit

Rpt_xls.DisplayAlerts = True

Set Rpt_xls = Nothing

End Sub

Private Sub 历史数据库Btn_Click()

'注释: 1。该程序需要安装ADO 2.0目标库并在本机注册

' 2。Microsoft ActiveX Data Objects 2.1 Library 必须被引用 (Office 2000)

' 3。Microsoft Excel 9.0 object libraries 必须被引用 (Office 2000)

' 4。划===处可根据具体报表修改

Dim strQuery As String

Dim c As Integer

Dim r As Integer

Dim Intyexcel As Excel.Application

Dim MyDate, MyMonth, MyDay, MyTime, MyHour, MyMinute, MySecond

Dim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String

'从历史库中取得域项, 2 - DATATIME, VALUE, TAG 共三项

Items = 2

'--====================================================================

MyDate = Format(Now(), "yyyy-mm-dd")

MyTime = Format(Now(), "h:m:s")

StartTime = MyDate " " "00:00:00"

EndTime = Now()

'++==========================================================================

' strQuery = "Select value from Fix " + _

' " Where DATETIME ={ts '" + StrStarTime + "'} AND " + _

' "DATETIME ={ts '" + StrEndTime + "'} AND " + _

' "Tag = " " '" HisDate5(i, 0) "'"

'查询,根据报表修改

strQuery = "Select * From MYND " + _

"WHERE (DATETIME = {ts '" StartTime "'} and " + _

"DATETIME = {ts '" EndTime "'}) and " + _

"(tag = 'AI1')" + _

"and INTERVAL = '00:30:00' "

'--===========================================================================

Dim cnADO As New ADODB.Connection

Dim rsADO As Recordset

Set cnADO = New ADODB.Connection

cnADO.ConnectionString = "DSN = FIX Dynamics Historical Data; UID = ; PWD = ;"

cnADO.Open "FIX Dynamics Historical Data", "", ""

Set rsADO = New ADODB.Recordset

' Rs.Open strQuery, Cn, adOpenStatic, 3, adCmdText

rsADO.Open strQuery, cnADO, adOpenForwardOnly, adLockBatchOptimistic

' rsADO.MoveFirst

'++============================================================================

'打开的报表文件名

Dim Rpt_xls As Excel.Application

Dim OutReportFile As String

Dim Rpt_f1 As String

Set Rpt_xls = New Excel.Application

Rpt_xls.Visible = True

Rpt_f1 = "d:\Dynamics\App\rt1"

Rpt_xls.Workbooks.Open Rpt_f1 ".XLS"

' Rpt_xls.ActiveWorkbook.SaveAs (Rpt_f1 stDate)

'===============================================================================

Rpt_xls.Sheets("Sheet2").Select

Rpt_xls.Range("E1").Select

r = 3

Selection.NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"

Cells(1, 5).Value = EndTime

While rsADO.EOF True

If rsADO(c) "" Then

Cells(r, 1) = rsADO.Fields(0)

Cells(r, 2) = rsADO.Fields(1)

Cells(r, 3) = rsADO.Fields(2)

Cells(r, 4) = rsADO.Fields(3)

Cells(r, 5) = rsADO.Fields(4)

Cells(r, 6) = rsADO.Fields(5)

Cells(r, 7) = rsADO.Fields(6)

Cells(r, 8) = rsADO.Fields(7)

Cells(r, 9) = rsADO.Fields(8)

End If

r = r + 1

rsADO.MoveNext

Wend

' Intyexcel.Sheets("Sheet1").Select

' Intyexcel.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape

' Intyexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4

' Intyexcel.ActiveSheet.PrintOut

' Intyexcel.DisplayAlerts = False

' Intyexcel.ActiveWorkbook.Save

' OutReportFile = InReportFile "_00" MyMonth MyDay

' Intyexcel.ActiveWorkbook.SaveAs OutReportFile

' Intyexcel.Quit

' Intyexcel.DisplayAlerts = True

' Set Intyexcel = Nothing

Set cnADO = Nothing

End Sub

Private Sub 实时报表Btn_Click()

'注释: 1。该程序需要安装ADO 2.0目标库并在本机注册

' 2。Microsoft ActiveX Data Objects 2.1 Library 必须被引用 (Office 2000)

' 3。Microsoft Excel 9.0 object libraries 必须被引用 (Office 2000)

' 4。划===处可根据具体报表修改

Dim c As Integer

Dim r As Integer

Dim Rpt_xls As Excel.Application

Dim MyDate, MyMonth, MyDay, MyHour, MyMinute, MySecond

Dim stDate, stMonth, stDay, stHour, stinute, stSecond, sttime As String

Dim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String

'--====================================================================

stDate = Date$

sttime = Time$

StartTime = stDate " 09:40:00"

EndTime = stDate + " " + sttime

r = 1

Items = 8

Set Rpt_xls = New Excel.Application

Rpt_xls.Visible = True

'++============================================================================

'打开的报表文件名

Dim OutReportFile As String

Dim Rpt_f1 As String

Rpt_f1 = "d:\Dynamics\App\rt1"

Rpt_xls.Workbooks.Open Rpt_f1 ".XLS"

Rpt_xls.ActiveWorkbook.SaveAs (Rpt_f1 stDate)

'===============================================================================

Rpt_xls.Sheets("Sheet1").Select

Rpt_xls.Range("E1").Select

Selection.NumberFormatLocal = "yyyy-mm-dd hh:mm:ss"

Cells(1, 5).Value = stDate sttime

'================================================================================

Cells(3, 2).Value = Fix32.mynd.ai1.f_cv

Cells(3, 3).Value = Fix32.mynd.ai2.f_cv

Cells(3, 4).Value = Fix32.mynd.ai3.f_cv

Cells(3, 5).Value = Fix32.mynd.ai4.f_cv

Range("B3:E3").Select

Selection.NumberFormatLocal = "0.00_ "

'================================================================================

Rpt_xls.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape

Rpt_xls.ActiveSheet.PageSetup.PaperSize = xlPaperA4

'Rpt_xls.ActiveSheet.PrintOut

Rpt_xls.DisplayAlerts = False

Rpt_xls.ActiveWorkbook.Save

OutReportFile = Rpt_f1 "_00" MyMonth MyDay

Rpt_xls.ActiveWorkbook.SaveAs OutReportFile

Rpt_xls.Quit

Rpt_xls.DisplayAlerts = True

Set Rpt_xls = Nothing

End Sub

excel中VBA有哪些作用?哪里有教程啊?

分类: 电脑/网络 软件

解析:

阐述了当前自动化软件的技术特点和发展趋势,并介绍了在iFIX自动化软件中使用VBA访问历史和实时数据的机制。通过一段使用VBA语言编写的程序,实现向Excel输出历史数据,生成历史报表的实例,说明了VBA语言在自动化软件中的应用。

1、自动化软件的发展趋势

自动化软件主要是指那些为用户提供人机操作界面(HMI)的开发和运行环境的软件,有些软件还能够提供回路控制功能,用户可以实现基于PC的控制方案。自动化软件应当具备如下的主要功能及特征:工业过程的动态可视化;数据采集和管理;过程监控和报警;报表和操作记录功能;系统安全等级化管理;为其他企业级程序提供实时和历史数据;简单的回路调节;批量控制等。

近年来,随着计算机和网络技术的发展与应用,自动化软件的发展也呈现如下的发展趋势。

1.1 开放和标准化

近年来,许多自动化软件厂商把通用的标准化编程语言,如微软的VBA(Visual Basic for Applications)集成在自己软件的开发环境中。VBA与VB(Visual Basic)极为相似,只是不能编译成可执行文件,这就为众多熟悉VB的用户提供了一个编程环境。用户在VBA环境中编写程序,可以使用DDE,ActiveX控件,ODBC,COM/DCOM 等技术使得自动化软件演变成开放的软件平台,在软件功能不能满足用户特殊需要时,用户可以根据自己的需要进行二次开发。

同时,OPC(OLE for Process Contro1)技术也是自动化软件的一个热点。OPC是Microsoft公司的对象链接和嵌入OLE/COM技术在过程控制方面的应用,为工业控制领域提供了标准的数据访问机制。

1.2 网络化

随着Inter/Intra的普及,自动化软件又集成了基于TCP/IP协议的网络功能,使其成为协作生产制造过程中的核心系统,实现了企业网络环境下实时数据的管理、实时流程查看、实时趋势浏览、报警记录与查看、报表数据存储、历史趋势存储与查看、生产过程报表生成、生产统计报表生成等功能,从而实现过程控制系统与信息系统的网络集成。用户可以通过IE浏览器登录自动化软件的Web Server服务器,实现远程浏览生产过程。

1.3 管理控制一体化

生产管理信息系统是大型企业重点建设的项目,随着大型数据库技术的日益成熟,自动化软件成为全厂范围内信息收集和集成的工具。在未来企业的信息化进程中,自动化软件将成为硬件设备与生产管理信息系统的桥梁。因为自动化软件能为生产管理信息系统提供生产过程的实时和历史数据,而生产管理信息系统叉对生产过程有着指导作用。

2、VBA在自动化软件中的应用

下面,以iFIX软件为例,通过VBA编写的脚本程序,实现向Excel输出历史数据的实例来具体说明VBA在自动化软件中的应用。

2.1 iFIX软件简介

iFIX软件是GE自动化软件产品家族中的一个基于Windows的HMI/SCADA组件。iFIX是基于开放的和组件技术的产品,专为在工厂级和商业系统之间提供易于集成和协同工作的设计环境。iFIX中还加入了OPC,VBA,ActiveX,DDE,ODBC等工业标准化技术,可以提供一个强大的开发环境,实现用户的特殊需求。

2.2 iFIX软件中VBA的应用实例

a) iFIX的数据访问机制。iFIX中的数据分为实时数据库和历史数据库,这2种数据库的访问方法不同,对于实时数据库,iFIX的VBA项目中提供了各种iFIX对象,利用这些对象,就可以方便地在VBA中实现对iFIX的控制功能;对于历史数据库,可以访问关系数据库来获得历史数据。对于这些关系数据库,各种编程语言大多都提供了相应的数据控件来访问,在VBA 中,通常采用ADO对象模型来访问这些历史数据库。

b) ADO Data控件使用Microsoft ActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合ODBC规范的数据源。

c) 利用VBA实现Excel报表。通过编写VBA脚本程序,可以实现向Excel输出历史数据,生成Excel报表。其触发方式有2种:一种是通过iFIX的调度程序,以固定的时间或事件来启动VBA脚本程序,生成报表;还可以直接使用VBA生成用户操作界面,用户可以输入开始时间,间隔等参数,由用户点击按钮启动VBA脚本程序,生成报表。这2种方式在程序上大同小异,其主要部分VBA脚本程序如下。其中程序将历史数据、时间、TAG名称等参数送到Excel的Sheet2中,用户可以将Sheet1作为报表版面,通过编辑版面格式,引用Sheet2数据等方式,形成最终报表。

根据用户要求定义所要查询的时间段和变量名称

Dim MyDate,StartTime,EndTime As String Dim Tagl,Tag2 As String

Tagl=“TIC101.F_CV”

Tag2=“TIC102.F_CV”

MyDate=Format(Now(),“yyyy-mm—dd”)

StartTime=MyDate“ ” “0:00:00”

EndTime=MyDate“ ” “23:OO:OO”

使用ADO对象来访问ODBC数据库,用SQL语盲查询历史数据

strQuerySamp=“Select Datetime,Value,Tag From Fix Where Mode=‘Sample’and (TAG=‘ “& Tagl ”‘or TAG=’” Tag2 ) and Interval=‘ 01:00:00’and (Datetime) >={ts‘“ StartTime ”’ )and Datetime<={ts‘“ EndTime ”’})”

Dim ADO As New ADODB.Connection

Dim rsADO As Recordset

Set ADO=New ADODB.Connection

ADO.ConnectionString=“ DSN= FIX Dynamics Historical Data;UID=sa;PWD= ;”

AD0.Open “FIX Dynamics Historical Data”,“sa”,“”

Set rsADO— New ADODB.Recordset

rsADO.Open strQuerySamp,ADO,adOpenForwardOnly,adLockBatchOptimistic

调用Excel,将历史数据写入打开的Excel报表文件

Dim 0utReport File,InReportFile As String

Set Intyexcel= New Excel.Application

InReportFile-”C:\data\HisReport“

Intyexce1.Workbooks.Open InReportFile “.XLS”

Intyexce1.Sheets(“Sheet2”).Select

While rsADO.EOF True

With Intyexce1.Worksheets(2)

For C=0 To Items

If rsADO(c)= “ ”Then .Cells(r,C + 1).Value= rsADO(c)

Next C

r; r+ 1

rsADO.M oveNex

End With

W end

关闭Excel,保存报表文件

OutReportFile=InRep0rtFile “_” MyDate

Intyexce1. ActiveW orkbook. SaveAs OutReportFile

Intyexce1.Quit

Set Intyexcel=Nothing

Set ADO==Nothing

3、VBA应用的注意事项与展望

集成了VBA编程语言的自动化软件,变成了标准化的、开放的软件开发平台,这使得自动化软件本身具有了无限的开放性和可扩展性。但同时也带来一些问题。首先,开发人员要确保VBA脚本程序的可靠和精简。VBA程序要经过严格和全面的测试,并要编写出错处理程序,保证生产过程控制的万无一失。其次,目前VBA程序还不能编写多线程程序,开发人员要选择恰当的触发方式,避免发生冲突。

总之,随着最终用户变得更加成熟以及对自动化软件的更加了解,他们将通过编写程序的方式来针对其过程及系统进行更多的定制,以便能够满足其需求。自动化软件将不断为用户提供这样的安全可靠的技术手段。

参考文献

[1] 刘恩涛,赵耀峰.Visual Basic6.0编程技术与实例分析,北京:中国水利水电出版杜,1999.455~456,472~478,479~482

[2] 刘炳文,张绅.Visual Basic程序设计——数据库篇.北京:人民邮电出版社。1999.196~198,224~232,248~251

详细教程:whzx.tzr/read.php?wid=455

什么是非线性动力学?

非线性动力学,是物理学的思维进入传统方法所不能解决的问题的一座丰碑。也是非常有前途的工具学科,它为大数据时代提供潜在的分析引擎。为什么说非线性,因为物理之外的系统大多数不能用线性系统表述(详情请见《动力学是如何做预测的》)。动力学的核心使命是预测系统的变化,非线性动力学在这点上也是一样的。一个经典的非线性动力学系统具有标准的表述形式:预测一个系统的未来,你需要知道它在微小时间尺度里的性质并列出动力学方程x是一个向量(vector),它所具有的分量个数即系统的维度。维度是动力学系统的最基本属性 。它决定系统的复杂性,及其可能具有的基本性质。 还有,我们有多大把握预测系统的未来。高维空间绝非之存在于宇宙之边(广义相对论)或者加速器的深处(弦论),而是你我的生活中处处皆是。用图形的思维, 讲述复杂性是如何随着维度升高而产生的,同时,庞加莱,秦皇或者凯恩斯又是如何联系起来的。最简单的系统是一维系统,预测一个一维的非线性系统,往往只需抓住一个关键性信息-定点。一维系统与定点(Fix Point) “简单系统偏好平衡”马尔萨斯人口论合不合理?18世纪末,在工业革命前夜的英国,一个叫做马尔萨斯的伟大思想家提出了这样一个困扰了人类几个实的问题: 人类的人口呈指数增长,而食物的总量至多成代数增长, 所以当人口的增长超过食物,人类将不可避免的陷入饥荒,疾病和战争。而普遍性的贫穷,是人类文明的宿命。这个理论解释了为什么许多古代文明陷入发展停滞的泥沼,从埃及,两河领域到古中国。

ifix报表怎么做

在VBA中引用Microsoft Excel 11.0 Object Library和Microsoft ADO 6.0 Library。在画面中添加个按钮。复制以下代码:

‘----------开始复制(不包括此行)--------------

Option Explicit

Dim rsADO As ADODB.Recordset

Dim cnADO As ADODB.Connection

Private Sub Command1_Click()

Dim StrDir As String

StrDir = "E:\"

Dim i As Long

Dim Sql As String

Sql = "SELECT * FROM THISNODE"

Set cnADO = New ADODB.Connection

Set rsADO = New ADODB.Recordset

cnADO.ConnectionString = "rovider = Microsoft OLE DB Provider for ODBC Drivers;DSN=FIX Dynamics Real Time Data;UID=WD="

cnADO.Open

rsADO.CursorLocation = adUseClient

rsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1

If rsADO.RecordCount = 0 Then

MsgBox "无数据!", vbOKOnly + vbInformation, "信息"

Set cnADO = Nothing

Set rsADO = Nothing

Exit Sub

End If

Dim xlApp As Object

Dim xlBook As Object

Dim xlSheet As Object

Set xlApp = New Excel.Application

xlApp.DisplayAlerts = False

xlApp.Visible = False

Set xlBook = xlApp.Workbooks.Open(StrDir "\报表.xls")'需要文件(E:\报表.xls)

Set xlSheet = xlBook.Worksheets(1)

For i = 1 To rsADO.RecordCount

xlSheet.Cells(i, 1) = rsADO.Fields(1).Value ""

xlSheet.Cells(i, 2) = rsADO.Fields(2).Value ""

xlSheet.Cells(i, 3) = rsADO.Fields(3).Value ""

xlSheet.Cells(i, 4) = rsADO.Fields(4).Value ""

Next i

xlApp.Visible = True

xlApp.DisplayAlerts = False

Set xlSheet = Nothing

Set xlBook = Nothing

Set xlApp = Nothing

Set cnADO = Nothing

Set rsADO = Nothing

End Sub

‘----------结束复制(不包括次行)--------------

注意:1.iFix历史数据库只支持读90天的数据,在SQL语句中限定时间即可。

2.也可以读取其他数据源的数据,如ACCESS、SQL SERVER等,只要改一下ConnectionString。


网站栏目:包含fixdynamics的词条
转载来源:http://abwzjs.com/article/doiojhe.html