当前位置:文档之家› 组态王历史数据库及其他关系数据库

组态王历史数据库及其他关系数据库

组态王历史数据库及其他关系数据库
组态王历史数据库及其他关系数据库

组态王KINGVIEW 6X

组态王历史数据库及其他关系数据库

常见问题解答

北京亚控科技发展有限公司

2011年02月

目录

1. 组态王历史数据库 (1)

1.1 组态王保存的历史数据,我希望对其进行修改,可以吗? (1)

1.2 为什么我的软件在运行时提示“历史库:历史库服务程序没有启动”? (1)

1.3 我使用了自己编写的VB(VC)程序,希望能调用组态王保存的历史数据文件,请问可以实现吗? (1)

1.4 我想使用组态王提供的KingReport文件进行数据查询,为什么打开时提示有错误发生呢? (1)

1.5 请问目前版本的组态王软件历史库记录文件格式是什么? (1)

1.6 请问如何访问组态王历史库中的数据?组态王中的历史库文件是否可以使用其他应用程序打开? (2)

1.7 组态王历史库文件是否可以修改、删除?如果不慎删除后能否恢复? (2)

1.8 在组态王软件的各个版本中历史数据存储格式有哪些区别? (2)

1.9 在组态王软件中变量的历史记录方式有哪几种? (2)

1.10 在控制面板→管理工具→服务中找不到HistorySvr服务,且在组态王中无法查询历史数据,怎么办? (3)

1.11 组态王质量戳有哪几种?各代表什么含义? (4)

1.12 如何实现将组态王历史库中的数据导出来? (5)

1.13 组态王的历史库容量有多大?历史信息能存多少天的? (5)

1.14 在组态王运行环境中能否动态修改历史数据记录的存储天数? (5)

1.15 在组态王数据词典中设置了变量的历史记录属性,但是变量无历史记录,为什么? (5)

2. 其他数据库 (5)

2.1 组态王采集的数据能保存到第三方的数据库如SQL、ORACLE等吗? (5)

2.2 我希望组态王将采集的数据保存到网络中的另一台计算机上的SQL或ORACLE等数据库,如何操作? (5)

2.3 请问组态王软件与SQL数据库交互的一般配置过程如何? (6)

2.4 我采用组态王软件对SQL数据库写数据,写入没有成功,请问需要注意什么问题? (6)

2.5在建立组态王和ACCESS数据库连接时,开始一分多钟连接是成功的,可是一会在组态王的信息窗口就会显示“数据库错误:客户端工作过多Driver's SOLSetConnectAttr faild”然后就是连接失败。请问这是什么原因? (6)

2.6 我采用组态王软件对SQL数据库进行数据交换,请问如何通过组态王对SQL数据库中的数据进行更新? (7)

2.7 在组态王中使用SQLSelect函数查询数据库记录时如何得到符合条件的记录的数量? (7)

2.8 在组态王中使用KVADODBGrid控件对数据库查询后,将查询的数据打印出来? (7)

2.9 在组态王运行系统下如何删除数据库中的记录? (7)

2.10 在组态王中使用KVADODBGRID控件进行数据库查询时,能否对查询出来的数据进行修改,同时将数据更新到数据库中? (7)

2.11 在组态王中使用KVADODBGRID控件进行数据库查询时,能否将查询出来的数据保存为其他格式的文件? (8)

2.12 在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到指定单元格中的内容? (8)

2.13 使用SQLInsert函数向Access数据库存储数据时,此函数使用完全正确,但是信息窗口总是提示语法错误,为什么? (9)

2.14 一个记录体里面两个相同的字段名称对应组态王两个不同的变量是否可以? (9)

2.15 如果Access数据库里的两个表格完全一样,那么组态王在插入记录的时候能用同一个记录体吗? (9)

2.16 如何判断组态王与外部数据库的连接状态? (9)

2.17 组态王能同时对两个Access数据库进行操作吗? (9)

2.18 在组态王中能否对Access数据库进行压缩,该如何实现? (9)

2.19 两台装有组态王的计算机通过网络ODBC连接同一个Access数据库时,不能同时连接数据库,为什么? (10)

2.20 在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现打印预览的功能? (10)

2.21 在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现多个表联合查询的功能? (10)

2.22 在使用KVADODBGRID控件来查询数据库的时候,如何在运行时修改控件中显示数据的小数点位数? (10)

2.23 在组态王中使用KVADODBGRID控件进行数据库查询时,能否在运行时进行表格的选择? (10)

2.24 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现字符串查询? (11)

2.25 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现相似查询? (11)

2.26 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现时间段的查询? (11)

2.27 在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现查询结果的排序? (12)

2.28 在组态王中使用KVADODBGRID控件进行数据库查询时,如何删除控件中显示的数据? (12)

2.29 在组态王中使用KVADODBGRID控件进行数据库查询时,如何对控件的数据进行刷新? (12)

2.30 在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到当前所选单元格中的内容? (12)

2.31 在组态王中使用KVADODBGRID控件进行数据库查询时,如何动态地添加控件的字段? (12)

2.32 在组态王中如何实现在access数据库中始终保存一个月的历史数据,自动删除一个月之前的历史数据的功能? (13)

2.33 在组态王中使用KVADODBGrid控件时如何对数据库中的日期类型字段进行查询? (14)

2.34 组态王的记录体能否直接引用“远程变量”,实现数据库的查询与存储? (17)

2.35 Oracle数据库表字段有Date类型字段时,利用SQL函数需要注意问题: (17)

2.36 组态王查询SQL Server 2005数据库中字段内容为空(NULL)的记录,查询条件怎么写? (17)

2.37 组态王查询Access数据库中字段内容为空(NULL)的记录,查询条件怎么写? (17)

2.38 利用KVADODBGIRD来查询SQL Server 2005数据库,查询条件设置成:控件名.where="日期时间=#2010-12-28 10:21:23#";“日期时间”字段是日期时间类型,查询失败?但同样的方式查询Access数据库是没问题的? (17)

2.39 利用KVADODBGrid控件来查询Access数据库,有两个画面分别用KVADODBGrid控件查询数据库里不同的表,查询条件写的都一样,都是按照时间来查询,其中一个表查询成功,另外一个表查询失败? (18)

1. 组态王历史数据库

1.1组态王保存的历史数据,我希望对其进行修改,可以吗?

不可以,组态王保存的历史数据文件不开放用户来修改。

1.2为什么我的软件在运行时提示“历史库:历史库服务程序没有启动”?

出现这种提示,一般情况下是用户的软件安装出了问题,建议用户重新安装组态王软件。

如果重新安装组态王软件此提示依然存在,请按如下操作进行处理:

进入组态王的软件安装目录(默认情况下为“C:\Program Files\Kingview”),找到exe程序 HistorySvr.exe。

使用鼠标点击微软系统的“开始-程序-运行”,在对话框中输入"C:\Program Files\Kingview\HistorySvr.exe" -run(具体路径要根据你的安装路径来定),按回车键运行即可解决此问题。

1.3我使用了自己编写的VB(VC)程序,希望能调用组态王保存的历史数据文件,请问可以实现吗?

组态王针对用户的这种需求,提供了一个动态库连接接口文件:AccessHist.dll,此文件中提供了对组态王数据库进行读取的接口函数,通过这些函数就可以实现对组态王数据库的检索。

详情请参考组态王使用手册的附录B。

1.4我想使用组态王提供的KingReport文件进行数据查询,为什么打开时提示有错误发生呢?

KingReport文件的宏命令语言中使用了Microsoft Common Dialog Control的控件,如果你的计算机上没用此控件,那么在打开此文件启动宏时就会报错,所以建议你在使用此文件前安装一下Office或VB软件程序。

1.5请问目前版本的组态王软件历史库记录文件格式是什么?

目前版本的组态王历史库记录文件包括以下三种文件格式:

*.tmp:临时数据文件,存储最近一段时间的原始数据。文件名格式为

projectYYYYMMDDHHXX.tmp,如project200712261200.tmp ,YYYY—年,MM—月,DD—日,HH—小时,XX—文件序号;

*.std:压缩的原始数据文件,保存的是一天内的压缩数据。文件名格式为projectYYYYMMDDXX.std,如project2007102500.std;

