您好,欢迎来到易配在线!登录 注册 经销商|联系我们|综合搜索
山社电机SAMSR MOTOR西克SICK贝加莱B&R上银HIWIN杰克缝纫机亚控科技库伯勒KUBLER倍加福PEPPERL+FUCHS长城CNC

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

2015/4/1 9:48:41              

在一些大型的生产管理系统中,往往都会应用到人工录入历史数据功能,从而对生产数据进行系统的管理,这部分的数据不能够在仪表中采集到,只能通过人为的填写,这部分数据不但要存储到客户端,还要上传到服务器端进行显示,这样就会引发一个关键问题:如何做到服务器端与客户端的数据同步?下面提供三种解决方案。


第一种:服务器端直接调取客户端数据。

这种方案制作过程比较简单,只需要在服务器端针对于相应的客户端建立一个数据源,选择远程节点,并将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()把历史数据调取出来即可。还可以在数据源高级选项中把数据故障恢复勾选上,如下图所示。即使因通讯中断,客户端无法触发服务器端的保存标志而导致两端数据不同步,在通讯恢复时,客户端也会自动的把这部分数据长传到服务器中,这样就更加全面的保证了两端数据的同步性。

第三种方案完全的解决了第二种方案中增加了客户端负荷的弊端,也解决了第一种方案中通讯中断时服务器端看不到之前历史数据的弊端,同时还具备了前两种方案中不具备的优势:故障数据恢复,因此在类似这种的案例中,推荐使用第三种方案。

标签:组态软件
  • 喜欢 ( 0 )
  • 不喜欢 ( 0 )

网友评论

(查看全部0条评论)

您好 ,喜欢这篇文章吗?  

您还未登录,登录后才可发表评论,请立即登录注册

站点地图| 会员服务| 关于网站| 招聘信息| 法律声明| 联系我们| 友情链接

邮箱:1010196856@qq.com 客服热线:0571-88802870(工作时间:周一至周五8:30至17:30)
Copyright@2014-2016 www.epiol.com All Rights Reserved 版权所有:杭州锐联工业科技有限公司   浙ICP备13025252号-2   公安机关互联网站安全 浙公网安备33010502003191号

微信扫一扫


技术咨询