组态王常见问题的解决方法 下载本文

组态王常见问题的解决方法

组态王虽然国内用的很多,但他的问题也很多,有时候弄起来真的很麻烦,比如一个简单的开机自动运行都要自己设置,下面是我在网上查到的一些内容。

组态王使用常见问题

1、变量设定中最大(小)值及最大(小)原始值的意义?

[最大(小)值是变量在现实中表达的工程值(如:温度、压力等)的大小,而最大(小)原始值是采集设备中[寄存器]数字量的最大(小)值(如板卡中的819-4095等)。一般对于板卡设备此值为物理量经AD转换之后的值,如12BitAD此值范围0~4096、16BitAD为0~65535,对于PLC、智能仪表、变频器,其本身已将物理值转换为工程值所以此时最大(小)值与最大(小)原始值在设置时是一致的.

2、为什么变量无法删除,如何删除变量?

[在组态王中,只有未使用的变量才能被删除,因此在删除变量之前,必须去掉在画面或命令语言、控件引用处,等处与之有关的连接,如果还是无法删除,在工程浏览器中执行工具-更新变量计数命令,重新统计变量,在变量使用报告中可以查询变量是否还在某些地方使用,将其连接断开后,利用工具-删除未用变量将变量删除。 3、工程运行时,显示通讯协议组件失败?

[设备驱动安装错误:1、安装新的驱动2、在开发状态下从新连接设备,如果还是有错误,请联系驱动部索要新的驱动程序] 4、光盘上的典型案例无法打开?

[将工程拷贝到硬盘上将属性改为存档即可 5、如何在打开机器时自动进入组态王?

[将touchview快捷方式拷贝到系统开始\\程序\\启动中 6、怎样把工程文件变小?

[可以删除*.AL2(报警信息文件),*.REC(历史记录文件),*.111文件(*.pic文件的备份文件)的文件。

7、如何在线增删用户及用户密码和权限? [使用editusers()函数(用户权限需大于900)]

8、在定义变量的基本属性时状态栏中的保存数值、保存参数是什么意思? [保存参数:在系统运行时,修改变量的域的值(可读可写型), 系统自动保存这些参数值,系统退出后,其参数值不会发生变化。当系统再启动时,变量的域的参数值为上次系统运行时最后一次的设置值。无需用户再去重新定义 。

保存数值:系统运行时,当变量的值发生变化后,系统自动保存该值。当系统退出后再次运行时,变量的初始值为上次系统运行过程中变量值最后一次变化的值。 9、开发狗与运行狗的区别?

[开发狗是用于工程开发使用的,为了方便调试支持6小时的连续运行,运行狗是用于工程实际运行,不能进行开发.

21:如何不进入系统桌面环境而直接运行组态王工程如何实现(Win2000系统)?

运行RegEdit文件:找到 我的\\HKEY_Local_MACHINE\\software\\Microsoft\\Windows NT\\currentVersion\\winlogon 将Userinit=c:\\winnt\\system32\%userinit.exe改为: Userinit= c:\\program files\\kingview\\touchvew.exe

22:如何在组态王中修改系统时间? 调用批处理文件:dsh.bat

string Adate = StrFromInt( A年, 10 ) + \月, 10 ) + \日, 10 ); string Atime = StrFromInt( A时, 10 ) + \分, 10 ) + \秒, 10 ); string Acommand =InfoAppDir()+\ Acommand = Acommand + \ Acommand = Acommand + Adate; Acommand = Acommand + \ Acommand = Acommand + Atime; StartApp(Acommand); 批处理文件:dsh.bat date %1 time %2

22:工程被破坏后如何恢复画面?

1、新建一工程,在工程浏览器中选择导入,将被破坏工程的画面导入即可

2、新建一工程,该工程下新建与原来工程*.pic文件名一样的空画面,保存画面.将被破坏工程的*.pic文件拷贝到新建工程的目录下将新建工程的*.pic文件覆盖,从新打开新建工程,将画面逐个打开可以看到工程画面。

23:如何打印信息到针式打印机?

用函数filewritestr()函数实现,filename参数为“LPT1:”

24:组态王中的报表RTL为如何格式,如何打开?

报表RTL是组态王自己的报表格式,只能通过组态王用载入报表函数(ReportLoad函数)打开。

25:为什么在命令语言中使用报表函数却不执行?

在应用程序命令语言中使用各种报表函数(如:reportsetcellvalue()等)。当画面隐含时,函数无法正常执行,如:变量值无法正确写入对应的单元格中。用户要注意这种情况,这不属于软件错误,运行过程中当画面隐含时不能对报表进行操作。

26:组态王中的打印函数PrintWindow()如何使用纸张的横向打印功能?

PrintWindow()函数的第二、三个参数不能够为0并且将打印机的纸张设置为横向即可;如:PrintWindow( \监控中心\

27:在历史趋势曲线中看不到曲线?

1、数据词典设置的记录变化与安全区中没有选择数据记录

2、变量的量程过大,实际显示的数值占量程的百分比非常小,所以感觉没有曲线显示 3、系统时间被修改,历史数据存储有误,所以曲线无法显示

28:如何根据起始日期时间、终止日期时间查询历史趋势曲线? 使用通用控件中的历史趋势曲线:

\\\\本站点\\PHTTime=AHTTime(\\\\本站点\\HTDate,\\\\本站点\\HTTime); \\\\本站点\\PHTTime1=AHTTime(\\\\本站点\\HTDate1,\\\\本站点\\HTTime1); \\\\本站点\\PHTTime2=\\\\本站点\\PHTTime1-\\\\本站点\\PHTTime;

批次历史曲线.SetTimeParam(\\\\本站点\\PHTTime,0,\\\\本站点\\PHTTime2,0);

29:如何利用通用控件中的历史趋势曲线作为实时曲线使用?

在画面属性命令语言存在时调用历史趋势曲线控件HT的方法如下: HT.HTUpdateToCurrentTime()

30:与SQL SERVER进行数据交换,实数类型存入数据库后为什么在组态王中无法读取? 原因是因为客户在数据库中定义的字段的类型不对。在组态王中定义的内存实型变量,在ACCESS数据库中对应的字段的类型应该是单精度型,在SQL SERVER数据库中对应的字段的类型应该是real型.(不能为float型).

31:为什么从EXCEL返回组态王会出错?

在EXCEL中用 AppActivate \函数时,如果EXCEL中为AppActivate \组态王运行系统\,组态王的设置运行系统中,标题条文本里填写:组态王运行系统,同时,不要选\标题条中显示工程路径\如果选择了,在AppActivate 应写\组态王运行系统-c:\\…..\否则就会出错

32:组态王的存盘数据用何方式打开?为什么组态王的历史记录文件打开都是乱码? *.REC文件存放的历史数据,不能用excel直接打开,它本身是二进制文件.可以在VBA中调用提供的动态连接库来访问。

33:SQLDelete()函数中选择条件的用法。A3=\客户=\做为条件不执行? sql查询语句如果查询的字段为字符串时应使用单引号,a3=\客户’\即可

34:数据库插入记录失败?

1、在信息窗中查看数据库是否连接

2、数据库表格的字段名与组态王记录体定义的字段名是否相同3、数据库表格的字段类型与组态王变量的类型是否符合,推荐使用组态王的表格模板创建表格4、表格中使用的字段名是否为data和time,请改为其他字段名。 35:如何将数据存为.txt文件? 使用函数FileWriteStr(Filename,FileOffset,Message,LineFeed); 例:将名为MsgTag的文字变量写入文件C:DATA\\FILE.TXT的末尾。调用函数FileWriteStr (\

36:数据库字段为\反应罐1#温度时\组态王无法通过ODBC往数据库中写数据? ODBC不支持存在’#’字符的字段,不要使用#

37:如何在数据库中始终保持一个月的数据,自动删除一个月之前的记录? 请将控制面板中的区域设置日期改为yyyy-mm-dd格式 数据库中保存一个月的历史数据,自动删除一个月以前的数据。命令语言放在应用程序命令语言启动时或者事件命令语言$时==1中:

SQLConnect( DeviceID, \历史;uid=er;pwd=0\

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 + \

string whereexpr=\日期={d’\

SQLDelete( DeviceID, \

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

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

day=31;

date1= StrFromInt( year, 10 );

date1=date1+\

date1 = date1 + StrFromInt( month, 10 );

date1 = date1 + \

whereexpr=\日期={d’\

SQLDelete( DeviceID, \ } }

38:使用进行网络配置的远程站点后,远程站点的数据词典中没有变量显示? 1、网络是否联通

2、主机的工程应该是完全共享,不能是只读共享,从机是否可以看到工程文件夹,是否可进行读写操作

39:s7-200通过PPI与KingView6.1连,5到6小时断线不能恢复,组态王信息窗口显示尝试与S7-200恢复通讯失败。请问如何处理?

1)西门子S7200使用西门子公司提供的PC/PPI带缆选用PPI方式与组态王通讯当中,一旦PLC断电,则必须先用PLC的编程软件与PLC 通讯一次,实现对PC/PPI电缆上的模块的初始化后,此时才能重新启动组态王,建立正常的通讯。

2)若用户希望在设备断电后再上电时,组态王能自动恢复与设备的通讯,则不用西门子公司提的PC/PPI电缆,而使用RS232/485的转换模块,其中:485的DATA+接PLC的PORT口的3,DATA-接PLC的PORT的8(自己做线),采用这种方式。

40:组态王6.5安装后为何拨号网络无法建立“传入的连接”?

运行注册表文件(RegEdit):在注册表中: \\\\HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Ras\\\\AdminDll 删掉

然后手动在控制面板—管理工具—服务中的“Routing and Remote Access”服务启动 组态王的n个经典问题解答之三

41:for Internet版本如何通过IE浏览方式对数据库进行查询?

对于for Internet版本组态王[6.01版],画面发布不支持SQL函数。所以不能通过画面调用SQL函数对数据库进行查询。但是可以通过一种中介的方式。画面上定义按钮,定义按下或弹起时一离散量变化,如离散量: a,按钮弹起时a=1。在事件命令语言中定义当a=1时,数据库进行连接,命令语言如下: if(a==1)SQLConnect(DeviceID,\数据查询;uid=;pwd=\如此类推通过离散量发生变化从而触发事件命令语言从而对数据库进行查询。这样发布的画面可以实现通过IE浏览。。

42:访问组态王发布的页面时为什么总出现“连接主机失败”? 1、网络速度太慢。

2、开发中“网络配置”没有配置为“连网”。

3、演示版支持10分钟的WEB发布,同时只能够有1个用户通过IE浏览

43、访问组态王发布的页面时为什么会提示“连接远程文件格式”错误?

1、[6。01及以前版本]画面中是否使用了控件、过渡色、其他不支持的图素。 2、是否将文件发布到了根目录下,发布文件不能放在根目录下

44、如何访问组态王发布的页面?

1、安装PWS或IIS软件并进行配置、即可以在IE 地址栏中输入\\\\***.***.***.***(***表示WEB服务器的IP地址)或主机名;

2、如不安装PWS或IIS软件,只需要在IE 地址栏中输入\\\\***.***.***.***(***表示WEB服务器的IP地址),即能访问到服务器端共享的所有文件[需要在配置网络协议时安装文件打印和和共享服务]。

45、为什么发布的画面总是一片灰暗没有图形?

确认发布路径下netkingview.cab文件存在,并且大小正确,若没有该文件或文件损坏,从kingview路径下拷贝netkingview.cab文件至发布路径下,[IE是否安装JAVA的支持文件,从IE安装盘上得到』

46、web发布后,在客户端用IE打开html文件时什么都没有,IE状态栏提示“完成” ,或者提示javaclass not found?

1、可能发布后的netkingview.cab文件大小为0K,用户需要将kingview路径下的netkingview.cab文件 复制一个到发布的路径下。

2、可能是用户的java虚拟机存在问题。用户可以将发布路径下的netkingview.cab文件解压缩,同时将其下的javaclass文件夹放到其上一级目录。如果这样操作会出现“连接主机失败”,则将javaclass文件夹同时复制到客户端机器的桌面上

47、画面发布后为什么页面数据没有变化?

由于不带WEB功能的加密锁不支持WEB。如果小于64点演示,请不要安装加密锁,否则若安装不带WEB功能的加密锁,远程客户端的数据将不变化。

48:为什么配方调不出来?

1、在配方定义中,表格中的变量数目应该与实际变量数目相同,如果为空的话就无法调用配方

2、检查配方调用函数设置的路径是否正确

49、如何在开发系统下设置KVDBGrid控件的列宽?

在开发系统下,同时按下 Ctrl+Alt+O,就可以调整控件的列宽了

50:如果jiami琐不能正常使用怎么办? 1、确保正确安装了jiami锁的驱动程序,(6。01以前的版本不支持XP)。 2、确保计算机并口模式为ECP(在BIOS中设置)。

3、如果还不能解决问题,请上外部网站\软件下载\中下载jiami锁检测程序。 4、锁坏了(禁止带电拔插狗)

51、使用组态王狗,一旦使用打印机则找不到狗? 1、将并口设为ECP方式(在BIOS中设置) 2、并安装驱动程序

3、并口的驱动能力可能有问题,建议增加一并口扩展卡,连接打印机。

52、开发的工程如何能不让别人看到?

1、对于大于64点的工程,如果没有装上开发狗的话则不能打开工程

2、在工程浏览器的工具菜单中选择工程jiami可以避免别人打开工程,但一定要记住密码,因为一旦密码丢失,没有后台可以jiemi。 53:使用三菱fx2n的PLC,使用232bd的通讯模块与组态王通讯,在组态王上选择设备fx2->编程口,当plc 设置成stop状态时,plc与组态王通讯正常,一旦把plc设置为run状态,plc与组态王出现通讯失败是为什么?

是否在plc中有一段自己编的有关232bd通讯方面的程序,这段程序与组态王的驱动程序有冲突,把这段程序去掉后,plc不论是stop还是run 状态,和组态王通讯均正常

54:金星K200S使用通讯模块K3F-CU2A与组态王通讯不上如何检查? 1).通讯模块的运行方式通过模块上的开关类型选为专用通讯方式。

2).在组态王开发环境中定义设备时选择 PLC->金星-〉MASTER-K-XXXS。

3).通讯模块的RS232口到上位机的RS232口之间的连线和标准的有区别,建议用厂家配套电缆。

55:莫迪康PLC通过以太网方式进行通讯,定义设备时,地址一项该如何填写?

定义设备地址时,格式如下:IP地址 单元号,例如:123.123.123.1 0 (IP地址和单元号之间有空格)。

56: HOSLINK方式,组态王不能控制I/O模块的输出。例如组态王中定义IR0100寄存器,执行写操作之后PLC并不动作是为什么? 对于组态王老版本的驱动程序,上例中只能定义成IR100,而不能定义成IR0100。解决方法:更新驱动程序。两种方式都支持。

57.使用6台欧姆龙PLC与上位机进行通讯,如果关掉其中的几台PLC,组态王的通讯速度变慢-数据刷新速度变慢是什么原因?

如果关闭一些PLC,组态王会始终尝试与其恢复通讯,使通讯速度减慢。您可以使用组态王提供的COMMERR寄存器,在关掉PLC之前将相应的COMMERR寄存器置1,屏蔽PLC与组态王之间的通讯。然后再调闭PLC。

58:三菱PLC的A和Q系列以太网通讯方式,PLC程序中需要为通讯做些什么工作? 三菱PLC的A和Q系列,以太网通讯模块中都有8个通讯缓冲区。PLC与上位机通讯时,每个缓冲区通过一个端口与一台上位机连接。因此,PLC首先要定义一个唯一的IP地址;需要与几台上位机连接,在程序中就要打开几个缓冲区,分别定义不同的端口;还要循环查询这些端口,是否有上位机连接进来,以便随时可以通讯。端口可以定义得比上位机数量多,对通讯没有影响。强烈要求网内所有PLC定义的端口不要重复,以避免驱动共享变量可能带来的通讯混乱。

59: S7200使用PPI电缆方式与组态王进行通讯,CPU中可以定义Q,I,M寄存器,而组态王中只有V寄存器。如何连接?

组态王只支持V寄存器,数据类型包括BYTE,INT,UINT,LONG,FLOAT,如果您要监控Q,I,M寄存器,您必须在PLC程序中做一下处理,将Q,I,M寄存器的值传至V 寄存器,组态王通过对V寄存器的操作来实现对Q,I,M寄存器的监控。

60:组态王如何与三菱FX0n系列的PLC进行通讯

三菱FX0n系列的plc本身只有编程口,如使用组态王与其进行通讯还需给三菱FX0n配置通讯模块或通讯卡,配置好通讯模块后与三菱fx2n系列的通讯协议是兼容的,请根据您所选用的通讯模块在组态王上选用相应的选项。 1.对于232BD:定义设备时,选FX2N。

2.对于485BD,232ADP, 485ADP:定义设备时,选FX2N-485方式 用编程将D8120设置为E080,即通讯参数如下: link, 7, 无校验, 1, 9600,

RS485, 数目检查:YES, 控制程序:Format4. 在D8121中设置地址

组态王的n个经典问题解答之四 61:西门子S7200使用西门子公司提供的PC/PPI电缆选用PPI方式与组态王通讯,一旦PLC断电通讯不能恢复,重新启动组态王通讯失败,必须用西门子的编程软件和PLC通讯一次后,组态王才能与PLC通讯是为什么? 1).不用西门子公司提供的PC/PPI带缆,使用RS232/485的转换模块,485的DATA+接PLC的PORT口的3,DATA-接PLC的PORT的8,采用这种方式连接PLC断电后组态王能恢复与PLC的通讯。 2).PLC断电后先用PLC的编程软件与PLC通讯一次,初始化PC/PPI电缆上的模块,再使用组态王与PLC通讯

62:用户使用组态王通过远程modem拨号与西门子的s7200系列的plc进行通讯。使用ppi协议。modem拨通后,组态王与plc通讯失败,为什么?

组态王不支持与西门子的plc使用ppi协议通过远程modem拨号进行通讯,请使用西门子s7200系列的自由口协议(kingview6.0版本),可实现组态王通过远程modem拨号与西门子的s7200系列的plc进行通讯

63:西门子S73OOMPI方式通讯,PLC内寄存器名称与组态王支持的寄存器名称不符如何组态?

组态王支持的寄存器名称是英文方式,寄存器英德文对照表如下: 德文 英文

A Q 输出寄存器 M M 位寄存器

DB DB 数据块寄存器 E I 输入寄存器 T T 定时器 Z C 记数器

64:组态王与西门子的S7300 MPI方式通讯不上,地址设置为2.0是什么原因?

地址设置错误,PLCMPI方式通讯,组态王中设备地址应设成2.2,其中小数点前为MPI地址(即站号),小数点后为MPI设备(即所使用的通讯模块或CPU模块)的槽号(slot number)。

65:西门子S7300 MPI方式通讯,CPU 313,使用模拟量模块E304,E305读不上来数据是什么原因?

E304,E305模拟量输入数据是12位的,而组态王只支持BYTE型,所以数据读不上来,

您可以在PLC程序中将模入数据送入DB块,再利用组态王读取DB块的内容。

66:如何使用Profibus-(DP,S7,FMS)协议实现组态王与PLC的通讯? ------实现Profibus-DP通讯需要以下软硬件配置: (1) , STEP7V5.0+SP2及以上版本

(2) ,需要购买西门子提供的Softnet-DP , COMPROFIBUS3.3及以上版本 ,.用于实现对主站组态,地址定义,从站类型定义,以及I/O配置,从站参数赋值信息等. 组态完后生成的*.ldb文件将添加到CP中以起动并初始化从站.

(3),通讯卡 (如CP5611,CP5613 等) ,在Profibus -DP通讯网中做为主站 ------实现Profibus-S7通讯需要软硬件支持 (1) STEP7V5.0+SP2及以上版本

(2) 需要购买西门子提供的Softnet-S7软件 . (3) 通讯卡 (如CP5611,CP5613 等)

67:如何实现三菱A系列的PLC与组态王进行通讯? 需要选用通讯模块。

1、 计算机通讯组件A1SJ71C24-R2 应按照如下设置:

将MODE拨盘指向4的位置,本协议只支持通信协议的模式4 2、计算机通讯组件A1SJ71C24-R4 应按照如下设置: 1 2 3 4 5 6 7 8 9 10 11 12

off on off on on off on on on on off on mode 选择 位置 8

组态王中设置: RS_485 , 9600 , 8 , 1, 偶校验 3、以太网组件:

A1SJ71E71B2 A1SJ71E71B5

在组态王中定义设备三菱-〉中型PLC以太网-〉TCPIP

68:Q系列以太网通讯如何配置?

如果使用Q系列以太网方式,在组态王中定义设备三菱-〉Q系列以太网-〉TCPIP 设备地址格式:aaa.bbb.ccc.ddd:ppppp:t aaa.bbb.ccc.ddd为PLC的IP地址, ppppp为PLC中定义的端口号,t是连接超时(单位秒),都是十进制数。

69:如何与 MODBUS PLUS协议的设备进行通讯?

此协议需要在你的计算机中安装Modicon SA85接口卡(一台计算机最多4块)。使用厂家提供的电缆,通过卡上的接口与PLC的Modbus Plus接口相连。 在使用SA85卡之前,必须安装SA85卡的驱动程序。否则组态王不能进行设备定义。 1).组态王定义设备时请选择MODBUS PLUS下的SA85卡 2). 设备地址

必须在1~64的范围内给网络上的每个节点分配一个唯一的地址,一般来说,地址是通过控制器上的一个特殊的DIP开关来设定(或通过主机上的Modbus Plus通讯适配器卡来设定), 3)组态王调用的驱动程序:

ModPlus.dll,需要调用默迪康的两个库文件Netbios.dll,Netlib.dll,注,98和2000系统下的库文件Netlib.dll是不同的。

70:在XP下安装组态王问题,原来在XP下安装组态王,现已经全部卸载,想安装组态王6.5,但安装程序在安装后显示“安装程序发现机器上已安装有组态王软件,单击“确定”退出后先卸载组态王其他版本,然后再安装组态王6.5!”,将注册表中的所有KIngview和亚控的关键字删除,也无法安装。请问如何解决? 用RegEDIT打开注册表,查找如下位置:

HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths

如果安装完组态王的各种版本会在注册表的上述位置中生成一个名为“组态王*”的键值(*:为版本号,如:5.1、6.0、.6.01、6.02、6.03、6.5),正常卸载组态王后,该键值能正确删除。如果是非正常卸载(卸载失败,文件丢失等)该键值不能删除掉,再次安装组态王6.5时则不能安装。手动删除此路径下的组态王键值则可安装。

组态王的监控系统设计及数据报表的生成

组态王数据处理方面真的很不好用,下面的方法可以对组态王采集的数据进行二次处理

在某污水处理系统监控系统设计中,笔者采用组态王6.5、单片机ACCESS和EXCEL的结合设计了整个监控系统。上位机采用研华的工控PC机,系统监控采用组态王软件;底层数据采集和控制由PLC,单片机、智能仪表完成。由于组态王在数据库功能上比较薄弱,在设计中采用SQL技术将数据保存到MSACCESS2000中,并且通过VBA(Visual Basic For Application)编程实现EXCEL对ACCESS库的查询。