*.ev:特征值文件,存放将原始数据根据特征值算法过滤出的部分数据。文件名格式为projectYYYYXX.ev,如project200700.ev;

1.6请问如何访问组态王历史库中的数据?组态王中的历史库文件是否可以使用其他应用程序打开?

组态王中的历史库文件是组态王自定义的文件格式,所以无法使用其他应用程序打开,但是可以在Excel中利用KingReport工具(在Kingview目录下)来查询历史库中的时间、数据、质量戳或者通过组态王提供的报表控件、历史趋势曲线来获取历史库中的数据。

注:在Excel中利用KingReport工具来查询历史库数据的详细配置请参考组态王帮助文档。

1.7组态王历史库文件是否可以修改、删除?如果不慎删除后能否恢复?

组态王历史库文件用户是不能够修改的,只能够进行查询。

组态王历史库文件是以文件格式保存在计算机里的,所以可以删除掉的,但是要注意如果一旦删除此文件,将无法查询到该时期的历史数据。

如果不慎将历史库文件删除的话,将无法进行恢复。

1.8在组态王软件的各个版本中历史数据存储格式有哪些区别?

之前的版本(历史数据文件后缀.rec)

6.5的第一版(6.5.0.X)不支持特征值文件(历史数据文件后缀.tmp、std)

6.5的第二版(6.5.1.X)之后,支持特征值文件(历史数据文件后缀.tmp、.std、.ev)

历史数据文件后缀名为非tmp、std的组态王版本,升级后历史数据不能进行查询,6.5版本之后升级后原有历史数据可以查询到。

1.9在组态王软件中变量的历史记录方式有哪几种?

不记录:该变量值不进行历史记录;

定时记录:无论变量变化与否,系统运行时按定义的时间间隔将变量的值记录到历

史库中。最小定义时间间隔单位为1分钟,这种方式适用于数据变化缓慢的场合;

数据变化记录:系统运行时,变量的值发生变化,而且当前变量值与上次的值之间的差值大于设置的变化灵敏度时,该变量的值才会被记录到历史记录中。这种记录方式适合于数据变化较快的场合;

每次采集记录:系统运行时,按照变量的采集频率进行数据记录,每到一次采集频率,记录一次数据。该功能只适用于IO变量,内存变量没有该记录方式。该功能应慎用,且意义不大。

1.10在控制面板→管理工具→服务中找不到HistorySvr服务,且在组态王中无法查询历史数据,怎么办?

A:卸载组态王软件,并以系统管理员身份登陆重新安装组态王软件。

B:先在组态王安装目录下(一般是C:\Program Files\kingview)找到HistorySvr.exe 可执行文件。

鼠标点击系统的“开始-程序-组态王6X-工具-服务注册工具”,如图1.10.1所示,

图1.10.1

用鼠标点击“Search”按钮,如图1.10.2所示,找到HistorySvr.exe历史服务程序,用鼠标双击窗口中“C:\Program Files\kingview\HistorySvr.exe”,在status里会显示服务目前状态,然后再用鼠标点击“Register”按钮,完成服务注册,如图1.10.3所示。

图1.10.2

图1.10.3

1.11组态王质量戳有哪几种?各代表什么含义?

0:质量戳为坏(驱动传过来的质量戳为坏,或通讯失败)。

1:关机时刻,同时关机时通讯是失败的,或质量戳为坏。

2:开机时刻,开机时,还没有采集到数据。

192:质量戳为好

193:关机时取得好的质量戳

194:开机时取得好的质量戳

1.12如何实现将组态王历史库中的数据导出来?

可以使用组态王提供的KingReport.xls文件,此文件在组态王安装目录下可以找到,就可以将组态王历史库中的数据导出到Excel文档中。

具体使用方法请参考组态王用户手册。

1.13组态王的历史库容量有多大?历史信息能存多少天的?

组态王历史库容量本身没有限制,与计算机硬盘大小有关系。报警信息存储的天数在系统配置-->历史数据记录-->历史记录配置对话框中设置,以天为单位,最多是8000天。

1.14在组态王运行环境中能否动态修改历史数据记录的存储天数?

不能动态修改。只能在开发环境中通过系统配置-->历史数据记录-->历史库配置对话框中进行设置。

1.15在组态王数据词典中设置了变量的历史记录属性,但是变量无历史记录,为什么?

请确认:

A、组态王系统配置-->历史数据记录-->历史库配置对话框中的“运行时启动历史数据记录”复选框是否选中;

B、在控制面板-->管理工具-->服务-->HistorSvr服务是否启动;

2. 其他数据库

2.1组态王采集的数据能保存到第三方的数据库如SQL、ORACLE等吗?

可以,通过控制面板的ODBC(Open Database Connectivity,开放数据库互连)配置来实现。用户首先需要对SQL或ORACLE数据库进行ODBC配置,然后通过组态王提供的SQL函数就可以实现组态王数据保存到第三方数据库,详细说明请参考组态王的使用手册。

2.2我希望组态王将采集的数据保存到网络中的另一台计算机上的SQL或ORACLE等数据库,如何操作?

一般不推荐直接在运行组态王的计算机上直接配置网络ODBC数据源,因为网络的不稳定会造成一系列的通讯问题。

推荐方式如下:

请在运行组态王的计算机和网络中的数据库计算机同时安装SQL或ORACLE数据库,对这两台计算机上的SQL或ORACLE数据库进行同步(数据库软件提供同步的功能),组态王软件直接与本机的数据库通讯读写数据(这样可以避免网络不稳定对组态王软件的影响,防止数据的丢失)。

2.3请问组态王软件与SQL数据库交互的一般配置过程如何?

A、建立数据库和数据源,数据源的建立在“控制面板―>管理工具->数据源(ODBC)中配置”。

B、在组态王中建立表格模版和记录体模版。

C、使用SQLCONNECT()建立组态王与数据源的连接。

D、采用SQL****函数对数据库进行操作。

E、使用SQLDISCONNECT()断开与数据源的连接。

2.4我采用组态王软件对SQL数据库写数据,写入没有成功,请问需要注意什么问题?

需要注意的事项如下:

A、在组态王的信息窗口中查看组态王与数据源是否连接成功。

B、数据库中的表格的字段名与组态王记录体定义的字段名是否相同。

C、数据库表格的字段类型与组态王变量的类型是否符合,推荐使用组态王的表格模板创建表格。

D、表格中使用的字段名是否有date和time、in等关键字,如果有请改为其他字段名。

E、数据库字段中是否包含有#字,ODBC数据源不支持该字符使用。

2.5 在建立组态王和ACCESS数据库连接时,开始一分多钟连接是成功的,可是一会在组态王的信息窗口就会显示“数据库错误:客户端工作过多Driver's SOLSetConnectAttr faild”然后就是连接失败。请问这是什么原因?

这是连接命令语言在组态王中重复执行的次数太多了(比如将SQLCONNECT语句写在了命令语言存在时),这样做很不好,不断的执行数据库连接可能会造成系统的崩溃,建议将其写到命令语言启动时连接一次即可。

2.6我采用组态王软件对SQL数据库进行数据交换,请问如何通过组态王对SQL数据库中的数据进行更新?

一般操作步骤如下:

A、采用组态王提供的SQLSELECT()函数从数据库检索到需要修改的记录。

B、通过记录体关联的变量将数据显示在画面上。

C、在画面上对这些数据进行修改。

D、采用SQLUPDATE()函数将数据更新到数据库中即可。

2.7在组态王中使用SQLSelect函数查询数据库记录时如何得到符合条件的记录的数量?

使用SQLNumRows()函数能够得到符合条件的记录的数量,函数的调用格式为:SQLNumRows(DeviceID);

2.8在组态王中使用KVADODBGrid控件对数据库查询后,将查询的数据打印出来?

调用控件的PRINT方法就可以了,具体调用方法如下:Ctrl4.Print();

2.9在组态王运行系统下如何删除数据库中的记录?

通过组态王提供的SQLDelete()函数可以删除数据库中的一条或多条记录,函数使用说明如下:

