在变量管理里面,变量的采集模式默认是不显示的。右键变量列表框第一栏的列表名可以勾选显示。如下图:
在西门子不同的触摸屏编辑软件中,对应的采集三种模式的名称是不一样的。请区别对应:
Wincc Flexible2008版:
根据命令
循环连续
循环使用(默认)
TIA Wincc Advanced版本:
必要时
循环连续
循环操作(默认)
1.根据命令
该方式不会循环更新变量。只在通过调用系统函数“UpdateTag”或在画面打开时对变量值进行更新。(划删除线的部分是官方文档里面的原话,但是实际上VBS脚本中是无法显式调用UpdateTag函数的,需要借助数组或内部变量间接触发内部的UpdateTag函数)
根据命令的采集模式只是在画面加载的时候进行刷新一次,后面就不会再与PLC通讯了。用C#等面向对象的语言来解释的话就是在构造函数中读取了变量一次。想再次刷新变量,只能重新打开界面(重新实例化界面)。
注意:
VBS脚本中并没有UpdateTag这个函数。是无法在VBS脚本中手动调用函数来更新变量的。
2、循环使用
该方式是在打开的窗口中使用变量时,变量值被更新。如果打开的画面中,没有对变量的引用,则触摸屏不会与PLC中的相关变量交互。
这是西门子触摸屏默认的更新方式,也是最需要讲究算法优化的一种交互方式。
如:
1.如何统计一个界面上的所有使用到的变量,并将他们与PLC交互?
2.上位机与PLC一次通讯的长度是固定的PDU Size,如何优化每次交互变量的组合尽可能的使每次的通讯效率最大化?等
例:
创建一些测试变量
通过抓包工具看,只从PLC中读取了圆形背景色引用的变量M0.0
3、循环连续
顾名思义,就是界面中无论是否引用这个变量,都会在后台与PLC通讯进行刷新变量。
这种通讯方式在变量比较多的情况下会导致通讯时间过长,影响通讯质量。我们一般会认为触摸屏与PLC之间的交互是这种方式,其实不然。
报警变量就是通过循环连续的方式来交互的。西门子为了提高通讯的质量,减少通讯的次数将离散型报警变量的数据类型必须是int或word类型或它们的数组形式。推荐将所有的报警变量集中到一个int或word类型的数组中,提高上位机的通讯效率。