一、系统概述

系统中存在多种不同类型的监控变量,其中有一部分需要控制的变量(如压力等),这可以利用PLC实现控制:有一部分变量只需要采集(如温度、电流等)这些量可以通过用组态王支持的智能仪表进行采集;还有一部分只需要采集的数据由于所用的采集仪表不能和组态王直接通讯,所以采用单片机AT89C52编写程序实现现场数据采集,并采用通用单片机ASCII通信协议实现单片机和组态王的数据共享。

整个系统结构上采用多级分布式结构,分为2个数据采集站和1个监控总站;按照功能划分本系统则分为设各现场控制、现场数据采集、远程设各监控三部分。

底层由PLC,单片机、智能仪表组成,其中,PLC主要完成现场控制设备的控制。单片机和智能仪表完成对现场数据的采集数据采集站作用是与底层的PLC,单片机和智能仪表通讯,获取生产过程的数据,

显示工艺流程,历史曲线图,实时曲线图、报警画面、生成数据库等。监控总站与数据采集站通过以太网连接,以获取生产工艺参数报警记录等数据信息监控总站可以根据操作人员的选择切换监视各个数据采集系统的运行情况。监控总站计算机还完成网络服务器的功能,将这些生产参数上网传输,实现网络化远程监控。

二、软件设计