[ResultCode=]SQLDelete(DeviceID, "TableName", "WhereExpr");

参数:

DeviceID:SQLConnct()产生的连接号。

TableName:表名。

WhereExpr:指定函数起作用行的条件

例如:删除kingview表格中所有LogNo列等于11的记录:

SQLDelete(DeviceID, "kingview", "LogNo=11");

2.10在组态王中使用KVADODBGRID控件进行数据库查询时,能否对查询出来的数据进行修改,同时将数据更新到数据库中?

可以。通过控件的Editable属性来实现,此属性置0不可编辑,置1可编辑,调用

格式如下:

数据库查询控件.Editable=0;

数据库查询控件.Editable=1;

修改后可使用SQLUpdate()函数将数据更新到数据库中。

2.11在组态王中使用KVADODBGRID控件进行数据库查询时,能否将查询出来的数据保存为其他格式的文件?

使用控件的SaveToCSV方法可以将数据表格保存为csv格式的文件,使用说明如下:SaveToCSV(STRING bstrCSV)方法:

参数:

STRING bstrCSV:保存路径和文件名。

例如:数据库查询控件.SaveToCsv("f:\Temp\a1.csv");

2.12在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到指定单元格中的内容?

使用控件的方法GetCertainCellText方法可以实现,使用说明如下:

GetCertainCellText(LONG lRow,LONG lCol)方法:

参数:

LONG lRow:指定单元格所在行(从0开始)。

LONG lCol:指定单元格所在列(以0开始)。

例如:

LONG lRow;

LONG lCol;

lRow = 2;

lCol = 3;

strCurSelText = 数据库查询控件. GetCertainCellText(lRow,lCol); //获取第2行、第3列单元格中的文本到字符串变量strCurSelText。

2.13使用SQLInsert函数向Access数据库存储数据时,此函数使用完全正确,但是信息窗口总是提示语法错误,为什么?

这是因为数据库表格中设置的字段名称与数据库中的关键字冲突(如:date time等等)造成的,将其字段名更改为其它名称即可。

2.14一个记录体里面两个相同的字段名称对应组态王两个不同的变量是否可以?

不可以。

因为记录体的作用是确定数据库中表格字段和组态王变量的唯一对应关系,如果出现重名的会出现错误,另外数据库一个表中两个字段也不能重名。

2.15如果Access数据库里的两个表格完全一样,那么组态王在插入记录的时候能用同一个记录体吗?

可以使用同一个记录体,但是条件是两个表格的字段名称,字段类型完全一样。

2.16如何判断组态王与外部数据库的连接状态?

通过SQLConnect函数的返回值来判断,如果是0表明与数据库连接失败,如果是正数则表明连接成功。

2.17组态王能同时对两个Access数据库进行操作吗?

可以。

利用SQLConnect函数连接两个数据库,在使用SQLConnect函数时,连接两个数据库的ID号是不同的(即函数的第一个参数不同),连接成功后就可以同时对两个数据库进行操作了。

2.18在组态王中能否对Access数据库进行压缩,该如何实现?

亚控提供了对Access数据库进行压缩处理的批处理程序,在组态王中使用StartApp 函数调用此程序即可,批处理程序可以使用记事本打开并编辑,针对具体的应用只需要修改批处理程序中的office的安装路径以及mdb数据库的路径/文件名即可。如有需要请向亚控索取。

2.19两台装有组态王的计算机通过网络ODBC连接同一个Access数据库时,不能同时连接数据库,为什么?

这是因为连接的数据库没有完全共享造成的,将数据库设置成完全控制即可。

注:这里的共享不单要把数据库所在的文件夹共享,还需要把数据库共享,如:数据库右键-属性-安全-添加everyone-完全控制、修改等。

2.20在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现打印预览的功能?

组态王暂时无此功能。

2.21在组态王中使用KVADODBGRID控件进行数据库查询时,能否实现多个表联合查询的功能?

组态王软件提供的KVADODBGRID控件不支持同时查询多表,只能对一个数据库表格进行查询。但用户可以通过关系数据库提供的视图功能,此视图可以从多个表中联合查询,通过选择视图可间接的达到从多个表中联合查询数据的目的。

组态王提供了这个功能的例程,请到组态王网站上下载(下载中心-知识库下载-组态王通用版-功能例程-关系数据库多表联合查询例程)或与亚控公司的技术支持联系。

2.22在使用KVADODBGRID控件来查询数据库的时候,如何在运行时修改控件中显示数据的小数点位数?

使用控件的SetFieldDecimalDigits方法来实行,使用说明如下:

SetFieldDecimalDigits(STRING bstrName,LONG lDecimalDigits);

参数:

bstrName 表头字段名

lDecimalDigits 设置小数位数

例如:数据库查询控件.SetFieldDecimalDigits("温度",3);

2.23在组态王中使用KVADODBGRID控件进行数据库查询时,能否在运行时进行表格的选择?

使用控件的Table属性可以实现,调用格式为:

数据库查询控件.Table=\\本站点\表格名称;//其中表格名称是组态王数据词典中定义

的字符串变量。

2.24在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现字符串查询?

查询语句如下所示:

string whe;

weh=="GroupName='"+\\本站点\报警组+"'";

数据库查询控件.Where=whe;

数据库查询控件.FetchData();

数据库查询控件.FetchEnd();

2.25在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现相似查询?

查询语句如下所示:

数据库查询控件.Where="VarName like+'%"+\\本站点\查询条件+"%'";

//相似查询,其中 VarName为为数据库中字段的名称,查询条件是组态王数据词典中定义的字符串变量。

数据库查询控件.FetchData();

数据库查询控件.FetchEnd();

2.26在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现时间段的查询?

查询语句如下所示:

数据库查询控件.Where="ADate >={d'"+\\本站点\开始时间+"'} and ADate <={d'"+\\本站点\结束时间+"'}";

//日期范围查询,其中ADate为数据库中字段的名称,日期型,开始时间和结束时间是组态王数据字典中定义字符串变量。

数据库查询控件.FetchData();

数据库查询控件.FetchEnd();

2.27在组态王中使用KVADODBGRID控件进行数据库查询时,如何实现查询结果的排序?

查询语句如下所示:

数据库查询控件.Where="ADate={d'"+\\本站点\查询日期+"'}"+" Order By ATime ASC";

//其中ADate和ATime都是数据库中字段的名称,日期型,查询日期是组态王数据字典中定义的字符串变量,d 为字符型转化为日期型。

数据库查询控件.FetchData();

数据库查询控件.FetchEnd();

2.28在组态王中使用KVADODBGRID控件进行数据库查询时,如何删除控件中显示的数据?

使用控件的RemoveAllData方法来实行,调用格式为:

数据库查询控件. RemoveAllData();

2.29在组态王中使用KVADODBGRID控件进行数据库查询时,如何对控件的数据进行刷新?

使用控件的RefreshData方法来实行,调用格式为:

数据库查询控件. RefreshData();

2.30在组态王中使用KVADODBGRID控件进行数据库查询时,如何得到当前所选单元格中的内容?

使用控件的CurCellText属性可以实现,调用格式为:

strCurSelText=数据库查询控件.CurCellText;

2.31在组态王中使用KVADODBGRID控件进行数据库查询时,如何动态地添加控件的字段?

使用控件的AddField方法可以实现,使用说明如下:

AddField(STRING bstrName, STRING bstrTitle, LONG lFieldWidth, BOOL nReadOnly);

参数:

STRING bstrName:指定添加的字段的字段名,必须为有效字段名称;

STRING bstrTitle:被添加字段的实际显示名称,若为空,则取缺省的名称即该字段名作为显示名称;

LONG lFieldWidth:字段的宽度,字段宽度必须大于0;

BOOL nReadOnly:所添加的字段是否为只读(1 表示字段只读,0 表示字段可读写)。

例如:

Ctrl.SetConnectParam("MyTestDSN","","",""); //连接MyTestDSN数据源(Access数据库);

Ctrl.Table ="KingTable"; //选择KingTable数据表;

Ctrl.AddField("R1","温度",75,1); //增加此表中字段名为R1的字段,显示字段名称为温度,列宽75,只读;

Ctrl.FetchData(); //刷新数据集。

