电气自动化技术网

组态软件中如何做到服务器端与客户端(人工录入)的数据同步

时间:2013-02-22 来源:网络转载 编辑:李亮 点击:次 字体设置:
在一些大型的生产管理系统中,往往都会应用到人工录入历史数据功能,从而对生产数据进行系统的管理,这部分的数据不能够在仪表中采集到,只能通过人为的填写,这部分数据不但要存储到客户端,还要上传到服务器端进行显示,这样就会引发一个关键问题:如何做到服务器端与客户端的数据同步?下面提供三种解决方案。
 
 第一种:服务器端直接调取客户端数据。
这种方案制作过程比较简单,只需要在服务器端针对于相应的客户端建立一个数据源,选择远程节点,并将IP指向客户端即可。如下图所示。
 其中:主机名/地址为客户端的IP地址。当这一切配置好之后,只需在自由报表中调用GetHisDataEx()函数,在运行的情况下就可以调取到客户端的历史数据。GetHisDataEx()函数的声明如下:
GetHisDataEx(string DataSource,string VarName,int StartTime,int MilliSecond)。
其中:DataSource要填写相应客户端的数据源名称,VarName要填写该数据源下的数据库变量名称。这样当系统运行时,在服务器端就可以调取到客户端的数据了。但这中方案存在一个弊端,即当客户端停止运行或着客户端与服务器端通讯终端时,那么在服务器端则看不到客户端的任何数据。
第二种:客户端直接向服务器端插入历史数据。
这种方案与第一种方案基本类似,需要在客户端建立一个数据源,并指向服务器端,客户端在保存历史数据时调用InsertHisDataEx()函数,该函数的声明如下:
InsertHisDataEx(string DataSource,string VarName,real Data,int StartTime,int MilliSec)。
其中,DataSource要填写相应服务器端的数据源名称,VarName要填写该数据源下的数据库变量名称。这样在客户端与服务器端通讯正常的状态下,保存动作执行时,客户端就会直接向服务器端插入历史数据。服务器端在报表中调用GetHisDataEx()函数就可以调取到本地相应的数据。这种方案的弊端则是增大了客户端的负荷,会导致客户端运行速度变慢。优点则是在服务器端和客户端都存有数据,相当于做了一次数据备份。
第三种:客户端触发服务器端自行保存历史数据。
这种方案制作过程相对于前两种要复杂一些,首先要在服务器端建立一个数据源指向客户端,并在服务器端建立相应的点关联到客户端的点上。其次,在服务器端数据库全局脚本中编写一段存储这些点PV值的历史数据的脚本,通过一个标志位触发存储动作。客户端在保存历史数据时要把相应点的PV值也做修改,这样服务器上做了相应关联的点的PV值也会跟着做改变。在通过客户端触发服务器端的保存标志位,服务器端就会自行的将这部分数据存储下来,在运行的状态下通过报表调用GetHisDataEx()把历史数据调取出来即可。还可以在数据源高级选项中把数据故障恢复勾选上,如下图所示。即使因通讯中断,客户端无法触发服务器端的保存标志而导致两端数据不同步,在通讯恢复时,客户端也会自动的把这部分数据长传到服务器中,这样就更加全面的保证了两端数据的同步性。
 第三种方案完全的解决了第二种方案中增加了客户端负荷的弊端,也解决了第一种方案中通讯中断时服务器端看不到之前历史数据的弊端,同时还具备了前两种方案中不具备的优势:故障数据恢复,因此在类似这种的案例中,推荐使用第三种方案。
顶一下
(1)
100%
踩一下
(0)
0%
打 印】【顶 部】【关 闭】【挑 错
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
版权与免责声明:
①凡本网注明"来源:电气自动化技术网"的所有作品,版权均属于电气自动化技术网,转载请必须注明出处“电气自动化技术网http://www.dqjsw.com.cn”。违反者本网将追究相关法律责任。
②本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
③如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
栏目导航:互感器 | 智能电网 | 无功补偿 | 电容器 | 变压器 | 电源 | 避雷器 | 电抗器 | opc | 三菱PLC | 西门子PLC | 欧姆龙PLC | PLC视频教程 | 电工基础知识
© www.dqjsw.com.cn 2008-2013 版权所有 ICP网站备案:渝ICP备11003104号