整个监控软件以组态王6.5作为编辑平台。整个监控系统具有如下主要功能:

1)总体监控:显示采集数据的实时值组态王通过和底层PLC,智能仪表和单片机通讯,访问相关设备寄存器来获得各设备的运行情况,并通过动画连接、实时曲线等显示出来

2)历史曲线:显示系统运行的时候各个主要变量的历史记录,可以查询以前的历史记录时段,任意时间的纪录。

3)控制功能:在上位机端可对底层PLC,智能仪表进行控制实现远程控制。

4)数据存储:每隔一定时间将数据保存到ACCESS中,方便以后的查询,所保存的数据还可以通过EXCEL进行查询,进行二次处理。

5)报警功能:当有事故或故障发生时,微机通过外接音箱发出语音报警,并在微机屏幕上给出提示;报警画面上可以设置报警的上限、上上限、下限和下下限当超过了设置的范围时就会有报警,保证了系统的安全运行。

6)打印功能:打印各种报表、历史曲线、运行记录、报警数据等

PLC和组态王所支持的智能仅表与组态王之间的通讯不需要编写程序读取设各的内部寄存器的值,相关的驱动程序已经集成在组态王中,只需要在组态王中定义对应的设备,并定义相应的I/O变量即可读取设备内部寄存器的值。而组态王所不支持的仪表则由单片机进行数据采集、转换,并且由单片机通过通用单片机ASCII通信协议和组态王数据共享。当组态王要读取单片机的数据时,将会向单片机发送基于该协议的读命令包,单片机响应后,将数据发送给组态王,其数据发送格式也是基于通用单片机ASCII通信协议的。