2.32在组态王中如何实现在access数据库中始终保存一个月的历史数据,自动删除一个月之前的历史数据的功能?

实现过程如下:

1)请将控制面板中的区域设置日期改为yyyy-mm-dd格式;

2)在组态王应用程序命令语言启动时输入如下脚本语言:

SQLConnect( DeviceID, "dsn=历史;uid=;pwd=");

long month=\\本站点\$月-1;

long year=\\本站点\$年;

long day=\\本站点\$日;

string date1;

if(month==0)

{

month=12;

year=\\本站点\$年-1;}

date1= StrFromInt( year, 10 );

date1=date1+"-";

date1 = date1 + StrFromInt( month, 10 );

date1 = date1 + "-" + StrFromInt( day, 10);

string whereexpr="日期={#’"+date1+"’}";

SQLDelete( DeviceID, "A", whereexpr);

if (\\本站点\$月==4||\\本站点\$月==6||\\本站点\$月==9||\\本站点\$月==11)

{

if (\\本站点\$日==30)

{

day=31;

date1= StrFromInt( year, 10 );

date1=date1+"-";

date1 = date1 + StrFromInt( month, 10 );

date1 = date1 + "-" + StrFromInt( day, 10);

whereexpr="日期={#’"+date1+"’}";

SQLDelete( DeviceID, "A", whereexpr);

}

}

}

2.33在组态王中使用KVADODBGrid控件时如何对数据库中的日期类型字段进行查询?

在组态王中对数据库进行查询主要是利用KVADODBGrid控件来实现的,具体实现方法如下:

1)在组态王画面中添加两个日期时间控件即:Microsoft Date and Time Picker Control 6.0,控件名称分别为date1和date2;

2)在第一个控件的CLOSEUP事件中输入如下命令语言:

long year1;

long month1;

long day1;

year1=date1.Year;

month1=date1.Month;

day1=date1.Day;

string 查询开始时间;

if (month1<10&&day1<10)

{

查询开始时间=StrFromInt(year1, 10)+"年"+"0"+StrFromInt(month1, 10)+"月"+"0"+StrFromInt(day1, 10)+"日";

}

if (month1<10&&day1>=10)

{

查询开始时间=StrFromInt(year1, 10)+"年"+"0"+StrFromInt(month1, 10)+"月"+StrFromInt(day1, 10)+"日";

}

if (month1>=10&&day1<10)

{

查询开始时间=StrFromInt(year1, 10)+"年"+StrFromInt(month1, 10)+"月"+"0"+StrFromInt(day1, 10)+"日";

}

if (month1>=10&&day1>=10)

{

查询开始时间=StrFromInt(year1, 10)+"年"+StrFromInt(month1, 10)+"月"+StrFromInt(day1, 10)+"日";

}

3)在第二个控件的CLOSEUP事件中输入如下命令语言:

long year2;

long month2;

long day2;

组态王软件详细教程 第九讲 数据库

第九讲组态王与Access数据库连接 组态王SQL访问功能实现组态王和其他外部数据库(支持ODBC访问接口)之间的数据传输。它包括组态王的SQL访问管理器和SQL函数。 以Ms Access数据库为例,下面说明组态王与其相连的例子。 SQL访问管理器 SQL访问管理器用来建立数据库列和组态王变量之间的联系。包括表格模板和记录体两部分功能。通过表格模板在数据库表中建立表格;通过记录体建立数据库表格列和组态王之间的联系,允许组态王通过记录体直接操作数据库中的数据。表格模板和记录体都是在工程浏览器中建立的。 创建表格模板 在工程浏览器中左侧工程目录显示区中选择“SQL访问管理器”下的“表格模板”项,在右侧目录内容显示区中双击“新建”,弹出“创建表格模板对话框”,如下图。

在表格模板中建立五个记录,字段名称,变量类型,变量长度,索引类型分别如上图所示。 建立表格模板的目的在于定义一种格式,在后面用到是SQLCreatTable()以次格式在Access数据库中建立表格。 创建记录体 在工程浏览器左侧的工程目录显示区中选择SQL访问管理器下的记录体,在右侧的目录内容显示区中双击“新建”,弹出“创建表格模板对话框”,如下图。

记录体定义了组态王变量$日期、$时间、原料油液位、催化剂液位、成品油液位和Access 数据库表格中相应字段日期、时间、原料油液位值、催化剂液位值、成品油液位值之间的对应连接关系。(注意:记录体中的 字段名称和顺序必须与表格模板中的字段名称和顺序必须保持一致,记录体中的字段对应的变量的数据类型必须和表格模板中相同字段对应的数据类型相同。) 建立Ms Access数据库 1.建立一空Access文件,定名为mydb.mdb. 2.定义数据源 双击控制面板下的“ODBC数据源(32位)”选项,弹出“ODBC数据源管理器”对话框, 选择“用户DSN”属性页,并单击添加”按钮。 在弹出的“创建新数据源”对话框中,选择“Mirosoft Access Driver” 单击“完成”按钮。 弹出“ODBC Microsoft Access安装”对话框:

组态王与单片机通信协议1

一、通讯参数: 通讯参数包括数据位,停止位,波特率、校验方式。 数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”中相关部分。 二、数据传输格式: 格式1、组态王发送地址请求格式:(此时检验位为1) ENQ Sta EOT CRC 格式2、单片机应答地址格式:(此时检验位为0) ACK Sta ETX CRC 格式3、组态王读数据请求格式:(此时检验位为0) ENQ R DataType DataAddr DataNum EOT CRC 格式4、单片机应答读数据格式(正确):(此时检验位为0) ACK DataLong Data….ETX CRC 格式5、单片机应答读数据格式(错误):(此时检验位为0) NAK ErrorCode ETX CRC 格式6、组态王写数据请求格式:(此时检验位为0) ENQ W DataType DataAddr Data….EOT CRC 格式7、单片机应答写数据格式(正确):(此时检验位为0) ACK ErrorCode ETX CRC 三、时序: 读数据: 组态王单片机

第一步:格式1 第二步:格式2 第三步:格式3 第四步:格式4或格式5 第五步:如果第四步单片机执行格式4, 结束。否则,执行格式1。 第六步:格式2 第七步:格式3 第八步:格式4或格式5 写数据: 组态王单片机 第一步:格式1 第二步:格式2 第三步:格式6 第四步:格式7 第五步:如果第四步单片机执行格式7 的ErrorCode=0,结束。否则,执行格 式1。 第六步:格式2 第七步:格式6 第八步:格式7 四、协议说明: 数据传输:所有数据均为16进制数 ENQ(头) H05 询问请求帧的开始代码 ACK(头) H06 确认ACK应答帧的开始代码NAK(头) H15 否认NAK应答帧的开始代码EOT(尾) H04 正文的结束请求帧的结束ASCII代码ETX(尾) H03 结束正文应答帧的结束ASCII代码 Sta::设备地址1字节 R:读标志1字节(0x52) W:写标志1字节(0x57)

组态王与数据库连接

首先,安装SQL server,和组态王。 1.将采集到的数据需要存入数据库的先编辑到记录体。 a.记录体名可以按照存储变量来设定,与存入数据库表格名称可以不一样(建议设置 一样)。 b.字段名称不需要和变量名称一致,设置简单明了的标示名称即可,但是必须要和存 入数据库表格名称一致。 c.记录体变量顺序必须和存入数据库表格顺序一致,否则数据不能插入表格。 d.时间:建议可新建一个内存字符串,并在命令语言内如图定义。 2.新建数据库以及数据库表格。 新建数据库:名称可随意设置(如:ceshi) 新建数据库表格: 列名:必须和记录体内字段名称一致(在报表调用时名称可以修改)。 数据类型:和存入的数据类型要一致,时间varchar模拟量float 开关量bit

长度:根据数据类型自动设置。 保存表格时输入表格名称即可。(名称尽量和记录体一致,操作起来方便一些)

