回复:wincc vbs 变量触发执行写入数据库的问题,很纠结。

锋言锋语

西门子1847工业学习平台

  • 帖子

    3942
  • 精华

    54
  • 被关注

    130

论坛等级:至圣

注册时间:2011-07-31

钻石 钻石 如何晋级?

发布于 2017-09-14 17:31:21

4楼

展开查看
以下是引用匿名提问男在2017-09-12 22:47:46的发言 >楼主

从最简单开始说:

2个变量:TAG1,TAG2,

当TAG1从0到1变化时,执行一个写入数据库的语句,例:TAG1,1,时间

当TAG1从1到0变化时,执行一个写入数据库的语句,例:TAG1,0,时间

当TAG2从0到1变化时,执行一个语句,TAG2,1,时间

当TAG2从1到0变化时,执行一个语句,TAG2,0,时间

由于只有2个变量,全局脚本vbs写两个动作,第一个动作TAG1为触发变量,第二个动作TAG2为触发变量,每个动作都是写入当前值就可以了。

问题来了:

不可能这么简单,只有2个变量,是1000个!我难道要像上面那个方法写1000个动作吗?但是这是最简洁的,因为哪个变量变化,脚本就只会执行那个变量触发的动作,写入数据库。这是效率最高的,但写起来就要命了。

请问如何写这种1000个变量,其中哪个变化,比如TAG555从0变1,写TAG555,1,时间?

目前只找到这个可行的方案:

周期1s触发脚本,里面循环读取这1000个变量的值,再和上个周期的值做比较,如果哪个值与上个周期的值不同,则说明有变化,数据库里就写那个变量和值。。。这个方法很low很笨。每秒都必须读取1000个变量值,如果没变化,这个脚本等于在浪费整个项目的时间!!!本人表示强烈鄙视并且抵触这种方法。

你这问题也没啥, 别整天鄙视这个,抵触那个。告诉你思路
1.变量用raw类型读到c脚本数组;

2.导入变量名称, 和数组元素一一对应;

3.写脚本 , 固定周期, 循环判断。

4.写数据库要做优化, 用批量写入的方法;如果数据并发量大,可以加大周期, 或者先写到文件里, 开另一个脚本来转发;

考虑到vbs的效率, 如果效果还是不好, 可以考虑第三方开发。

不忘初心
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32572条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。