三、数据处理

1.数据存储

组态王虽然可定义数据文件在硬盘中的保存日期(超过该日期自动从硬盘中删除)但如果要保存的时间较长,保存的数据量将非常庞大,不仅造成硬盘的浪费,而且由于组态王的数据文件结构形式复杂,年终时报表处理也需要花费大量的处理时间。因此,在本系统中使用SQL技术,将数据隔一定的时间(如1小时)保存到ACCESS2000中。

具体实现步骤如下:首先,建立一个ACCESS数据库,在此命名为“变量数据”,并且建立相应的数据表“温度数据”,然后在控制面板中的ODBC数据源中添加一个基于驱动程序ACCESSDriver的数据源在本系统中取名为“工作站”,,并将该数据源连接到刚刚建立的ACCESS数据库“变量数据”。在组态王中用语句SQLConnect(DevicelD,“dsn=工作站;uid=;pwd=”)实现和数据库的连接。接着在组态王中建立对应的记录体,记录体名应和数据表名相同;记录体中的字段名称也需和数据表中的字段名称相同。建好记录体后,可以在组态王命令语言中的“运行时”,使用SQLlnsert(DevicelD,“温度数据”,“温度数据勺语句将组态王的数据保存到ACCESS数据库中,当系统退出运行时语句SOLDISCONNECT(DeviceID)断开和数据库的连接。

2.数据检索

考虑到组态王提供的报表格式有限,不能满足工程的需要,而使用EXCEL可以方便地进行表格式数据综合管理和分析等二次处理的功能,系统添加了EXCEL对ACCESS数据库进行查询的功能。EXCEL提供了“宏”,的概念来进行功能扩展宏是存储在Visua-Basic模块中的一系列命令和函数,当需要执行该项任务时可随时运行宏。其开发环境称之为VBA(Visual Basic For Application),VBA提供了一套基于VB的面向对象的系统开发工具很多语法继承于VB语言,可以像编写VB程序那样来编写VBA程序,实现特定的功能。支持VBA二次开发的应用程序都内建许多对象,这些对象都具有方法和属性。VBA通过改变这些对象的属性,调用相应的方法访问这些对象,实现编程目的。Excel中的VBA,主要在VB中增加了关于Excel工作簿、工作表、区域、数据透视表等对象的属性、事件和方法。

要使用VBA进行数据库查询必须先添加\加载宏,该宏中封装了对数据库访问、搜索、查询的功能,该宏在Office安装盘中可以找到,添加方式为“EXCEL-工具-宏-Visual Basic编辑器-工具-引用”

在使用VBA编程时,首先要注意在EXCEL中工作簿定义为\工作表为\区域为\range\元为“cell”在编程时对单元格进行操作必须指明单元格所在的工作表以及所在的区域。以下语句示例将Sheetl上A1单元格的值设置为3.1,Worksheets(\)Range(\)Value=3.1

下面介绍几个重要的数据库检索函数

chan=SQLOpen(\)建立与数据源的连接,其中server为数据源名。

SQLExecQuery(Connection.Text)函数在该数据源上执行查询。

Connection指定要查询的数据源的唯一连接标识Text要在数据源上执行的查询内容。

Setoutput=Worksheets(\电流\)Range(\)将查询结果显示在表“电流”的A1单元格中。

SQLRetrievechan,output,,,True,False.False检索先前执行的查询的结果的全部或一部分。SQLClosechan断开数据库连接。

通过在VBA中编程,实现了在EXCEL中对ACCESS数据库的查询,查询的结果可以利用EXCEL强大的数据处理、统计分析功能进行数据的二次处理。

四、结束语

系统采用SQL技术将数据定时保存到ACCESS数据库中,解决了历史数据库占用磁盘空间大的问题而且保存的数据可以使用EXCEL进行查询,生成EXCEL形式的报表,解决了组态王提供的报表格式不能满足实际标准或实际工程的需要的问题