3.创建数据源(ODBC) 依次打开控制面板→管理工具→数据源(ODBC) →系统DSN 步骤(只是需要修改的,其他都默认): a.添加→选择新数据源SQL sever(下拉最后一个)→完成 b.名称可随意设置,(建议和数据库名称一样,如:ceshi),描述可以省略,服务器: (local) c.使用用户输入登录ID和密码的SQLserver 验证。登录ID:sa,密码:安装数据库时 设置的密码(如,admin)。 d.更改默认的数据库,选择刚刚新建的数据库(如ceshi),创建完成。 4.连接组态和数据库插入数据 a.在组态王数据词典中新建内存整形变量DeviceID b.应用程序命令语言启动时: SQLConnect( DeviceID, "dsn=数据源名称;uid=sa(登录ID);pwd=admin(密码)"); 该命令语言是组态王连接上数据。 c.SQLInsert( DeviceID, "记录体名称", "数据库表格名称" ); 该命令语言是将记录体数据插入数据库表格内,可根据不同需求设定不同是采集频率。(如图,为一分钟采集一次;) 注:如果采集时间为十分钟可以建内存实数,让新建变量等于10分钟,并在命令语言中实现。 报表功能下期再见。

组态王6.53与51单片机上课讲义

组态王6.53与51单 片机

基于51单片机的智能仪表与组态王的通讯 1242人阅读 | 0条评论发布于:2009-8-10 23:01:00 1、引言 随着工业自动化进程的不断加快,现场仪器、仪表、设备正不断向数字化、智能化和网络化方向推进。 单片机以其强大的现场数据处理能力,低廉的价格,紧凑的系统结构、高度的灵活性,微小的功耗等一系列优良特性成为构建智能化现场仪器仪表、设备的重要手段,现已广泛应用于工业测量和控制系统中。 组态王 Kingview工控组态软件以其工作性能稳定可靠、人机界面友善、硬件配置方便以及编程简单易用同时其驱动程序较为丰富,如支持DDE、板卡、OPC服务器、PLC、智能仪表、智能模块等;支持ActiveX控件、配方管理、数据库访问、网络功能、冗余功能。其扩展性强,配有加密锁,支持工程加密;可方便与管理计算机或控制计算机联网通信等优良特性,提供了对工业控制现场大量数据进行采集、监控、处理的解决方案。在各种工业控制领域中得到了大量使用[1-2]。 将单片机和组态王优良的特性结合起来,使它们实现“强强联合”,成为改造传统工业,提升企业技术竞争力的重要趋势。 目前许多测控系统是由通用机或工控机和底层单片机控制装置组成,通用机或工控机通过组态软件控制现场仪器设备,单片机采集数据和现场状态通过串行口传送到通用机或工控机,由组态软件对采集到的现场数据进行分析、存储或显示,并将命令和控制通过串行口传到单片机以监控现场设备的运转。可靠地实现它们之间的通讯是实现各种测控任务必须解决的首要问题。对于一些重要名家厂商的板卡和模块,一般组态王可直接提供为数据采集和控制所需的底层硬件设备的驱动程序。但对于绝大多数一般用户自行设计开发的采集、控制装置则没有驱动程序提供。因此实现它们“强强联合”,必须解决它们之间之间的通信问题。迄今为止,人们对单片机与组态王的通信问题进行了广泛的研究[1-2]。 目前,单片机与组态王的通讯方法有主要有3种[3]:①利用组态的驱动程序开发包进行驱动开发自己的通讯驱动程序,该方法适用于专业厂商;②通过动态数据交换(DDE)方式进行通讯,该方法带来一些额

组态王与ACCESS数据库的数据交换的例子

组态王与ACCESS数据库的数据交换 ——以中山创污水处理为例 一、创建表格模板和记录体。 在组态王工程浏览器中的SQL访问管理器点击表格模板。在右侧目录内容中双击“新建”创建一个名称为“1”且字段为“工号”“日期”“时间”“酸”“碱”“混凝剂”“还原剂”“氯化钙”“PAM正”“PAM负”的表格。注意:当编辑字段名称时,应与新建组态王变量一样(最好不要用字符),不含非法字符,如:“+”“-”“=”“#”等。此表格格式决定了ACCESS数据库的表格格式。 同样在SQL管理器中点击记录体,在右侧目录内容中双击“新建”,创建一个名称为“1”的记录体。其字段名称与表格模板中的字段相对应。组态王变量是连接的组态王内部变量。编辑字段名称的规则与编辑表格模板一样。 二、建立MS ACCESS数据库。 1.建一个空的ACCESS数据库,定名为20,保存在D:\29所污水处理工程。 2.定义数据源 双击控制面板下的“ODBC数据源(32位)”选项,弹出“ODBC数据源管理器” 对话框。 选择“用户DSN”属性页,并单击“添加”按钮。 在弹出的“创建新数据源”对话框中,选择“Mirosoft Access Driver”单击“完成”按钮。 弹出“ODBC Microsoft Access安装”对话框,定义数据源名为“20” 单击“选择”按钮,从中选择路径D:\29所污水处理工程\20.MDB 单击“确定”按钮,完成对数据源的配置。

三、组态王开发界面的组态 在组态王开发系统中创建如下画面: 其中表格为KV ADODBGrid CLASS控件。 四、对数据库的操作。 点保存弹出对话框。在“确定”按钮的动画连接向导的“弹起时”输入命令语言 SQLConnect( \\本站点\ID, "dsn=20;DATABASE=20;uid=;pwd="); //连接名称为“20”,数据源名称为“20”的数据库。 SQLCreateTable( \\本站点\ID, "10", "1" ); //在数据库“20”内创建名称为“10”的表格,表格模板名称为“1”表格模板在组态王中已编辑。 SQLInsert( \\本站点\ID, "10", "1" ); //在名称为“10”的表格内插入名称为“1”的记录体。记录体在组态王中已编辑。 ClosePicture("手动确定"); //关闭“手动确定”画面。 数据库中的被记录变量必须要先被当前组态画面显示后才能在数据库中记录下来。(本工程中要记录的变量已经在KV ADODBGrid CLASS控件上方显示过了,即褐色的部分,显示后再点击“保存”按钮,进入保存对话框,点击“确定”按钮,数据才能进入数据库。 五:进入组态王运行状态,点击保存弹出对话框,点击“确定”按钮;将会自动在Microsoft Access 中生成名字为“10”的数据库表格;

组态王与SQL SERVER 2000交互教程

目录 1.SQL SERVER2000的准备工作 (2) 1.1安装SQL S ERVER2000数据库(安装方法略),新建数据库K ING V IEW (2) 1.2在K ING V IEW数据库中新建数据表R EAL D ATA、H ISTORY D ATA,用于存放组态王中的实时和 历史数据 (2) 2.组态王的准备工作 (4) 2.1在组态王建立两个内存实数变量,作为H ISTORY D ATA和R EAL D ATA的数据源,提供数据 变化至SQL S ERVER2000的数据库K ING V IEW (4) 2.2新建组态王画面T EST F OR SQLS ERVER2000,设置标签监控内存实数变量K ING1和K ING25 2.3建立一个内存字符串变量,时刻记录组态王的日期加时间,写入历史数据表作为时 间变量6 3.数据库与组态王数据交互 (6) 3.1建立组态王与数据库表之间的连接 (7) 3.2建立ODBC数据源,建立组态王与数据库之间的数据通道 (7) 3.3组态王打开数据库连接 (10) 3.4利用组态王脚本语言实现捕捉字段变化进而触发数据库操作 (13) 3.5组态王显示SQL S ERVER中历史数据表内容 (14) 3.6实际测试 (17)

1.SQL Server2000的准备工作 1.1安装SQL Server2000数据库(安装方法略),新建数据库 KingView 新建kingView数据库 1.2在KingView数据库中新建数据表RealData、HistoryData, 用于存放组态王中的实时和历史数据 定义历史数据表字段,注意需要把ID设置成自增1,才可以保证你数据表中记录不断的增加

031第八讲_组态王与数据库连接

第八讲 组态王与数据库连接 第一节 SQL 访问管理器 概述 组态王SQL 访问功能实现组态王和其他外部数据库(通过ODBC 访问接口)之间的数据传输。它包括组态王的SQL 访问管理器和相关的SQL 函数。 SQL 访问管理器用来建立数据库字段和组态王变量之间的联系,包括“表格模板”和“记录体”两部分。通过表格模板在数据库表中建立相应的表格;通过记录体建立数据库字段和组态王之间的联系。同时允许组态王通过记录体直接操作数据库中的数据。 创建数据源及数据库 首先外建一个数据库,这里我们选用Access 数据库(路径:d:\peixun ,数据库名为:mydb.mdb )。 然后,用Windows 控制面板中自带的ODBC Data Sources (32bit)管理工具新建一个Microsoft Access Driver(*.mdb)驱动的数据源,名为:mine ,然后配置该数据源,指向刚才建立的Access 数据库(即mydb .mdb ),如图8-1所示: 图8-1ODBC 数据源的建立

创建表格模板 1、在工程浏览器窗口左侧“工程目录显示区”中选择“SQL访问管理器”中的“表格模板”选项,在右侧“目录内容显示区”中双击“新建”图标弹出创建表格模板对话框,在对话框中建立三个字段,如图8-2所示: 图8-2创建表格模板对话框 2、单击“确认”按钮完成表格模板的创建。 建立表格模板的目的是定义数据库格式,在后面用到SQLCreatTable()函数时以此格式在Access数据库中自动建立表格。 创建记录体 1、在工程浏览器窗口左侧“工程目录显示区”中选择“SQL访问管理器”中的“记录体”选项,在右侧“目录内容显示区”中双击“新建”图标弹出创建记录体对话框,对话框设置如图8-3所示: 图8-3创建记录体对话框 记录体中定义了Access数据库表格字段与组态王变量之间的对应关系,对应关系如下所示:

组态王与单片机的通信

组态王与单片机的通信与设计 前言本文主要是解决装有组态王的PC机与单片机的通信问题,这里选择通过计算机的COM1口进行串行通信。单片机和PC机的串行通行一般采用RS-232、RS-422或RS-485总线标准接口,也有采用非标准的20mA电流环的。为保证通信的可靠,在选择接口时必须注意:(1)通信的速率;(2)通信距离:(3)抗干扰能力;(4)组网方式,既可以保证正常通信时的最大通信端口数量。这里采用RS-232接口与单片机通信的方法。由于两者间的电平规范不一致,实现两者间的通信要解决接口电路的电平转换问题。 正文 选题背景随着单片机和微机技术的不断发展,单片机的应用也从独立的单机向网络发展,由PC机和多台单片机构成的多级网络测控系统已成为单片机技术发展的一个方向。在一个大型的应用系统中,通常由单片机完成数据的采集和上传,后台则通过PC机对数据进行分析并处理,复杂的还要建立数据库形成网络,二者的结合,充分发挥了单片机在实时数据采集和微机对图形处理、显示以及数据库管理上的优点,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。 随着微电子技术、计算机控制技术、工业以太网技术及现场总线技术的发展,作为用户无需改变运行程序原代码的软件平台工具——工控组态软件日渐成熟。由于工控组态软件在实现工业控制的过程中免去了大量烦琐的编程工作,解决了长期以来控制工程人员缺乏计算机专业知识与计算机专业人员缺乏控制操作技术和经验的矛盾,极大地提高了自动化工程的工作效率。近年来,工控组态软件在中小型工业过程控制工程、工业自动化工程中越来越受到欢迎。不仅如此,工控组态软件还在配电自动化、智能楼宇、农业自动化、能源监测等领域也逐步展示了其独特的优势。 单片机控制系统以其高性能价格比、稳定、易于实现等特点而被广泛使用,但他难以实现动态复杂的图形监控界面;而组态王软件具有强大丰富的监控界面设计功能,却难以实现复杂的控制算法,而单片机则难以实现动态复杂的图形监控界面,若采用以单片机为下位机,以装有组态王的PC极为上位机的控制方式,将彻底改变原来单片机控制系统的单调、简单的控制界面的缺陷,进一步推动单片机控制方式的广泛应用。 在这个设计中有以下问题待以解决:1、TTL/RS232电平转换及其接口电路的处理。2、由于组态王接收的是数据的ASCII码,因此要实现数据与它所对应的ASCII码的转换。3、组态王监控界面的设计。 设计要求 设计组态王监控界面,编写单片机发送接受程序以实现组态王与单片机两者间的通信。 方案论证 过程论证

组态王及数据库连接的实现方法

组态王与数据库连接的实现方法 1准备工作 1.1创建数据源及数据库 1.右键新建一个Access数据库(D:\example,数据库名:ku.mdb)。 2.依次点击屏幕左下角“开始\控制面板\管理工具”,双击“数据源 (ODBC)”打开ODBC数据源管理器如错误!未找到引用源。: 图 1 3.点击“添加”新建一个数据源,驱动程序选择“Microsoft Access Driver(*.mdb)”点击“完成”,如错误!未找到引用源。:

图 2 4.配置该数据源,数据源名:yuan。指向新建的Access 数据库 (ku.mdb)步骤如错误!未找到引用源。所示: 图 3

1.2创建表格模板 打开工程“yangli”在工程浏览器窗口左侧找到“系统\SQL访问管理器\表格模板”选项如图 4,在右侧双击“新建”打开如图 5“创建表格模板”对话框。 图 4 模板名称:muban1,,依次输入字段名称:ziduan1、字段长度:9,选择变量类型为:定长字符串型,点击增加字段。用同样方法增加字段ziduan2、ziduan3。 图 5 1.3创建记录体 注意:记录体中的字段名称必须与表格模板中的字段名称保持一致,记录体中字段对应的变量数据类型必须和表格模板中相同字段对应的数据类型相同。 1.在工程浏览器窗口“数据库\数据词典”中新增三个内存字符串型变量 (ziduan1、 ziduan2、ziduan3)。

2.找到工程浏览器窗口左侧“SQL 访问管理器\记录体”选项,双击右侧 “新建”图标建立名为“jiluti1”的记录体,对话框设置如图 6所 示: 图 6 依次增加ziduan1、ziduan2、ziduan3三个字段点击“确认”。 2连接并插入记录 2.1连接数据库并创建数据库表格 1.在工程浏览器窗口“数据库\数据词典”中定义一个内存整型变量: 变量名:DeviceID 变量类型:内存整型 2.在工程浏览器窗口的“命令语言\应用程序命令语言\启动时”窗口输入 命令: SQLConnect( DeviceID, "dsn=yuan;uid=;pwd="); SQLCreateTable( DeviceID, "biaoge1", "muban1" ); 命令语言中的“yuan”为前面配置的数据源的名称。 3.在工程浏览器窗口的“命令语言\应用程序命令语言\停止时”窗口输入 命令: SQLDisconnect( DeviceID);

关于组态王数据库绘制曲线的方式

关于组态王历史曲线的绘制 在作项目中,常常遇到需要查看工程的历史数据图和历史曲线。 在使用组态王的过程中遇到了以下问题。 问题;工程要求要能查找历史数据和查看历史曲线。组态王内置历史曲线可以绘制,但数据不能第三方访问。且历史数据记录不能停止。 要绘制历史曲线,首先要有历史数据,组态王本身有历史数据库。也可使用第三方数据库。 组态王自己的历史数据库不开放(只可用函数语句表另存为),第三方不能访问。 第三方数据库是微软的access数据库或者是SQL sever 数据库等。 在测试access数据时发现。组态王保存的历史数据在绘制历史曲线调用时,有个日期时间格式的数据需要选取。但在数据库里边没有符合这个格式的选项。 经查看发现组态王合成的日期时间格式在access里是字符串(文本)格式,不符合datetime格式。于是手动更改为datetime格式,组态王可以调用历史数据绘制曲线了。但数据又不能插入了。测试失败。 方法1.在SQL several数据库中同时插入两个一摸一样的表格,表格1插入数据,表二在表1插入时同时插入数据并转换数据格式,然后在历史曲线控件里调用。 在表格1调用触发器,然后再插入数据到表格2,同时更改日期时间字符串为datetime格式,直接在组态王历史控件里调用即可。 create trigger myinserta on MODE for insert as declare @a char(15),@b int,@c char(8),@d char(10),@e char(24),@f int,@g int,@h int,@i int,@j int,@k int,@l int,@m char(10); select @a=工件号编码,@b=序号,@c=时间,@d=日期,@e=DATATIME,@f=毫秒,@g=轨顶温度,@h=轨顶温度,@i=轨低温度,@j=轨低温度,@k=喷风温度,@l=喷风压力,@m=用户FROM INSERTED INSERT INTO MODE1 values (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m); 上面第一个触发器定义中间变量和数据长度和格式,定义的格式应当和组态王模板设定的长度和数据类型一致。 下面的触发器在每次插入触发时更改DATATIME列的格式为datetime日期时间格式。 create trigger STTTOTIMEa on MODE --(//记录体名称) ALTER TABLE MODE1 ALTER COLUMN DATATIME datetime; 方法2还是使用SQL several数据库。 在定义组态王模板时定义一个内部空变量,定义类型为long,长整型。随模板一起插入,在组态里,转换DATATIME字符串为datetime日期时间格式,并赋值给定义的长整型(long),在组态历史控件里就可以调用了

亚控科技公司提供的通用单片机通讯协议

组态王通用单片机协议(ASCII) 概述 通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程 序就可实现与组态王的通讯. 组态王设置 1、定义组态王设备 定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口 组态王的设备地址定义格式:##.# 前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定; 后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了 打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关. 2、组态王通讯 通讯方式:RS-232,RS-485,RS-422均可。 波特率:由单片机决定(2400,4800,9600and19200bps)。 注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中 的通讯参数一致 组态王数据词典--变量定义 在组态王中定义的寄存器数据格式(类型):由单片机决定。

斜体字dd代表数据地址,此地址与单片机的数据地址相对应. 注意: 在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别 占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内 不可交叉定义不同数据类型的变量。为提高通讯速度建议用户使用连续的数据区。 例如, 1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量 的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节 2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变 量的寄存器为X100、X102、X104、X106、X108。。。数据类型USHORT,每个变量占两个字节 3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变 量的寄存器为X200、X204、X208、X212。。。。。。数据类型FLOAT,每个变量占四个字节 组态王与单片机通讯的命令格式: 具体协议内容请参看组态王安装盘:\Value Pack\单片机\通用单片机通讯协 议(ASCII).doc

组态王连接Accesss大数据库与历史曲线显示

我是依据组态王帮助文件里面的案例,不过我写的会更详细! 以某工业现场应用为例,需要对原料进行称量,并记录原料的生产厂家、原料编号、称量日期、称量时间,值班人员、原料重量。针对这种关系数据,使用组态王的历史库是无法记录的,因此我们使用关系数据库Access 进行记录。下面就以此为例来演示完成这一现场需求的设置步骤。 操作步骤: 1、新建数据库以及表: 1.1)在Access 中新建一个空数据库,例如建立路径为:D:\数据库存储例程\数据.mdb。 1.2)在数据库D:\数据库存储例程\数据.mdb 中创建一个数据表:表的名称为:原料数据。字段为:称量日期、称量时间、原料重量、原料厂家、原料编号、值班人员、datetime(这个变量是我自己需要历史曲线用的)。如下图所示:(下面的值是我测试的) 其中原料重量字段类型为“数字”设置为“单精度”,datetime设置为日期/时间默认值改为now()。其余为“文本”类型。(这里默认的视图是数据表视图,要切换到设计视图,如图所示:)

在这下面设置字段大小为单精度型,小数位数为2(这个按自己需求设置位数)。 2、设置ODBC 数据源: 2.1) 在“控制面板”-----“管理工具”----“ODBC 数据源”中建立ODBC 数据源,点击“ODBC数据源”弹出“ODBC 数据源管理器”,如下图所示:(这里注意的是如果系统是64位系统的话,则打开C:\Windows\SysWOW64\odbcad32.exe)

2.2) 在“用户DSN”中点击“添加”,弹出“选择数据源驱动程序”窗口,如下图所示:选择“Microsoft Access Driver (*.mdb)”驱动,点击“完成”。弹出如图所示窗口,填写ODBC数据源的名称,根据需要对数据源进行命名,如“数据”,点击“选择(S)”,如图所示,选择我们前面定义的数据库文件“D:\数据库存储例程\数据.mdb”。点击“确定”完成ODBC 数据源的定义,如图所示。其他数据库如SQLServer 的ODBC 定义请参考相关文档。

基于51与组态王的智能仪表

基于51单片机的智能仪表与组态王的通讯 圈子类别:嵌入式系统 (未知) 2009-8-10 23:01:00 [我要评论] [加入收藏] [加入圈子] 1、引言 随着工业自动化进程的不断加快,现场仪器、仪表、设备正不断向数字化、智能化和网络化方向推进。 单片机以其强大的现场数据处理能力,低廉的价格,紧凑的系统结构、高度的灵活性,微小的功耗等一系列优良特性成为构建智能化现场仪器仪表、设备的重要手段,现已广泛应用于工业测量和控制系统中。 组态王Kingview工控组态软件以其工作性能稳定可靠、人机界面友善、硬件配置方便以及编程简单易用同时其驱动程序较为丰富,如支持DDE、板卡、OPC服务器、PLC、智能仪表、智能模块等;支持ActiveX控件、配方管理、数据库访问、网络功能、冗余功能。其扩展性强,配有加密锁,支持工程加密;可方便与管理计算机或控制计算机联网通信等优良特性,提供了对工业控制现场大量数据进行采集、监控、处理的解决方案。在各种工业控制领域中得到了大量使用[1-2]。 将单片机和组态王优良的特性结合起来,使它们实现“强强联合”,成为改造传统工业,提升企业技术竞争力的重要趋势。 目前许多测控系统是由通用机或工控机和底层单片机控制装置组成,通用机或工控机通过组态软件控制现场仪器设备,单片机采集数据和现场状态通过串行口传送到通用机或工控机,由组态软件对采集到的现场数据进行分析、存储或显示,并将命令和控制通过串行口传到单片机以监控现场设备的运转。可靠地实现它们之间的通讯是实现各种测控任务必须解决的首要问题。对于一些重要名家厂商的板卡和模块,一般组态王可直接提供为数据采集和控制所需的底层硬件设备的驱动程序。但对于绝大多数一般用户自行设计开发的采集、控制装置则没有驱动程序提供。因此实现它们“强强联合”,必须解决它们之间之间的通信问题。迄今为止,人们对单片机与组态王的通信问题进行了广泛的研究[1-2]。 目前,单片机与组态王的通讯方法有主要有3种[3]:①利用组态的驱动程序开发包进行驱动开发自己的通讯驱动程序,该方法适用于专业厂商;②通过动态数据交换(DDE)方式进行通讯,该方法带来一些额外的开销,如会降低系统实时性,增加系统的不可靠性等,对开发人员的要求也更高。而自己开发通讯驱动程序,有一定的难度,且增加开发周期、成本。⑧利用组态王提供的与单片机的通用通讯协议,该方法简单且实时性好,适用于一般用户。 本文介绍了一种采用通用单片机通讯协议,通过RS485接口实现组态王与基于51单片机的智能化仪器、仪表、设备的通讯方法,描述了单片杌和组态王通信的系统结构,电路组成,采用的通讯协议。并将该方法用于熔融氧化锑液位高度的实时远程测量中。

组态王通用单片机协议(ASCII)说明

组态王通用单片机协议(ASCII)说明 概述 通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程 序就可实现与组态王的通讯. 组态王设置 1、定义组态王设备 定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口 组态王的设备地址定义格式:##.# 前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关. 2、组态王通讯 通讯方式:RS-232,RS-485,RS-422均可。 波特率:由单片机决定(2400,4800,9600and19200bps)。 注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致 3.组态王数据词典--变量定义 在组态王中定义的寄存器数据格式(类型):由单片机决定。 斜体字dd代表数据地址,此地址与单片机的数据地址相对应. 注意:

在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。为提高通讯速度建议用户使用连续的数据区。 例如, 1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量 的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节 2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变 量的寄存器为X100、X102、X104、X106、X108。。。数据类型USHORT,每个变量占两个字节 3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变 量的寄存器为X200、X204、X208、X212。。。。。。数据类型FLOAT,每个变量占四个字节

组态王通过数据库实现数据的采集与输出

组态王通过数据库实现数据的采集与输出 The Standardization Office was revised on the afternoon of December 13, 2020

组态王通过数据库实现数据的采集与输出 作者:蒋妤媜 版本:.1 前提: ?数据库用Microsoft Office Access 2003,数据库路径为D:\历史记录.mdb ?组态王版本为 ?PC机系统为XP 一、创建数据库表 1. 新建名为“历史记录”的数据库,新建完成后,打开数据库 2. 创建表,点击使用设计器创建表,进入设计视图对话框,输入字段名 日期时间、毫秒、污泥浓度、溶氧仪、进水COD、电磁流量计、超声波流量计、二在线COD,其中字段名日期时间的数据类型为日期/时间、毫秒的数据类型为数字长整型、其他字段名数据类型为数字单精度型。 3. 保存名为:10分钟记录 二、创建ODBC

打开控制面板→管理工具→数据源(ODBC),弹出“ODBC数据管理器”,在用户DSN标签下,点击添加 弹出“创建数据库源” 选择此创建数据库源完成后弹出“ODBC Access 安装”

输入数 选择之前 确定完成。 三、组态王内部设置 1. 新建变量 在数据词典中创建本地变量,,变量名称分别为日期时间、DeviceID、nReturnValue。

2. 打开到组态王工程浏览器,新建记录体 创建名为“历史记录”的记录体 3. 创建事件命令语言 点击创建,弹出事件命令语言对话框 事件描述为:(((\\本站点\$分)%10==0)&&((\\本站点\$秒-1)%60==0))==1 输入记 字段名称要与数据库中 添加数据词典 显示已增

组态王及单片机多机串口通信的设计

组态王与单片机多机串口通信的设计 1 引言随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DDE)或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供一种与单片机多机串口通信方法,可满足大多数系统需求。

3 PC机与单片机的硬件接口电路 图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B 的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上,因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线与四线平衡传输方式,二线制可实现真正的多点双向通信,但需要在传输线上接电阻(约120 Ω)。 由于80C51系列单片机STC89C52串行接口的,TTL电气特性与RS-485电气特性不相符,STC89C52不能与RS-485直接连接,需要电气转换。这里采用Maxim公司的MAX485,图2为其接口电路。

组态王与Oracle数据库的连接问题

组态王与Oracle数据库的连接问题  声名:  在使用Oracle作为数据时应先考虑随数据库软件所携带ODBC版本问题(针对X86系统而言),在使用过程中发现早期的Oracle所提供的ODBC版本不能正常在Win2000下运行(8 AND 8i),可以到Oracle的官方网站下在最新的ODBC版本(WWW. https://www.doczj.com/doc/4318597350.html,)。如使用其它版本数据库也应考虑其ODBC的版本,以避免不必要的麻烦。  关于数据类型:  组态王的数据类型与Oracle数据类型的对应关系:(建议)  整型??Number  实型??Number  字符串??Char 离散型和时间类型转换为字符串型再进行处理。 建议使用组态王来创建数据库中的表,如果直接使用Oracle 的Schema管理工具来创建表的话建议不要设置数据类型的”Precision”和”Scale”属性  数据库表的建立:  Oracle数据库的结构简单的说可以表示为数据库?模式(Schema)?表(Table)?记录。  Oracle数据库中的模式与用户帐号是一一对应的。(如使用System用户登陆则只能对System模式中的数据库表进行操作,虽然在有些情况下可以浏览其它数据表但不可操作)。  Oracle数据库在成功安装之后创建了一些系统自定义的模式和数据表,(如System 等),建议在使用时确保系统可靠,通过自定义创建新的模式(Schema)共我们使用。  下简述模式的建立方法(更详细的信息请参考Oracle的相关资料,本说明是以Oracle 8为例):  1、 启动“Database Administration Tools”;  2、 使用“Schema”建立自定义的模式;

组态王6.53与51单片机

基于51单片机的智能仪表与组态王的通讯 1242人阅读| 0条评论发布于:2009-8-10 23:01:00 1、引言 随着工业自动化进程的不断加快,现场仪器、仪表、设备正不断向数字化、智能化和网络化方向推进。 单片机以其强大的现场数据处理能力,低廉的价格,紧凑的系统结构、高度的灵活性,微小的功耗等一系列优良特性成为构建智能化现场仪器仪表、设备的重要手段,现已广泛应用于工业测量和控制系统中。 组态王Kingview工控组态软件以其工作性能稳定可靠、人机界面友善、硬件配置方便以及编程简单易用同时其驱动程序较为丰富,如支持DDE、板卡、OPC服务器、PLC、智能仪表、智能模块等;支持ActiveX控件、配方管理、数据库访问、网络功能、冗余功能。其扩展性强,配有加密锁,支持工程加密;可方便与管理计算机或控制计算机联网通信等优良特性,提供了对工业控制现场大量数据进行采集、监控、处理的解决方案。在各种工业控制领域中得到了大量使用[1-2]。 将单片机和组态王优良的特性结合起来,使它们实现“强强联合”,成为改造传统工业,提升企业技术竞争力的重要趋势。 目前许多测控系统是由通用机或工控机和底层单片机控制装置组成,通用机或工控机通过组态软件控制现场仪器设备,单片机采集数据和现场状态通过串行口传送到通用机或工控机,由组态软件对采集到的现场数据进行分析、存储或显示,并将命令和控制通过串行口传到单片机以监控现场设备的运转。可靠地实现它们之间的通讯是实现各种测控任务必须解决的首要问题。对于一些重要名家厂商的板卡和模块,一般组态王可直接提供为数据采集和控制所需的底层硬件设备的驱动程序。但对于绝大多数一般用户自行设计开发的采集、控制装置则没有驱动程序提供。因此实现它们“强强联合”,必须解决它们之间之间的通信问题。迄今为止,人们对单片机与组态王的通信问题进行了广泛的研究[1-2]。 目前,单片机与组态王的通讯方法有主要有3种[3]:①利用组态的驱动程序开发包进行驱动开发自己的通讯驱动程序,该方法适用于专业厂商;②通过动态数据交换(DDE)方式进行通讯,该方法带来一些额外的开销,如会降低系统实时性,增加系统的不可靠性等,对开发人员的要求也更高。而自己开发通讯驱动程序,有一定的难度,且增加开发周期、成本。⑧利用组态王提供的与单片机的通用通讯协议,该方法

第九讲 组态王与数据库连接

第九讲组态王与数据库连接 在本课程您将: ↓了解组态王SQL访问管理器 ↓了解如何与外部数据库进行连接 ↓了解如何向数据库中写入数据 ↓了解如何查询数据库中的数据 第一节SQL访问管理器 概述 组态王SQL访问功能实现组态王和其他外部数据库(通过ODBC访问接口)之间的数据传输。它包括组态王的SQL访问管理器和相关的SQL函数。 SQL访问管理器用来建立数据库字段和组态王变量之间的联系,包括“表格模板”和“记录体”两部分。通过表格模板在数据库表中建立相应的表格;通过记录体建立数据库字段和组态王之间的联系。同时允许组态王通过记录体直接操作数据库中的数据。 创建数据源及数据库 首先建一个数据库,这里我们选用Access数据库(路径:d:\peixun,数据库名为:mydb.accdb)。 然后,用Windows控制面板——管理工具——数据源(ODBC)新建一个Microsoft Access Driver(*.mdb, *.accdb)驱动的数据源,名为:mine,然后配置该数据源,指向刚才建立的Access数据库(即mydb.accdb),如图9-1所示:

图9-1 ODBC数据源的建立 创建表格模板 1、在工程浏览器窗口左侧“工程目录显示区”中选择“SQL访问管理器”中的“表格模板”选项,在右侧“目录内容显示区”中双击“新建”图标弹出创建表格模板对话框,在对话框中建立三个字段,如图9-2所示: 图9-2 创建表格模板对话框 2、单击“确认”按钮完成表格模板的创建。 建立表格模板的目的是定义数据库格式,在后面用到SQLCreatTable()函数时以此格式在Access数据库中自动建立表格。

相关主题
文本预览
相关文档 最新文档